Documentation for a newer release is available. View Latest

Server Web

Suatu server web adalah sebuah layanan jaringan yang menyajikan konten ke suatu klien melalui web. Ini biasanya berarti halaman web, tapi sebarang dokumen lain juga dapat disajikan. Server web juga dikenal sebagai server HTTP, karena mereka memakai hypertext transport protocol (HTTP).

Server HTTP Apache

The web server available in Fedora is the Apache HTTP server daemon, httpd, an open source web server developed by the Apache Software Foundation. In Fedora 19 the Apache server was updated to Apache HTTP Server 2.4. This section describes the basic configuration of the httpd service, and covers some advanced topics such as adding server modules, setting up virtual hosts, or configuring the secure HTTP server.

There are important differences between the Apache HTTP Server 2.4 and version 2.2, and if you are upgrading from a release prior to Fedora 19, you will need to update the httpd service configuration accordingly. This section reviews some of the newly added features, outlines important changes, and guides you through the update of older configuration files.

Notable Changes

The Apache HTTP Server version 2.4 has the following changes compared to version 2.2:

httpd Service Control

With the migration away from SysV init scripts, server administrators should switch to using the apachectl and systemctl commands to control the service, in place of the service command. The following examples are specific to the httpd service.

The command:

service httpd graceful

is replaced by

apachectl graceful

The systemd unit file for httpd has different behavior from the init script as follows:

  • A graceful restart is used by default when the service is reloaded.

  • A graceful stop is used by default when the service is stopped.

The command:

service httpd configtest

is replaced by

apachectl configtest
Private /tmp

To enhance system security, the systemd unit file runs the httpd daemon using a private /tmp directory, separate to the system /tmp directory.

Configuration Layout

Configuration files which load modules are now placed in the /etc/httpd/conf.modules.d directory. Packages that provide additional loadable modules for httpd, such as php, will place a file in this directory. Any configuration files in the conf.modules.d directory are processed before the main body of httpd.conf. Configuration files in the /etc/httpd/conf.d directory are now processed after the main body of httpd.conf.

Some additional configuration files are provided by the httpd package itself:

  • /etc/httpd/conf.d/autoindex.conf — This configures mod_autoindex directory indexing.

  • /etc/httpd/conf.d/userdir.conf — This configures access to user directories, for example, http://example.com/~username/; such access is disabled by default for security reasons.

  • /etc/httpd/conf.d/welcome.conf — As in previous releases, this configures the welcome page displayed for http://localhost/ when no content is present.

    Default Configuration

    A minimal httpd.conf file is now provided by default. Many common configuration settings, such as Timeout or KeepAlive are no longer explicitly configured in the default configuration; hard-coded settings will be used instead, by default. The hard-coded default settings for all configuration directives are specified in the manual. See Installable Documentation for more information.

    Incompatible Syntax Changes

    If migrating an existing configuration from httpd 2.2 to httpd 2.4, a number of backwards-incompatible changes to the httpd configuration syntax were made which will require changes. See the following Apache document for more information on upgrading http://httpd.apache.org/docs/2.4/upgrading.html

    Processing Model

    In previous releases of Fedora, different multi-processing models (MPM) were made available as different httpd binaries: the forked model, "prefork", as /usr/sbin/httpd, and the thread-based model "worker" as /usr/sbin/httpd.worker.

In Fedora 26, only a single httpd binary is used, and three MPMs are available as loadable modules: worker, prefork (default), and event. Edit the configuration file /etc/httpd/conf.modules.d/00-mpm.conf as required, by adding and removing the comment character # so that only one of the three MPM modules is loaded.

Packaging Changes

The LDAP authentication and authorization modules are now provided in a separate sub-package, mod_ldap. The new module mod_session and associated helper modules are provided in a new sub-package, mod_session. The new modules mod_proxy_html and mod_xml2enc are provided in a new sub-package, mod_proxy_html.

Packaging Filesystem Layout

The /var/cache/mod_proxy/ directory is no longer provided; instead, the /var/cache/httpd/ directory is packaged with a proxy and ssl subdirectory.

Packaged content provided with httpd has been moved from /var/www/ to /usr/share/httpd/:

  • /usr/share/httpd/icons/ — The directory containing a set of icons used with directory indices, previously contained in /var/www/icons/, has moved to /usr/share/httpd/icons. Available at http://localhost/icons/ in the default configuration; the location and the availability of the icons is configurable in the /etc/httpd/conf.d/autoindex.conf file.

  • /usr/share/httpd/manual/ — The /var/www/manual/ has moved to /usr/share/httpd/manual/. This directory, contained in the httpd-manual package, contains the HTML version of the manual for httpd. Available at http://localhost/manual/ if the package is installed, the location and the availability of the manual is configurable in the /etc/httpd/conf.d/manual.conf file.

  • /usr/share/httpd/error/ — The /var/www/error/ has moved to /usr/share/httpd/error/. Custom multi-language HTTP error pages. Not configured by default, the example configuration file is provided at /usr/share/doc/httpd-VERSION/httpd-multilang-errordoc.conf.

    Authentication, Authorization and Access Control

    The configuration directives used to control authentication, authorization and access control have changed significantly. Existing configuration files using the Order, Deny and Allow directives should be adapted to use the new Require syntax. See the following Apache document for more information http://httpd.apache.org/docs/2.4/howto/auth.html

    suexec

    To improve system security, the suexec binary is no longer installed as if by the root user; instead, it has file system capability bits set which allow a more restrictive set of permissions. In conjunction with this change, the suexec binary no longer uses the /var/log/httpd/suexec.log logfile. Instead, log messages are sent to syslog; by default these will appear in the /var/log/secure log file.

    Module Interface

    Third-party binary modules built against httpd 2.2 are not compatible with httpd 2.4 due to changes to the httpd module interface. Such modules will need to be adjusted as necessary for the httpd 2.4 module interface, and then rebuilt. A detailed list of the API changes in version 2.4 is available here: http://httpd.apache.org/docs/2.4/developer/new_api_2_4.html.

The apxs binary used to build modules from source has moved from /usr/sbin/apxs to /usr/bin/apxs.

Removed modules

List of httpd modules removed in Fedora 26:

mod_auth_mysql, mod_auth_pgsql

httpd 2.4 provides SQL database authentication support internally in the mod_authn_dbd module.

mod_perl

mod_perl is not officially supported with httpd 2.4 by upstream.

mod_authz_ldap

httpd 2.4 provides LDAP support in sub-package mod_ldap using mod_authnz_ldap.

Updating the Configuration

To update the configuration files from the Apache HTTP Server version 2.2, take the following steps:

  1. Make sure all module names are correct, since they may have changed. Adjust the LoadModule directive for each module that has been renamed.

  2. Recompile all third party modules before attempting to load them. This typically means authentication and authorization modules.

  3. If you use the mod_userdir module, make sure the UserDir directive indicating a directory name (typically public_html) is provided.

  4. If you use the Apache HTTP Secure Server, edit the /etc/httpd/conf.d/ssl.conf to enable the Secure Sockets Layer (SSL) protocol.

Note that you can check the configuration for possible errors by using the following command:

~]# apachectl configtest
Syntax OK

For more information on upgrading the Apache HTTP Server configuration from version 2.2 to 2.4, see http://httpd.apache.org/docs/2.4/upgrading.html.

Menjalankan Layanan httpd

Bagian ini menjelaskan cara memulai, menghentikan, memulai ulang, dan memeriksa status Server HTTP Apache saat ini. Untuk dapat menggunakan layanan httpd, pastikan Anda telah memasang httpd. Anda dapat melakukannya dengan menggunakan perintah berikut:

~]# dnf install httpd

Untuk informasi lebih lanjut tentang konsep target dan cara mengelola layanan sistem di Fedora secara umum, lihat Services and Daemons.

Starting the Service To run the httpd service, type the following at a shell prompt as root:
~]# systemctl start httpd.service

Jika Anda ingin layanan dimulai secara otomatis pada saat boot, gunakan perintah berikut:

~]# systemctl enable httpd.service
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
Menggunakan server aman

Jika menjalankan Server HTTP Apache sebagai server aman, kata sandi mungkin diperlukan setelah mesin melakukan boot jika menggunakan kunci SSL pribadi terenkripsi.

Stopping the Service To stop the running httpd service, type the following at a shell prompt as root:
~]# systemctl stop httpd.service

Untuk mencegah layanan dimulai secara otomatis pada saat boot, ketik:

~]# systemctl disable httpd.service
rm '/etc/systemd/system/multi-user.target.wants/httpd.service'
Restarting the Service There are three different ways to restart a running httpd service:
  1. Untuk memulai ulang layanan sepenuhnya, masukkan perintah berikut sebagai root:

~]# systemctl restart httpd.service

Ini menghentikan layanan httpd yang sedang berjalan dan langsung memulainya lagi. Gunakan perintah ini setelah memasang atau menghapus modul yang dimuat secara dinamis seperti PHP.

  1. To only reload the configuration, as root, type:

~]# systemctl reload httpd.service

This causes the running httpd service to reload its configuration file. Any requests currently being processed will be interrupted, which may cause a client browser to display an error message or render a partial page.

  1. To reload the configuration without affecting active requests, enter the following command as root:

~]# apachectl graceful

This causes the running httpd service to reload its configuration file. Any requests currently being processed will continue to use the old configuration.

Verifying the Service Status To verify that the httpd service is running, type the following at a shell prompt:
~]# systemctl is-active httpd.service
active
Menyunting Berkas Konfigurasi

Ketika layanan httpd dimulai, secara baku, layanan ini membaca konfigurasi dari lokasi yang tercantum dalam Berkas konfigurasi layanan httpd.

Tabel 1. Berkas konfigurasi layanan httpd
Path Deskripsi

/etc/httpd/conf/httpd.conf

Berkas konfigurasi utama.

/etc/httpd/conf.d/

Direktori tambahan untuk berkas konfigurasi yang disertakan dalam berkas konfigurasi utama.

Meskipun konfigurasi baku mestinya cocok untuk sebagian besar situasi, adalah ide yang baik untuk menjadi setidaknya akrab dengan beberapa opsi konfigurasi yang lebih penting. Perhatikan bahwa agar setiap perubahan diterapkan, server web harus dimulai ulang terlebih dahulu. Lihat Memulai Ulang Layanan untuk informasi lebih lanjut tentang cara memulai ulang layanan httpd. Untuk memeriksa konfigurasi tentang kemungkinan kesalahan, ketik berikut ini pada prompt shell:

~]# apachectl configtest
Syntax OK

Untuk membuat pemulihan dari kesalahan lebih mudah, Anda disarankan untuk membuat salinan berkas asli sebelum mengeditnya.

Common httpd.conf Directives The following directives are commonly used in the /etc/httpd/conf/httpd.conf configuration file:
<Directory>

Direktif <Directory> memungkinkan Anda untuk menerapkan direktif tertentu ke direktori tertentu saja. Ini mengambil bentuk berikut:

<Directory directory>
  directive
  …
</Directory>

directory dapat berupa path lengkap ke direktori yang ada di sistem berkas lokal, atau ekspresi wildcard.

Direktif ini dapat digunakan untuk mengonfigurasi direktori cgi-bin tambahan untuk skrip sisi server yang terletak di luar direktori yang ditentukan oleh ScriptAlias. Dalam hal ini, direktif ExecCGI dan AddHandler harus disediakan, dan izin pada direktori target harus diatur dengan benar (yaitu, 0755).

Contoh 1. Menggunakan direktif <Directory>
<Directory /var/www/html>
  Options Indexes FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>
<IfDefine>

Direktif IfDefine memungkinkan Anda untuk menggunakan direktif tertentu hanya ketika parameter tertentu disediakan pada baris perintah. Ini mengambil bentuk berikut:

<IfDefine !parameter>
  directive
  …
</IfDefine>

parameter dapat disediakan pada prompt shell menggunakan opsi baris perintah -Dparameter (misalnya, httpd -DEnableHome). Jika tanda seru opsional (yaitu, !) ada, perintah terlampir hanya digunakan ketika parameter tidak ditentukan.

Contoh 2. Menggunakan direktif <IfDefine>
<IfDefine EnableHome>
  UserDir public_html
</IfDefine>
<IfModule>

Direktif <IfModule> memungkinkan Anda untuk menggunakan direktif tertentu hanya ketika modul tertentu dimuat. Ini mengambil bentuk berikut:

<IfModule !module>
  directive
  …
</IfModule>

module dapat diidentifikasi baik dengan namanya, atau dengan nama berkas. Jika tanda seru opsional (yaitu, !) ada, direktif terlampir hanya digunakan saat modul tidak dimuat.

Contoh 3. Menggunakan direktif <IfModule>
<IfModule mod_disk_cache.c>
  CacheEnable disk /
  CacheRoot /var/cache/mod_proxy
</IfModule>
<Location>

Direktif <Location> memungkinkan Anda menerapkan direktif tertentu hanya ke URL tertentu. Ini mengambil bentuk berikut:

<Location url>
  directive
  …
</Location>

url dapat berupa path relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /server-info), atau URL eksternal seperti http://example.com/server-info.

Contoh 4. Menggunakan direktif <Location>
<Location /server-info>
  SetHandler server-info
  Order deny,allow
  Deny from all
  Allow from .example.com
</Location>
<Proxy>

Direktif <Proxy> memungkinkan Anda untuk menerapkan direktif tertentu hanya ke server proksi. Ini mengambil bentuk berikut:

<Proxy pattern>
  directive
  …
</Proxy>

pattern dapat berupa URL eksternal, atau ekspresi wildcard (misalnya, http://example.com/*).

Contoh 5. Menggunakan direktif <Proxy>
<Proxy *>
  Order deny,allow
  Deny from all
  Allow from .example.com
</Proxy>
<VirtualHost>

Direktif <VirtualHost> memungkinkan Anda menerapkan direktif tertentu hanya untuk host virtual tertentu. Ini mengambil bentuk berikut:

<VirtualHost address:port…>
  directive
  …
</VirtualHost>

address dapat berupa alamat IP, nama domain yang sepenuhnya memenuhi syarat, atau bentuk khusus seperti yang dijelaskan dalam Opsi <VirtualHost> yang tersedia.

Tabel 2. Opsi <VirtualHost> yang tersedia
Opsi Deskripsi

*

Mewakili semua alamat IP.

default

Mewakili alamat IP yang tak cocok.

Contoh 6. Menggunakan direktif <VirtualHost>
<VirtualHost *:80>
  ServerAdmin webmaster@penguin.example.com
  DocumentRoot /www/docs/penguin.example.com
  ServerName penguin.example.com
  ErrorLog logs/penguin.example.com-error_log
  CustomLog logs/penguin.example.com-access_log common
</VirtualHost>
AccessFileName

Direktif AccessFileName memungkinkan Anda menentukan berkas yang akan digunakan untuk menyesuaikan informasi kontrol akses untuk setiap direktori. Ini mengambil bentuk berikut:

AccessFileName filename

filename adalah nama berkas yang harus dicari di direktori yang diminta. Secara baku, server mencari .htaccess. Untuk alasan keamanan, direktif biasanya diikuti oleh tag Files untuk mencegah berkas yang dimulai dengan .ht diakses oleh klien web. Ini termasuk berkas .htaccess dan .htpasswd.

Contoh 7. Menggunakan direktif AccessFileName
AccessFileName .htaccess

<Files ~ "^\.ht">
  Order allow,deny
  Deny from all
  Satisfy All
</Files>
Action

Direktif Action memungkinkan Anda menentukan skrip CGI yang akan dijalankan saat jenis media tertentu diminta. Ini mengambil bentuk berikut:

Action content-type path

content-type harus berupa jenis MIME yang valid seperti text/html, image/png, atau application/pdf. path mengacu pada skrip CGI yang ada, dan harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /cgi-bin/process-image.cgi).

Contoh 8. Menggunakan direktif Action
Action image/png /cgi-bin/process-image.cgi
AddDescription

Direktif AddDescription memungkinkan Anda menentukan deskripsi singkat yang akan ditampilkan dalam daftar direktori yang dihasilkan server untuk berkas tertentu. Ini mengambil bentuk berikut:

AddDescription "description" filename

description harus berupa teks pendek yang diapit dalam tanda kutip ganda (yaitu, "). filename dapat berupa nama berkas lengkap, ekstensi berkas, atau ekspresi wildcard.

Contoh 9. Menggunakan direktif AddDescription
AddDescription "GZIP compressed tar archive" .tgz
AddEncoding

Direktif AddEncoding memungkinkan Anda menentukan jenis pengodean untuk ekstensi berkas tertentu. Ini mengambil bentuk berikut:

AddEncoding encoding extension

encoding harus berupa pengodean MIME yang valid seperti x-compress, x-gzip, dll. extension adalah ekstensi berkas peka huruf besar/kecil, dan secara konvensional ditulis dengan awalan titik (misalnya, .gz).

Direktif ini biasanya digunakan untuk menginstruksikan peramban web agar mendekompresi jenis berkas tertentu saat diunduh.

Contoh 10. Menggunakan direktif AddEncoding
AddEncoding x-gzip .gz .tgz
AddHandler

Direktif AddHandler memungkinkan Anda memetakan ekstensi berkas tertentu ke penangan yang dipilih. Ini mengambil bentuk berikut:

AddHandler handler extension

handler harus berupa nama penangan yang ditentukan sebelumnya. extension adalah ekstensi berkas peka huruf besar/kecil, dan secara konvensional ditulis dengan awalan titik (misalnya, .cgi).

Direktif ini biasanya digunakan untuk memperlakukan berkas dengan ekstensi .cgi sebagai skrip CGI terlepas dari direktori tempat mereka berada. Selain itu, ini juga biasanya digunakan untuk memproses berkas HTML dan peta gambar yang diurai server.

Contoh 11. Menggunakan opsi AddHandler
AddHandler cgi-script .cgi
AddIcon

Direktif AddIcon memungkinkan Anda menentukan ikon yang akan ditampilkan untuk berkas tertentu dalam daftar direktori yang dihasilkan server. Ini mengambil bentuk berikut:

AddIcon path pattern

path mengacu pada berkas ikon yang ada, dan harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /icons/folder.png). pattern dapat berupa nama berkas, ekstensi berkas, ekspresi wildcard, atau formulir khusus seperti yang dijelaskan dalam tabel berikut:

Tabel 3. Opsi AddIcon yang tersedia
Opsi Deskripsi

^DIRECTORY^

Mewakili direktori.

^BLANKICON^

Mewakili baris kosong.

Contoh 12. Menggunakan direktif AddIcon
AddIcon /icons/text.png .txt README
AddIconByEncoding

Direktif AddIconByEncoding memungkinkan Anda menentukan ikon yang akan ditampilkan untuk jenis pengodean tertentu dalam daftar direktori yang dihasilkan server. Ini mengambil bentuk berikut:

AddIconByEncoding path encoding

path mengacu pada berkas ikon yang ada, dan harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /icons/compressed.png). encoding harus berupa pengodean MIME yang valid seperti x-compress, x-gzip, dll.

Contoh 13. Menggunakan direktif AddIconByEncoding
AddIconByEncoding /icons/compressed.png x-compress x-gzip
AddIconByType

Direktif AddIconByType memungkinkan Anda menentukan ikon yang akan ditampilkan untuk jenis media tertentu dalam daftar direktori yang dihasilkan server. Ini mengambil bentuk berikut:

AddIconByType path content-type

path mengacu pada berkas ikon yang ada, dan harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /icons/text.png). content-type harus berupa jenis MIME yang valid (misalnya, text/html atau image/png), atau ekspresi wildcard seperti text/, image/, dll.

Contoh 14. Menggunakan direktif AddIconByType
AddIconByType /icons/video.png video/*
AddLanguage

Direktif AddLanguage memungkinkan Anda mengaitkan ekstensi berkas dengan bahasa tertentu. Ini mengambil bentuk berikut:

AddLanguage language extension

language harus berupa bahasa MIME yang valid seperti cs, en, atau fr. extension adalah ekstensi berkas peka huruf besar/kecil, dan secara konvensional ditulis dengan awalan titik (misalnya, .cs).

Direktif ini sangat berguna untuk server web yang menyajikan konten dalam berbagai bahasa berdasarkan pengaturan bahasa klien.

Contoh 15. Menggunakan direktif AddLanguage
AddLanguage cs .cs .cz
AddType

Direktif AddType memungkinkan Anda untuk menentukan atau mengganti jenis media untuk ekstensi berkas tertentu. Ini mengambil bentuk berikut:

AddType content-type extension

content-type harus berupa jenis MIME yang valid seperti text/html, image/png, dll. extension adalah ekstensi berkas peka huruf besar/kecil, dan secara konvensional ditulis dengan awalan titik (misalnya, .cs).

Contoh 16. Menggunakan direktif AddType
AddType application/x-gzip .gz .tgz
Alias

Direktif Alias memungkinkan Anda untuk merujuk ke berkas dan direktori di luar direktori baku yang ditentukan oleh direktif DocumentRoot. Ini mengambil bentuk berikut:

Alias url-path real-path

url-path harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /images/). real-path adalah path lengkap ke berkas atau direktori di sistem berkas lokal. Direktif ini biasanya diikuti oleh tag Directory dengan izin tambahan untuk mengakses direktori target. Secara baku, alias /icons/ dibuat sehingga ikon dari /var/www/icons/ ditampilkan dalam daftar direktori yang dihasilkan server.

Contoh 17. Menggunakan direktif Alias
Alias /icons/ /var/www/icons/

<Directory "/var/www/icons">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
<Directory>
Allow

Direktif Allow memungkinkan Anda menentukan klien mana yang memiliki izin untuk mengakses direktori tertentu. Ini mengambil bentuk berikut:

Allow from client

client dapat berupa nama domain, alamat IP (lengkap dan sebagian), pasangan network/netmask, atau all untuk semua klien.

Contoh 18. Menggunakan direktif Allow
Allow from 192.168.1.0/255.255.255.0
AllowOverride

Direktif AllowOverride memungkinkan Anda menentukan direktif mana dalam berkas .htaccess yang dapat menimpa konfigurasi baku. Ini mengambil bentuk berikut:

AllowOverride type

type harus berupa salah satu opsi pengelompokan yang tersedia seperti yang dijelaskan dalam Opsi AllowOverride yang Tersedia.

Tabel 4. Opsi AllowOverride yang tersedia
Opsi Deskripsi

All

Semua direktif dalam .htaccess diizinkan untuk menimpan pengaturan konfigurasi sebelumnya.

None

Tidak ada direktif dalam .htaccess yang diizinkan untuk menimpa pengaturan konfigurasi sebelumnya.

AuthConfig

Mengizinkan penggunaan direktif otorisasi seperti AuthName, AuthType, atau Require.

FileInfo

Memungkinkan penggunaan jenis berkas, metadata, dan direktif mod_rewrite seperti DefaultType, RequestHeader, atau RewriteEngine, serta direktif Action.

Indexes

Memungkinkan penggunaan direktif pengindeksan direktori seperti AddDescription, AddIcon, atau FancyIndexing.

Limit

Memungkinkan penggunaan direktif akses host, yaitu, Allow, Deny, dan Order.

Options=option,…

Memungkinkan penggunaan direktif Options. Selain itu, Anda dapat memberikan daftar opsi yang dipisah koma untuk menyesuaikan opsi mana yang dapat diatur menggunakan direktif ini.

Contoh 19. Menggunakan direktif AllowOverride
AllowOverride FileInfo AuthConfig Limit
BrowserMatch

Direktif BrowserMatch memungkinkan Anda untuk mengubah perilaku server berdasarkan jenis peramban web klien. Ini mengambil bentuk berikut:

BrowserMatch pattern variable

pattern adalah ekspresi reguler agar sesuai dengan bidang header HTTP User-Agent. variable adalah variabel lingkungan yang diatur ketika bidang header cocok dengan pola.

Secara baku, direktif ini digunakan untuk menolak koneksi ke peramban tertentu dengan masalah yang diketahui, dan untuk menonaktifkan keepalive dan header HTTP flush untuk peramban yang diketahui memiliki masalah dengan tindakan ini.

Contoh 20. Menggunakan direktif BrowserMatch
BrowserMatch "Mozilla/2" nokeepalive
CacheDefaultExpire

Opsi CacheDefaultExpire memungkinkan Anda untuk mengatur berapa lama untuk menyimpan dokumen dalam cache yang tidak memiliki tanggal kedaluwarsa atau tanggal modifikasi terakhirnya yang ditentukan. Ini mengambil bentuk berikut:

CacheDefaultExpire time

time ditentukan dalam hitungan detik. Opsi baku adalah 3600 (yaitu, satu jam).

Contoh 21. Menggunakan direktif CacheDefaultExpire
CacheDefaultExpire 3600
CacheDisable

Direktif CacheDisable memungkinkan Anda menonaktifkan penyinggahan URL tertentu. Ini mengambil bentuk berikut:

CacheDisable path

path harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /files/).

Contoh 22. Menggunakan direktif CacheDisable
CacheDisable /temporary
CacheEnable

Direktif CacheEnable memungkinkan Anda menentukan jenis cache yang akan digunakan untuk URL tertentu. Ini mengambil bentuk berikut:

CacheEnable type url

type harus berupa jenis cache yang valid seperti yang dijelaskan dalam Tipe cache yang tersedia. url dapat berupa path relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /images/), protokol (misalnya, ftp://), atau URL eksternal seperti http://example.com/.

Tabel 5. Tipe singgahan yang tersedia
Tipe Deskripsi

mem

Manajer penyimpanan berbasis memori.

disk

Manajer penyimpanan berbasis disk.

fd

Cache deskriptor berkas.

Contoh 23. Menggunakan direktif CacheEnable
CacheEnable disk /
CacheLastModifiedFactor

Direktif CacheLastModifiedFactor memungkinkan Anda untuk menyesuaikan berapa lama untuk menyimpan dokumen dalam cache yang tidak memiliki tanggal kedaluwarsa yang ditentukan, tetapi yang memberikan informasi tentang tanggal modifikasi terakhirnya. Ini mengambil bentuk berikut:

CacheLastModifiedFactor number

number adalah koefisien yang akan digunakan untuk mengalikan waktu yang berlalu sejak modifikasi terakhir dokumen. Opsi baku adalah 0.1 (yaitu, sepersepuluh).

Contoh 24. Menggunakan direktif CacheLastModifiedFactor
CacheLastModifiedFactor 0.1
CacheMaxExpire

Direktif CacheMaxExpire memungkinkan Anda menentukan jumlah waktu maksimum untuk menyimpan dokumen dalam cache. Ini mengambil bentuk berikut:

CacheMaxExpire time

time ditentukan dalam hitungan detik. Opsi baku adalah 86400 (yaitu, satu hari).

Contoh 25. Menggunakan direktif CacheMaxExpire
CacheMaxExpire 86400
CacheNegotiatedDocs

Direktif CacheNegotiatedDocs memungkinkan Anda untuk mengaktifkan penyinggahan (caching) dokumen yang dinegosiasikan berdasarkan konten. Ini mengambil bentuk berikut:

CacheNegotiatedDocs option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi CacheNegotiatedDocs yang tersedia. Karena dokumen yang kontennya dinegosiasikan dapat berubah seiring waktu atau karena masukan dari pemohon, opsi bakunya adalah Off.

Tabel 6. Opsi CacheNegotiatedDocs yang tersedia
Opsi Deskripsi

On

Memungkinkan penyinggahan dokumen yang dinegosiasikan konten.

Off

Menonaktifkan penyinggahan dokumen yang dinegosiasikan konten.

Contoh 26. Menggunakan direktif CacheNegotiatedDocs
CacheNegotiatedDocs On
CacheRoot

Direktif CacheRoot memungkinkan Anda menentukan direktori untuk menyimpan berkas cache. Ini mengambil bentuk berikut:

CacheRoot directory

directory harus merupakan path lengkap ke direktori yang ada di sistem berkas lokal. Opsi baku adalah /var/cache/mod_proxy/.

Contoh 27. Menggunakan direktif CacheRoot
CacheRoot /var/cache/mod_proxy
CustomLog

Direktif CustomLog memungkinkan Anda menentukan nama berkas log dan format berkas log. Ini mengambil bentuk berikut:

CustomLog path format

path mengacu pada berkas log, dan harus relatif terhadap direktori yang ditentukan oleh direktif ServerRoot (yaitu, /etc/httpd/ secara baku). format harus berupa string format eksplisit, atau nama format yang sebelumnya didefinisikan menggunakan direktif LogFormat.

Contoh 28. Menggunakan direktif CustomLog
CustomLog logs/access_log combined
DefaultIcon

Direktif DefaultIcon memungkinkan Anda menentukan ikon yang akan ditampilkan untuk berkas dalam daftar direktori yang dihasilkan server ketika tidak ada ikon lain yang terkait dengannya. Ini mengambil bentuk berikut:

DefaultIcon path

path mengacu pada berkas ikon yang ada, dan harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /icons/unknown.png).

Contoh 29. Menggunakan direktif DefaultIcon
DefaultIcon /icons/unknown.png
DefaultType

Direktif DefaultType memungkinkan Anda menentukan jenis media yang akan digunakan jika jenis MIME yang tepat tidak dapat ditentukan oleh server. Ini mengambil bentuk berikut:

DefaultType content-type

content-type harus berupa jenis MIME yang valid seperti text/html, image/png, application/pdf, dll.

Contoh 30. Menggunakan direktif DefaultType
DefaultType text/plain
Deny

Direktif Deny memungkinkan Anda menentukan klien mana yang ditolak aksesnya ke direktori tertentu. Ini mengambil bentuk berikut:

Deny from client

client dapat berupa nama domain, alamat IP (lengkap dan sebagian), pasangan network/netmask, atau all untuk semua klien.

Contoh 31. Menggunakan direktif Deny
Deny from 192.168.1.1
DirectoryIndex

Direktif DirectoryIndex memungkinkan Anda menentukan dokumen yang akan disajikan kepada klien saat direktori diminta (yaitu, ketika URL berakhir dengan karakter /). Ini mengambil bentuk berikut:

DirectoryIndex filename

filename adalah nama berkas yang harus dicari di direktori yang diminta. Secara baku, server mencari index.html, dan index.html.var.

Contoh 32. Menggunakan direktif DirectoryIndex
DirectoryIndex index.html index.html.var
DocumentRoot

Direktif DocumentRoot memungkinkan Anda menentukan direktori utama tempat konten disajikan. Ini mengambil bentuk berikut:

DocumentRoot directory

directory harus merupakan path lengkap ke direktori yang ada di sistem berkas lokal. Opsi baku adalah /var/www/html/.

Contoh 33. Menggunakan direktif DocumentRoot
DocumentRoot /var/www/html
ErrorDocument

Direktif ErrorDocument memungkinkan Anda menentukan dokumen atau pesan yang akan ditampilkan sebagai respons terhadap kesalahan tertentu. Ini mengambil bentuk berikut:

ErrorDocument error-code action

error-code harus berupa kode yang valid seperti 403 (Terlarang), 404 (Tidak Ditemukan), atau 500 (Kesalahan Server Internal). action dapat berupa URL (baik lokal maupun eksternal), atau string pesan yang disertakan dalam tanda kutip ganda (yaitu, ").

Contoh 34. Menggunakan direktif ErrorDocument
ErrorDocument 403 "Access Denied"
ErrorDocument 404 /404-not_found.html
ErrorLog

Direktif ErrorLog memungkinkan Anda menentukan berkas tempat kesalahan server dicatat. Ini mengambil bentuk berikut:

ErrorLog path

path mengacu pada berkas log, dan dapat bersifat absolut, atau relatif terhadap direktori yang ditentukan oleh direktif ServerRoot (yaitu, /etc/httpd/ secara baku). Opsi baku adalah logs/error_log

Contoh 35. Menggunakan direktif ErrorLog
ErrorLog logs/error_log
ExtendedStatus

Direktif ExtendedStatus memungkinkan Anda mengaktifkan informasi status server terperinci. Ini mengambil bentuk berikut:

ExtendedStatus option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi ExtendedStatus yang tersedia. Opsi baku adalah Off.

Tabel 7. Opsi ExtendedStatus yang tersedia
Opsi Deskripsi

On

Memungkinkan menghasilkan status server terperinci.

Off

Menonaktifkan menghasilkan status server terperinci.

Contoh 36. Menggunakan direktif ExtendedStatus
ExtendedStatus On
Group

Direktif Group memungkinkan Anda menentukan grup tempat layanan httpd akan berjalan. Ini mengambil bentuk berikut:

Group group

group harus berupa grup UNIX yang ada. Opsi baku adalah apache.

Perhatikan bahwa Group tidak lagi didukung di dalam <VirtualHost>, dan telah digantikan oleh direktif SuexecUserGroup.

Contoh 37. Menggunakan direktif Group
Group apache
HeaderName

Direktif HeaderName memungkinkan Anda menentukan berkas yang akan ditambahkan ke awal daftar direktori yang dihasilkan server. Ini mengambil bentuk berikut:

HeaderName filename

filename adalah nama berkas yang harus dicari di direktori yang diminta. Secara baku, server mencari HEADER.html.

Contoh 38. Menggunakan direktif HeaderName
HeaderName HEADER.html
HostnameLookups

Direktif HostnameLookups memungkinkan Anda mengaktifkan penguraian otomatis alamat IP. Ini mengambil bentuk berikut:

HostnameLookups option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi HostnameLookups yang tersedia. Untuk menghemat sumber daya di server, opsi baku adalah Off.

Tabel 8. Opsi HostnameLookups yang tersedia
Opsi Deskripsi:

On

Memungkinkan penyelesaian alamat IP untuk setiap koneksi sehingga nama host dapat dicatat. Namun, ini juga menambahkan overhead pemrosesan yang signifikan.

Double

Memungkinkan melakukan pencarian DNS balik ganda. Dibandingkan dengan opsi di atas, ini menambahkan lebih banyak overhead pemrosesan.

Off

Menonaktifkan penyelesaian alamat IP untuk setiap koneksi.

Perhatikan bahwa ketika kehadiran nama host diperlukan dalam berkas log server, sering kali dimungkinkan untuk menggunakan salah satu dari banyak alat analisis log yang melakukan pencarian DNS dengan lebih efisien.

Contoh 39. Menggunakan direktif HostnameLookups
HostnameLookups Off
Include

Direktif Include memungkinkan Anda untuk menyertakan berkas konfigurasi lain. Ini mengambil bentuk berikut:

Include filename

filename dapat berupa path absolut, path relatif terhadap direktori yang ditentukan oleh direktif ServerRoot, atau ekspresi wildcard. Semua berkas konfigurasi dari direktori /etc/httpd/conf.d/ dimuat secara baku.

Contoh 40. Menggunakan direktif Include
Include conf.d/*.conf
IndexIgnore

Direktif IndexIgnore memungkinkan Anda menentukan daftar nama berkas yang akan dihilangkan dari daftar isi direktori yang dihasilkan server. Ini mengambil bentuk berikut:

IndexIgnore filename

Opsi filename dapat berupa nama berkas lengkap, atau ekspresi wildcard.

Contoh 41. Menggunakan direktif IndexIgnore
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
IndexOptions

Direktif IndexOptions memungkinkan Anda untuk menyesuaikan perilaku daftar isi direktori yang dihasilkan server. Ini mengambil bentuk berikut:

IndexOptions option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi daftar isi direktori yang tersedia. Opsi bakunya adalah Charset=UTF-8, FancyIndexing, HTMLTable, NameWidth=*, dan VersionSort.

Tabel 9. Opsi daftar isi direktori yang tersedia
Opsi Deskripsi

Charset=encoding

Menentukan set karakter dari halaman web yang dihasilkan. encoding harus berupa set karakter yang valid seperti UTF-8 atau ISO-8859-2.

Type=content-type

Menentukan jenis media dari halaman web yang dihasilkan. content-type harus berupa jenis MIME yang valid seperti text/html atau text/plain.

DescriptionWidth=value

Menentukan lebar kolom deskripsi. value dapat berupa jumlah karakter, atau tanda bintang (yaitu, *) untuk menyesuaikan lebar secara otomatis.

FancyIndexing

Memungkinkan fitur-fitur canggih seperti ikon yang berbeda untuk berkas tertentu atau kemungkinan untuk mengurutkan ulang daftar direktori dengan mengklik header kolom.

FolderFirst

Memungkinkan daftar direktori terlebih dahulu, selalu menempatkannya di atas berkas.

HTMLTable

Memungkinkan penggunaan tabel HTML untuk daftar direktori.

IconsAreLinks

Memungkinkan penggunaan ikon sebagai tautan.

IconHeight=value

Menentukan tinggi ikon. value adalah jumlah piksel.

IconWidth=value

Menentukan lebar ikon. value adalah jumlah piksel.

IgnoreCase

Memungkinkan pengurutan berkas dan direktori dengan cara yang peka huruf besar/kecil.

IgnoreClient

Menonaktifkan penerimaan variabel kueri dari klien.

NameWidth=value

Menentukan lebar kolom nama berkas. value dapat berupa jumlah karakter, atau tanda bintang (yaitu, *) untuk menyesuaikan lebar secara otomatis.

ScanHTMLTitles

Memungkinkan penguraian berkas untuk deskripsi (yaitu, elemen judul) jika tidak disediakan oleh direktif AddDescription.

ShowForbidden

Memungkinkan daftar berkas dengan akses terbatas.

SuppressColumnSorting

Menonaktifkan pengurutan ulang daftar direktori dengan mengklik header kolom.

SuppressDescription

Menonaktifkan pemesanan ruang untuk deskripsi berkas.

SuppressHTMLPreamble

Menonaktifkan penggunaan pembukaan HTML standar ketika berkas yang ditentukan oleh direktif HeaderName ada.

SuppressIcon

Menonaktifkan penggunaan ikon dalam daftar direktori.

SuppressLastModified

Menonaktifkan menampilkan tanggal bidang modifikasi terakhir dalam daftar direktori.

SuppressRules

Menonaktifkan penggunaan garis horizontal dalam daftar direktori.

SuppressSize

Menonaktifkan menampilkan bidang ukuran berkas dalam daftar direktori.

TrackModified

emungkinkan pengembalian nilai Last-Modified dan ETag di header HTTP.

VersionSort

Memungkinkan pengurutan berkas yang berisi nomor versi dengan cara yang diharapkan.

XHTML

Memungkinkan penggunaan XHTML 1.0 alih-alih HTML baku 3.2.

Contoh 42. Menggunakan direktif IndexOptions
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8
KeepAlive

Direktif KeepAlive memungkinkan Anda mengaktifkan koneksi persisten. Ini mengambil bentuk berikut:

KeepAlive option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi KeepAlive yang tersedia. Opsi baku adalah Off.

Tabel 10. Opsi KeepAlive yang tersedia
Opsi Deskripsi

On

Memungkinkan koneksi persisten. Dalam hal ini, server akan menerima lebih dari satu permintaan per koneksi.

Off

Menonaktifkan koneksi keep-alive.

Perhatikan bahwa ketika koneksi persisten diaktifkan, pada server yang sibuk, jumlah proses anak dapat meningkat dengan cepat dan akhirnya mencapai batas maksimum, memperlambat server secara signifikan. Untuk mengurangi risiko, Anda disarankan untuk mengatur KeepAliveTimeout ke angka yang rendah, dan memantau berkas log /var/log/httpd/logs/error_log dengan hati-hati.

Contoh 43. Menggunakan direktif KeepAlive
KeepAlive Off
KeepAliveTimeout

Direktif KeepAliveTimeout memungkinkan Anda menentukan jumlah waktu untuk menunggu permintaan lain sebelum menutup koneksi. Ini mengambil bentuk berikut:

KeepAliveTimeout time

time ditentukan dalam hitungan detik. Opsi baku adalah 15.

Contoh 44. Menggunakan direktif KeepAliveTimeout
KeepAliveTimeout 15
LanguagePriority

Direktif LanguagePriority memungkinkan Anda untuk menyesuaikan prioritas bahasa. Ini mengambil bentuk berikut:

LanguagePriority language

language harus berupa bahasa MIME yang valid seperti cs, en, atau fr.

Direktif ini sangat berguna untuk server web yang menyajikan konten dalam berbagai bahasa berdasarkan pengaturan bahasa klien.

Contoh 45. Menggunakan direktif LanguagePriority
LanguagePriority sk cs en
Listen

Direktif Listen memungkinkan Anda menentukan alamat IP atau port untuk didengarkan. Ini mengambil bentuk berikut:

Listen ip-address:port protocol

ip-address bersifat opsional dan kecuali disediakan, server akan menerima permintaan masuk pada port tertentu dari semua alamat IP. Karena protocol ditentukan secara otomatis dari nomor port, biasanya dapat dihilangkan. Opsi baku adalah mendengarkan port 80.

Perhatikan bahwa jika server dikonfigurasi untuk mendengarkan port di bawah 1024, hanya pengguna super yang dapat memulai layanan httpd.

Contoh 46. Menggunakan direktif Listen
Listen 80
LoadModule

Direktif LoadModule memungkinkan Anda memuat modul Dynamic Shared Object (DSO). Ini mengambil bentuk berikut:

LoadModule name path

name harus berupa pengidentifikasi yang valid dari modul yang diperlukan. path mengacu pada berkas modul yang ada, dan harus relatif terhadap direktori tempat pustaka ditempatkan (yaitu, /usr/lib/httpd/ pada 32-bit dan /usr/lib64/httpd/ pada sistem 64-bit secara baku).

Lihat Bekerja dengan Modul untuk informasi lebih lanjut tentang dukungan DSO Server HTTP Apache.

Contoh 47. Menggunakan direktif LoadModule
LoadModule php5_module modules/libphp5.so
LogFormat

Direktif LogFormat memungkinkan Anda menentukan format berkas log. Ini mengambil bentuk berikut:

LogFormat format name

format adalah string yang terdiri dari opsi seperti yang dijelaskan dalam Opsi Umum LogFormat. name dapat digunakan sebagai pengganti string format dalam direktif CustomLog.

Tabel 11. Opsi LogFormat umum
Opsi Deskripsi

%b

Mewakili ukuran respon dalam byte.

%h

Mewakili alamat IP atau nama host klien jarak jauh.

%l

Mewakili nama log jarak jauh jika disediakan. Jika tidak, tanda hubung (yaitu, -) digunakan sebagai gantinya.

[option] %r

Mewakili baris pertama string permintaan sebagaimana datang dari peramban atau klien.

[option] %s

Mewakili kode status.

%t

Mewakili tanggal dan waktu permintaan.

[option] %u`

Jika autentikasi diperlukan, autentikasi tersebut mewakili pengguna jarak jauh. Jika tidak, tanda hubung (yaitu, -) digunakan sebagai gantinya.

%{field}

Mewakili konten field header HTTP. Opsi umum termasuk %{Referer} (URL halaman web yang merujuk klien ke server) dan %{User-Agent} (jenis peramban web yang membuat permintaan).

Contoh 48. Menggunakan direktif LogFormat
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogLevel

Direktif LogLevel memungkinkan Anda untuk menyesuaikan tingkat verbositas log kesalahan. Ini mengambil bentuk berikut:

LogLevel option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi LogLevel yang tersedia. Opsi baku adalah warn.

Tabel 12. Opsi LogLevel yang tersedia
Opsi Deskripsi

emerg

Hanya situasi darurat ketika server tidak dapat melakukan pekerjaannya yang dicatat dalam log.

alert

Semua situasi ketika diperlukan tindakan seketika yang dicatat dalam log.

crit

Semua kondisi kritis dicatat dalam log.

error

Semua pesan kesalahan dicatat dalam log.

warn

Semua pesan peringatan dicatat dalam log.

notice

Bahkan normal, tetapi masih merupakan situasi signifikan yang dicatat dalam log.

info

Berbagai pesan informasi dicatat dalam log.

debug

Berbagai pesan debug dicatat dalam log.

Contoh 49. Menggunakan direktif LogLevel
LogLevel warn
MaxKeepAliveRequests

Direktif MaxKeepAliveRequests memungkinkan Anda menentukan jumlah maksimum permintaan untuk koneksi persisten. Ini mengambil bentuk berikut:

MaxKeepAliveRequests number

Number yang tinggi dapat meningkatkan kinerja server. Perhatikan bahwa menggunakan 0 memungkinkan jumlah permintaan yang tidak terbatas. Opsi baku adalah 100.

Contoh 50. Menggunakan opsi MaxKeepAliveRequests
MaxKeepAliveRequests 100
NameVirtualHost

Direktif NameVirtualHost memungkinkan Anda menentukan alamat IP dan nomor port untuk host virtual berbasis nama. Ini mengambil bentuk berikut:

NameVirtualHost ip-address:port

ip-address dapat berupa alamat IP lengkap, atau tanda bintang (yaitu, *) yang mewakili semua antarmuka. Perhatikan bahwa alamat IPv6 harus diapit dalam tanda kurung siku (yaitu, [ dan ]). port bersifat opsional.

Hosting virtual berbasis nama memungkinkan satu Server HTTP Apache untuk melayani domain-domain yang berbeda tanpa menggunakan beberapa alamat IP.

Menggunakan koneksi HTTP yang aman

Host virtual berbasis nama hanya bekerja dengan koneksi HTTP yang tidak aman. Jika menggunakan host virtual dengan server yang aman, gunakan host virtual berbasis alamat IP sebagai gantinya.

Contoh 51. Menggunakan direktif NameVirtualHost
NameVirtualHost *:80
Options

Direktif Options memungkinkan Anda menentukan fitur server mana yang tersedia di direktori tertentu. Ini mengambil bentuk berikut:

Options option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Fitur-fitur server yang tersedia.

Tabel 13. Fitur server yang tersedia
Option Description

ExecCGI

Enables the execution of CGI scripts.

FollowSymLinks

Enables following symbolic links in the directory.

Includes

Enables server-side includes.

IncludesNOEXEC

Enables server-side includes, but does not allow the execution of commands.

Indexes

Enables server-generated directory listings.

MultiViews

Enables content-negotiated "MultiViews".

SymLinksIfOwnerMatch

Enables following symbolic links in the directory when both the link and the target file have the same owner.

All

Enables all of the features above with the exception of MultiViews.

None

Disables all of the features above.

Contoh 52. Menggunakan direktif Options
Options Indexes FollowSymLinks
Order

Direktif Order memungkinkan Anda menentukan urutan di mana direktif Allow dan Deny dievaluasi. Ini mengambil bentuk berikut:

Order option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi Order yang tersedia. Opsi bakunya adalah allow,deny.

Tabel 14. Opsi Order yang tersedia
Opsi Deskripsi

allow,deny

Direktif Allow dievaluasi terlebih dahulu.

deny,allow

Direktif Deny dievaluasi terlebih dahulu.

Contoh 53. Menggunakan direktif Order
Order allow,deny
PidFile

Direktif PidFile memungkinkan Anda menentukan berkas tempat process ID (PID) server disimpan. Ini mengambil bentuk berikut:

PidFile path

path mengacu pada berkas pid, dan dapat bersifat absolut, atau relatif terhadap direktori yang ditentukan oleh direktif ServerRoot (yaitu, /etc/httpd/ secara baku). Opsi baku adalah run/httpd.pid.

Contoh 54. Menggunakan direktif PidFile
PidFile run/httpd.pid
ProxyRequests

Direktif ProxyRequests memungkinkan Anda untuk mengaktifkan penerusan permintaan proksi. Ini mengambil bentuk berikut:

ProxyRequests option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi ProxyRequests yang tersedia. Opsi baku adalah Off.

Tabel 15. Opsi ProxyRequests yang tersedia
Opsi Deskripsi

On

Memungkinkan penerusan permintaan proksi.

Off

Menonaktifkan penerusan permintaan proksi.

Contoh 55. Menggunakan direktif ProxyRequests
ProxyRequests On
ReadmeName

Direktif ReadmeName memungkinkan Anda menentukan berkas yang akan ditambahkan ke akhir daftar direktori yang dihasilkan server. Ini mengambil bentuk berikut:

ReadmeName filename

filename adalah nama berkas yang harus dicari di direktori yang diminta. Secara baku, server mencari README.html.

Contoh 56. Menggunakan direktif ReadmeName
ReadmeName README.html
Redirect

Direktif Redirect memungkinkan Anda untuk mengarahkan klien ke URL lain. Ini mengambil bentuk berikut:

Redirect status path url

status bersifat opsional, dan jika disediakan, itu harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi status yang tersedia. path mengacu pada lokasi lama, dan harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /docs). url mengacu pada lokasi konten saat ini (misalnya, http://docs.example.com).

Tabel 16. Opsi status yang tersedia
Status Deskripsi

permanent

Menunjukkan bahwa sumber daya yang diminta telah dipindahkan secara permanen. Kode status 301 (Dipindahkan Secara Permanen) dikembalikan ke klien.

temp

Menunjukkan bahwa sumber daya yang diminta telah dipindahkan hanya sementara. Kode status 302 (Ditemukan) dikembalikan ke klien.

seeother

Menunjukkan bahwa sumber daya yang diminta telah diganti. Kode status 303 (Lihat Lainnya) dikembalikan ke klien.

gone

Menunjukkan bahwa sumber daya yang diminta telah dihapus secara permanen. Status 410 (Lenyap) dikembalikan ke klien.

Perhatikan bahwa untuk teknik pengalihan yang lebih canggih, Anda dapat menggunakan modul mod_rewrite yang merupakan bagian dari instalasi Server HTTP Apache.

Contoh 57. Menggunakan direktif Redirect
Redirect permanent /docs http://docs.example.com
ScriptAlias

Direktif ScriptAlias memungkinkan Anda menentukan lokasi skrip CGI. Ini mengambil bentuk berikut:

ScriptAlias url-path real-path

url-path harus relatif terhadap direktori yang ditentukan oleh direktif DocumentRoot (misalnya, /cgi-bin/). real-path adalah path lengkap ke berkas atau direktori di sistem berkas lokal. Direktif ini biasanya diikuti oleh tag Directory dengan izin tambahan untuk mengakses direktori target. Secara baku, alias /cgi-bin/ dibuat sehingga skrip yang terletak di /var/www/cgi-bin/ dapat diakses.

Direktif ScriptAlias digunakan untuk alasan keamanan guna mencegah skrip CGI dilihat sebagai dokumen teks biasa.

Contoh 58. Menggunakan direktif ScriptAlias
ScriptAlias /cgi-bin/ /var/www/cgi-bin/

<Directory "/var/www/cgi-bin">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
ServerAdmin

Direktif ServerAdmin memungkinkan Anda menentukan alamat surel administrator server yang akan ditampilkan di halaman web yang dihasilkan server. Ini mengambil bentuk berikut:

ServerAdmin email

Opsi baku adalah root@localhost.

Direktif ini biasanya diatur ke webmaster@hostname, di mana hostname adalah alamat server. Setelah diatur, aliaskan webmaster ke orang yang bertanggung jawab atas server web di /etc/aliases, dan sebagai pengguna super, jalankan perintah newaliases.

Contoh 59. Menggunakan direktif ServerAdmin
ServerAdmin webmaster@penguin.example.com
ServerName

Direktif ServerName memungkinkan Anda menentukan nama host dan nomor port server web. Ini mengambil bentuk berikut:

ServerName hostname:port

hostname harus berupa domain fully qualified domain name (* FQDN *) server. port bersifat opsional, tetapi ketika disediakan, itu harus cocok dengan nomor yang ditentukan oleh direktif Listen.

Saat menggunakan direktif ini, pastikan bahwa alamat IP dan pasangan nama server disertakan dalam berkas /etc/hosts.

Contoh 60. Menggunakan direktif ServerName
ServerName penguin.example.com:80
ServerRoot

Direktif ServerRoot memungkinkan Anda menentukan direktori tempat server beroperasi. Ini mengambil bentuk berikut:

ServerRoot directory

directory harus merupakan path lengkap ke direktori yang ada di sistem berkas lokal. Opsi baku adalah /etc/httpd/.

Contoh 61. Menggunakan direktif ServerRoot
ServerRoot /etc/httpd
ServerSignature

Direktif ServerSignature memungkinkan Anda untuk mengaktifkan tampilan informasi tentang server pada dokumen yang dihasilkan server. Ini mengambil bentuk berikut:

ServerSignature option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi ServerSignature yang tersedia. Opsi baku adalah On.

Tabel 17. Opsi ServerSignature yang tersedia
Opsi Deskripsi

On

Memungkinkan penambahan nama dan versi server ke halaman yang dihasilkan server.

Off

Menonaktifkan penambahan nama dan versi server ke halaman yang dihasilkan server.

EMail

Memungkinkan penambahan nama server, versi, dan alamat surel administrator sistem sebagaimana ditentukan oleh direktif ServerAdmin ke halaman yang dihasilkan server.

Contoh 62. Menggunakan direktif ServerSignature
ServerSignature On
ServerTokens

Direktif ServerTokens memungkinkan Anda untuk menyesuaikan informasi apa yang disertakan dalam header respons Server. Ini mengambil bentuk berikut:

ServerTokens option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi ServerTokens yang tersedia. Opsi baku adalah OS.

Tabel 18. Opsi ServerTokens yang tersedia
Opsi Deskripsi

Prod

Termasuk nama produk saja (yaitu, Apache).

Major

Termasuk nama produk dan versi utama server (misalnya, 2).

Minor

Termasuk nama produk dan versi minor server (misalnya, 2.2).

Min

Termasuk nama produk dan versi minimal server (misalnya, 2.2.15).

OS

Termasuk nama produk, versi minimal server, dan jenis sistem operasi yang dijalankannya (misalnya, Red Hat).

Full

Termasuk semua informasi di atas bersama dengan daftar modul yang dimuat.

Perhatikan bahwa untuk alasan keamanan, disarankan untuk mengungkapkan informasi sesedikit mungkin tentang server.

Contoh 63. Menggunakan direktif ServerTokens
ServerTokens Prod
SuexecUserGroup

Direktif SuexecUserGroup memungkinkan Anda untuk menentukan pengguna dan grup tempat skrip CGI akan dijalankan. Ini mengambil bentuk berikut:

SuexecUserGroup user group

user harus berupa pengguna yang sudah ada, dan group harus berupa grup UNIX yang valid.

Untuk alasan keamanan, skrip CGI tidak boleh dijalankan dengan hak istimewa root. Perhatikan bahwa dalam <VirtualHost>, SuexecUserGroup menggantikan direktif User dan Group.

Contoh 64. Menggunakan direktif SuexecUserGroup
SuexecUserGroup apache apache
Timeout

Direktif Timeout memungkinkan Anda menentukan lama waktu untuk menunggu kejadian sebelum menutup koneksi. Ini mengambil bentuk berikut:

Timeout time

time ditentukan dalam hitungan detik. Opsi baku adalah 60.

Contoh 65. Menggunakan direktif Timeout
Timeout 60
TypesConfig

TypesConfig memungkinkan Anda menentukan lokasi berkas konfigurasi jenis MIME. Ini mengambil bentuk berikut:

TypesConfig path

path mengacu pada berkas konfigurasi jenis MIME yang ada, dan dapat bersifat absolut, atau relatif terhadap direktori yang ditentukan oleh direktif ServerRoot (yaitu, /etc/httpd/ secara baku). Opsi baku adalah /etc/mime.types.

Perhatikan bahwa alih-alih mengedit /etc/mime.types, cara yang disarankan untuk menambahkan pemetaan tipe MIME ke Server HTTP Apache adalah dengan menggunakan direktif AddType.

Contoh 66. Menggunakan direktif TypesConfig
TypesConfig /etc/mime.types
UseCanonicalName

UseCanonicalName memungkinkan Anda menentukan cara server merujuk pada dirinya sendiri. Ini mengambil bentuk berikut:

UseCanonicalName option

option harus berupa kata kunci yang valid seperti yang dijelaskan dalam Opsi UseCanonicalName yang tersedia. Opsi baku adalah Off.

Tabel 19. Opsi UseCanonicalName yang tersedia
Opsi Deskripsi

On

Memungkinkan penggunaan nama yang ditentukan oleh direktif ServerName.

Off

Menonaktifkan penggunaan nama yang ditentukan oleh direktif ServerName. Nama host dan nomor port yang disediakan oleh klien yang meminta digunakan sebagai gantinya.

DNS

Menonaktifkan penggunaan nama yang ditentukan oleh direktif ServerName. Nama host yang ditentukan oleh pencarian DNS balik digunakan sebagai gantinya.

Contoh 67. Menggunakan direktif UseCanonicalName
UseCanonicalName Off
User

Direktif User memungkinkan Anda untuk menentukan pengguna di mana layanan httpd akan berjalan. Ini mengambil bentuk berikut:

User user

user harus berupa pengguna UNIX yang ada. Opsi baku adalah apache.

Untuk alasan keamanan, layanan httpd tidak boleh dijalankan dengan hak istimewa root. Perhatikan bahwa User tidak lagi didukung di dalam <VirtualHost>, dan telah digantikan oleh direktif SuexecUserGroup.

Contoh 68. Menggunakan direktif User
User apache
UserDir

Direktif [option] UserDir memungkinkan Anda untuk mengaktifkan penayangan konten dari direktori beranda pengguna. Ini mengambil bentuk berikut:

UserDir option

option dapat berupa nama direktori yang harus dicari di direktori home pengguna (biasanya public_html), atau kata kunci yang valid seperti yang dijelaskan dalam Opsi UserDir yang tersedia. Opsi baku adalah disabled.

Tabel 20. Opsi UserDir yang tersedia
Opsi Deskripsi

enabled user

Memungkinkan penayangan konten dari direktori rumah dari user yang diberikan.

disabled user

Menonaktifkan penayangan konten dari direktori rumah, baik untuk semua pengguna, atau, jika daftar user yang dipisah spasi disediakan, hanya untuk pengguna tertentu.

Mengatur izin yang benar

Agar server web dapat mengakses konten, izin pada direktori dan berkas yang relevan harus diatur dengan benar. Pastikan bahwa semua pengguna dapat mengakses direktori home, dan bahwa mereka dapat mengakses dan membaca konten direktori yang ditentukan oleh direktif UserDir. Misalnya, untuk mengizinkan akses ke public_html/ di direktori home pengguna joe, ketik berikut ini pada prompt shell sebagai root:

~]# chmod a+x /home/joe/
~]# chmod a+rx /home/joe/public_html/

Semua berkas dalam direktori ini harus diatur sesuai dengan itu.

Contoh 69. Menggunakan direktif UserDir
UserDir public_html
Common ssl.conf Directives

Direktif Secure Sockets Layer (SSL) memungkinkan Anda untuk menyesuaikan perilaku Server Aman HTTP Apache, dan dalam banyak kasus, mereka dikonfigurasi dengan tepat selama instalasi. Berhati-hatilah saat mengubah pengaturan ini, karena konfigurasi yang salah dapat menyebabkan kerentanan keamanan. Direktif berikut biasanya digunakan dalam /etc/httpd/conf.d/ssl.conf:

SetEnvIf

Direktif SetEnvIf memungkinkan Anda untuk mengatur variabel lingkungan berdasarkan header koneksi yang masuk. Ini mengambil bentuk berikut:

SetEnvIf option pattern !variable=value

option dapat berupa bidang header HTTP, nama variabel lingkungan yang ditentukan sebelumnya, atau kata kunci yang valid seperti yang dijelaskan dalam Opsi SetEnvIf yang tersedia. pattern adalah ekspresi biasa. variable adalah variabel lingkungan yang diatur ketika opsi cocok dengan pola. Jika tanda seru opsional (yaitu, !) ada, variabel akan dihapus alih-alih diatur.

Tabel 21. Opsi SetEnvIf yang tersedia
Opsi Deskripsi

Remote_Host

Mengacu pada nama host klien.

Remote_Addr

Mengacu pada alamat IP klien.

Server_Addr

Mengacu pada alamat IP server.

Request_Method

Mengacu pada metode permintaan (misalnya, GET).

Request_Protocol

Mengacu pada nama dan versi protokol (misalnya, HTTP/1.1).

Request_URI

Mengacu pada sumber daya yang diminta.

Direktif SetEnvIf digunakan untuk menonaktifkan keepalive HTTP, dan untuk memungkinkan SSL menutup koneksi tanpa pemberitahuan penutupan dari peramban klien. Ini diperlukan untuk peramban web tertentu yang tidak andal mematikan koneksi SSL.

Contoh 70. Menggunakan direktif SetEnvIf
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

Perhatikan bahwa agar berkas /etc/httpd/conf.d/ssl.conf ada, mod_ssl perlu dipasang. Lihat Menyiapkan Server SSL untuk informasi lebih lanjut tentang cara memasang dan mengonfigurasi server SSL.

Common Multi-Processing Module Directives

Direktif Multi-Processing Module (MPM) memungkinkan Anda menyesuaikan perilaku kumpulan server khusus MPM tertentu. Karena karakteristiknya berbeda tergantung pada MPM mana yang digunakan, direktif tertanam dalam IfModule. Secara baku, kumpulan server didefinisikan untuk MPM prefork dan worker. Direktif MPM berikut biasanya digunakan dalam /etc/httpd/conf/httpd.conf:

MaxClients

Direktif MaxClients memungkinkan Anda menentukan jumlah maksimum klien yang terhubung secara bersamaan untuk diproses pada satu waktu. Ini mengambil bentuk berikut:

MaxClients number

number yang tinggi dapat meningkatkan kinerja server, meskipun tidak disarankan untuk melebihi 256 saat menggunakan MPM prefork.

Contoh 71. Menggunakan direktif MaxClients
MaxClients 256
MaxRequestsPerChild

Direktif MaxRequestsPerChild memungkinkan Anda menentukan jumlah maksimum permintaan yang dapat dilayani oleh proses turunan sebelum mati. Ini mengambil bentuk berikut:

MaxRequestsPerChild number

Mengatur number ke 0 memungkinkan jumlah permintaan yang tidak terbatas.

Direktif [option] MaxRequestsPerChild digunakan untuk mencegah proses berumur panjang menyebabkan kebocoran memori.

Contoh 72. Menggunakan direktif MaxRequestsPerChild
MaxRequestsPerChild 4000
MaxSpareServers

Direktif MaxSpareServers memungkinkan Anda menentukan jumlah maksimum proses anak cadangan. Ini mengambil bentuk berikut:

MaxSpareServers number

Direktif ini hanya digunakan oleh MPM prefork.

Contoh 73. Menggunakan direktif MaxSpareServers
MaxSpareServers 20
MaxSpareThreads

Direktif MaxSpareThreads memungkinkan Anda menentukan jumlah maksimum utas server cadangan. Ini mengambil bentuk berikut:

MaxSpareThreads number

number harus lebih besar dari atau sama dengan jumlah MinSpareThreads dan ThreadsPerChild. Direktif ini hanya digunakan oleh MPM worker.

Contoh 74. Menggunakan direktif MaxSpareThreads
MaxSpareThreads 75
MinSpareServers

MinSpareServers direktif memungkinkan Anda untuk menentukan jumlah minimum proses anak cadangan. Ini mengambil bentuk berikut:

MinSpareServers number

Perhatikan bahwa number yang tinggi dapat membuat beban pemrosesan yang berat di server. Direktif ini hanya digunakan oleh MPM prefork.

Contoh 75. Menggunakan direktif MinSpareServers
MinSpareServers 5
MinSpareThreads

Direktif MinSpareThreads memungkinkan Anda menentukan jumlah minimum thread server cadangan. Ini mengambil bentuk berikut:

MinSpareThreads number

Direktif ini hanya digunakan oleh MPM worker.

Contoh 76. Menggunakan direktif MinSpareThreads
MinSpareThreads 75
StartServers

Direktif StartServers memungkinkan Anda menentukan jumlah proses anak yang akan dibuat saat layanan dimulai. Ini mengambil bentuk berikut:

StartServers number

Karena proses anak dibuat dan dihentikan secara dinamis sesuai dengan beban lalu lintas saat ini, biasanya tidak perlu mengubah nilai ini.

Contoh 77. Menggunakan direktif StartServers
StartServers 8
ThreadsPerChild

Direktif ThreadsPerChild memungkinkan Anda menentukan jumlah thread yang dapat dibuat oleh proses anak. Ini mengambil bentuk berikut:

ThreadsPerChild number

Direktif ini hanya digunakan oleh MPM worker.

Contoh 78. Menggunakan direktif ThreadsPerChild
ThreadsPerChild 25
Bekerja dengan Modul

Karena merupakan aplikasi modular, layanan httpd didistribusikan bersama dengan sejumlah Dynamic Shared Objects (DSOs), yang dapat dimuat atau dibongkar secara dinamis saat runtime seperlunya. Secara baku, modul-modul ini terletak di /usr/lib/httpd/modules/ pada 32-bit dan di /usr/lib64/httpd/modules/ pada sistem 64-bit.

Loading a Module To load a particular DSO module, use the LoadModule directive as described in Common httpd.conf Directives. Note that modules provided by a separate package often have their own configuration file in the /etc/httpd/conf.d/ directory.
Contoh 79. Memuat DSO mod_ssl
LoadModule ssl_module modules/mod_ssl.so

Setelah Anda selesai, restart server web untuk memuat ulang konfigurasi. Lihat Memulai Ulang Layanan untuk informasi lebih lanjut tentang cara memulai ulang layanan httpd.

Writing a Module If you intend to create a new DSO module, make sure you have the httpd-devel package installed. To do so, enter the following command as root:
~]# dnf install httpd-devel

Paket ini berisi berkas include, berkas header, dan utilitas APache eXtenSion (apxs) yang diperlukan untuk mengkompilasi modul.

Setelah ditulis, Anda dapat membuat modul dengan perintah berikut:

~]# apxs -i -a -c module_name.c

Jika build berhasil, Anda harus dapat memuat modul dengan cara yang sama seperti modul lain yang didistribusikan dengan Server HTTP Apache.

Menyiapkan Host Virtual

Hosting virtual bawaan Server HTTP Apache memungkinkan server untuk memberikan informasi yang berbeda berdasarkan alamat IP, nama host, atau port mana yang diminta.

Untuk membuat host virtual berbasis nama, salin contoh berkas konfigurasi /usr/share/doc/httpd-VERSION/httpd-vhosts.conf ke direktori /etc/httpd/conf.d/, dan ganti nilai placeholder @@Port@@ dan @@ServerRoot@@. Sesuaikan opsi sesuai dengan kebutuhan Anda seperti yang ditunjukkan dalam Contoh konfigurasi host virtual.

Contoh 80. Contoh konfigurasi host virtual
<VirtualHost *:80>
    ServerAdmin webmaster@penguin.example.com
    DocumentRoot "/www/docs/penguin.example.com"
    ServerName penguin.example.com
    ServerAlias www.penguin.example.com
    ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
    CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>

Perhatikan bahwa ServerName harus berupa nama DNS yang valid yang ditetapkan ke komputer. Kontainer <VirtualHost> sangat dapat disesuaikan, dan menerima sebagian besar direktif yang tersedia dalam konfigurasi server utama. Direktif yang tidak didukung dalam kontainer ini termasuk User dan Group, yang digantikan oleh SuexecUserGroup.

Mengubah nomor port

Jika Anda mengonfigurasi host virtual untuk mendengarkan pada port non-baku, pastikan Anda memperbarui direktif Listen di bagian pengaturan global pada berkas /etc/httpd/conf/httpd.conf yang sesuai.

Untuk mengaktifkan host virtual yang baru dibuat, server web harus dimulai ulang terlebih dahulu. Lihat Memulai Ulang Layanan untuk informasi lebih lanjut tentang cara memulai ulang layanan httpd.

Menyiapkan Server SSL

Secure Sockets Layer (SSL) adalah protokol kriptografi yang memungkinkan server dan klien untuk berkomunikasi dengan aman. Seiring dengan versi yang diperluas dan ditingkatkan yang disebut Transport Layer Security (TLS), ini memastikan privasi dan integritas data. Server HTTP Apache dalam kombinasi dengan mod_ssl, modul yang menggunakan toolkit OpenSSL untuk menyediakan dukungan SSL/TLS, umumnya disebut sebagai SSL server.

Tidak seperti koneksi HTTP biasa yang dapat dibaca dan mungkin dimodifikasi oleh siapa saja yang dapat mencegatnya, penggunaan mod_ssl mencegah inspeksi atau modifikasi konten yang ditransmisikan. Bagian ini menyediakan informasi dasar tentang cara mengaktifkan modul ini dalam konfigurasi Server HTTP Apache, dan memandu Anda melalui proses pembuatan kunci pribadi dan sertifikat yang ditandatangani sendiri.

An Overview of Certificates and Security Secure communication is based on the use of keys. In conventional or symmetric cryptography, both ends of the transaction have the same key they can use to decode each other’s transmissions. On the other hand, in public or asymmetric cryptography, two keys co-exist: a private key that is kept a secret, and a public key that is usually shared with the public. While the data encoded with the public key can only be decoded with the private key, data encoded with the private key can in turn only be decoded with the public key. To provide secure communications using SSL, an SSL server must use a digital certificate signed by a Certificate Authority (CA). The certificate lists various attributes of the server (that is, the server host name, the name of the company, its location, etc.), and the signature produced using the CA’s private key. This signature ensures that a particular certificate authority has signed the certificate, and that the certificate has not been modified in any way.

Ketika peramban web membuat koneksi SSL baru, ia memeriksa sertifikat yang disediakan oleh server web. Jika sertifikat tidak memiliki tanda tangan dari CA tepercaya, atau jika nama host yang tercantum dalam sertifikat tidak cocok dengan nama host yang digunakan untuk membuat koneksi, sertifikat menolak untuk berkomunikasi dengan server dan biasanya menyajikan pesan kesalahan yang sesuai kepada pengguna.

Secara baku, sebagian besar peramban web dikonfigurasi untuk mempercayai sekumpulan otoritas sertifikat yang banyak digunakan. Karena itu, CA yang sesuai harus dipilih saat menyiapkan server yang aman, sehingga pengguna target dapat mempercayai koneksi, jika tidak mereka akan disajikan dengan pesan kesalahan, dan harus menerima sertifikat secara manual. Karena mendorong pengguna untuk menimpa kesalahan sertifikat dapat memungkinkan penyerang untuk mencegat koneksi, Anda harus menggunakan CA terpercaya bila memungkinkan. Untuk informasi selengkapnya tentang ini, lihat Informasi tentang daftar CA yang digunakan oleh peramban web umum.

Tabel 22. Informasi tentang daftar CA yang digunakan oleh peramban web umum
Web Browser Link

Mozilla Firefox

Mozilla root CA list.

Opera

Information on root certificates used by Opera.

Internet Explorer

Information on root certificates used by Microsoft Windows.

Chromium

Information on root certificates used by the Chromium project.

Saat menyiapkan server SSL, Anda perlu membuat permintaan sertifikat dan kunci privat, lalu mengirim permintaan sertifikat, bukti identitas perusahaan, dan pembayaran ke otoritas sertifikat. Setelah CA memverifikasi permintaan sertifikat dan identitas Anda, CA akan mengirimi Anda sertifikat bertanda tangan yang dapat Anda gunakan dengan server Anda. Atau, Anda dapat membuat sertifikat yang ditandatangani sendiri yang tidak berisi tanda tangan CA, dan dengan demikian harus digunakan hanya untuk tujuan pengujian.

Enabling the mod_ssl Module

Jika Anda bermaksud untuk mengatur server SSL, pastikan paket mod_ssl (modul mod_ssl) dan openssl (toolkit OpenSSL) terpasang. Untuk melakukannya, berikan perintah berikut sebagai root:

~]# dnf install mod_ssl openssl

Ini akan membuat berkas konfigurasi mod_ssl di /etc/httpd/conf.d/ssl.conf, yang termasuk dalam berkas konfigurasi Server HTTP Apache utama secara baku. Agar modul dimuat, mulai ulang layanan httpd seperti yang dijelaskan dalam Memulai Ulang Layanan.

Karena kerentanan protokol SSL3.0 CVE-2014-3566, yang dijelaskan dalam SSL 3.0 Protocol Vulnerability and POODLE Attack, disarankan untuk menonaktifkan SSL dan hanya menggunakan TLSv1.1 atau TLSv1.2. Kompatibilitas mundur dapat dicapai dengan menggunakan TLSv1.0. Banyak produk memiliki kemampuan untuk menggunakan protokol SSLv2 atau SSLv3, atau mengaktifkannya secara baku. Namun, SSLv2 atau SSLv3 sekarang sangat disarankan untuk tidak dipakai.

Enabling and Disabling SSL and TLS in mod_ssl

To disable and enable specific versions of the SSL and TLS protocol, either do it globally by adding the SSLProtocol directive in the "# SSL Global Context" section of the configuration file and removing it everywhere else, or edit the default entry under " SSL Protocol support" in all "VirtualHost" sections. If you do not specify it in the per-domain VirtualHost section then it will inherit the settings from the global section. To make sure that a protocol version is being disabled the administrator should either only specify SSLProtocol in the "SSL Global Context" section, or specify it in all per-domain VirtualHost sections.

Menonaktifkan SSLv2 dan SSLv3

Untuk menonaktifkan SSL versi 2 dan SSL versi 3, yang menyiratkan mengaktifkan semuanya kecuali SSL versi 2 dan SSL versi 3, di semua bagian VirtualHost, lanjutkan sebagai berikut:

  1. Sebagai root, buka berkas /etc/httpd/conf.d/ssl.conf dan cari semua contoh dari direktif SSLProtocol. Secara baku, berkas konfigurasi berisi satu bagian yang terlihat sebagai berikut:

~]# vi /etc/httpd/conf.d/ssl.conf
#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2

Bagian ini berada di dalam bagian VirtualHost.

  1. Sunting baris SSLProtocol sebagai berikut:

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol All -SSLv2 -SSLv3

Ulangi tindakan ini untuk semua bagian VirtualHost.

  1. Verifikasikan bahwa semua kemunculan direktif SSLProtocol telah diubah sebagai berikut:

~]# grep SSLProtocol /etc/httpd/conf.d/ssl.conf
SSLProtocol all -SSLv2 -SSLv3

Langkah ini sangat penting jika Anda memiliki lebih dari satu bagian VirtualHost baku.

  1. Restart the Apache daemon as follows:

~]# service httpd restart

Perhatikan bahwa setiap sesi akan diinterupsi.

Using an Existing Key and Certificate If you have a previously created key and certificate, you can configure the SSL server to use these files instead of generating new ones. There are only two situations where this is not possible:
  1. Anda mengubah alamat IP atau nama domain.

Sertifikat dikeluarkan untuk alamat IP dan pasangan nama domain tertentu. Jika salah satu nilai ini berubah, sertifikat berupa tidak valid.

  1. Anda memiliki sertifikat dari VeriSign, dan Anda mengubah perangkat lunak server.

VeriSign, otoritas sertifikat yang banyak digunakan, mengeluarkan sertifikat untuk produk perangkat lunak tertentu, alamat IP, dan nama domain. Mengubah produk perangkat lunak membuat sertifikat tidak valid.

In either of the above cases, you will need to obtain a new certificate. For more information on this topic, see Generating a New Key and Certificate.

Jika Anda ingin menggunakan kunci dan sertifikat yang ada, pindahkan berkas yang relevan masing-masing ke direktori /etc/pki/tls/private/ dan /etc/pki/tls/certs/. Anda dapat melakukannya dengan memberikan perintah berikut sebagai root:

~]# mv key_file.key /etc/pki/tls/private/hostname.key
~]# mv certificate.crt /etc/pki/tls/certs/hostname.crt

Kemudian tambahkan baris berikut ke berkas konfigurasi /etc/httpd/conf.d/ssl.conf:

SSLCertificateFile /etc/pki/tls/certs/hostname.crt
SSLCertificateKeyFile /etc/pki/tls/private/hostname.key

Untuk memuat konfigurasi yang diperbarui, mulai ulang layanan httpd seperti yang dijelaskan dalam Memulai Ulang Layanan.

Contoh 81. Menggunakan kunci dan sertifikat dari Red Hat Secure Web Server
~]# mv /etc/httpd/conf/httpsd.key /etc/pki/tls/private/penguin.example.com.key
~]# mv /etc/httpd/conf/httpsd.crt /etc/pki/tls/certs/penguin.example.com.crt
Generating a New Key and Certificate In order to generate a new key and certificate pair, the crypto-utils package must be installed on the system. To install it, enter the following command as root:
~]# dnf install crypto-utils

This package provides a set of tools to generate and manage SSL certificates and private keys, and includes genkey, the Red Hat Keypair Generation utility that will guide you through the key generation process.

Replacing an existing certificate

If the server already has a valid certificate and you are replacing it with a new one, specify a different serial number. This ensures that client browsers are notified of this change, update to this new certificate as expected, and do not fail to access the page. To create a new certificate with a custom serial number, use the following command instead of genkey:

~]# openssl req -x509 -new -set_serial number -key hostname.key -out hostname.crt
Remove a previously created key

If there already is a key file for a particular host name in your system, genkey will refuse to start. In this case, remove the existing file using the following command as root:

~]# rm /etc/pki/tls/private/hostname.key

To run the utility enter the genkey command as root, followed by the appropriate host name (for example, penguin.example.com):

~]# genkey hostname

To complete the key and certificate creation, take the following steps:

  1. Review the target locations in which the key and certificate will be stored.

Running the genkey utility
Gambar 1. Running the genkey utility

Use the Tab key to select the Next button, and press Enter to proceed to the next screen.

  1. Using the up and down arrow keys, select a suitable key size. Note that while a larger key increases the security, it also increases the response time of your server. The NIST recommends using 2048 bits. See NIST Special Publication 800-131A Revision 1.

Selecting the key size
Gambar 2. Selecting the key size

Once finished, use the Tab key to select the Next button, and press Enter to initiate the random bits generation process. Depending on the selected key size, this may take some time.

  1. Decide whether you want to send a certificate request to a certificate authority.

Generating a certificate request
Gambar 3. Generating a certificate request

Use the Tab key to select Yes to compose a certificate request, or No to generate a self-signed certificate. Then press Enter to confirm your choice.

  1. Using the Spacebar key, enable ([*]) or disable ([ ]) the encryption of the private key.

Encrypting the private key
Gambar 4. Encrypting the private key

Use the Tab key to select the Next button, and press Enter to proceed to the next screen.

  1. If you have enabled the private key encryption, enter an adequate passphrase. Note that for security reasons, it is not displayed as you type, and it must be at least five characters long.

Entering a passphrase
Gambar 5. Entering a passphrase

Use the Tab key to select the Next button, and press Enter to proceed to the next screen.

Do not forget the passphrase

Entering the correct passphrase is required in order for the server to start. If you lose it, you will need to generate a new key and certificate.

  1. Customize the certificate details.

Specifying certificate information
Gambar 6. Specifying certificate information

Use the Tab key to select the Next button, and press Enter to finish the key generation.

  1. If you have previously enabled the certificate request generation, you will be prompted to send it to a certificate authority.

Instructions on how to send a certificate request
Gambar 7. Instructions on how to send a certificate request

Press Enter to return to a shell prompt.

Once generated, add the key and certificate locations to the /etc/httpd/conf.d/ssl.conf configuration file:

SSLCertificateFile /etc/pki/tls/certs/hostname.crt
SSLCertificateKeyFile /etc/pki/tls/private/hostname.key

Finally, restart the httpd service as described in Restarting the Service, so that the updated configuration is loaded.

Sumber Daya Tambahan

Untuk mempelajari selengkapnya tentang Server HTTP Apache, lihat sumber daya berikut ini.

Dokumentasi Terpasang
  • httpd(8) — Halaman manual untuk layanan httpd yang berisi daftar lengkap opsi baris perintahnya.

  • genkey(1) — The manual page for genkey utility, provided by the crypto-utils package.

  • apachectl(8) — Halaman manual untuk Antarmuka Kontrol Server HTTP Apache.

Dokumentasi yang Dapat Dipasang
  • http://localhost/manual/ — Dokumentasi resmi untuk Server HTTP Apache dengan deskripsi lengkap tentang direktif dan modul yang tersedia. Perhatikan bahwa untuk mengakses dokumentasi ini, Anda harus memasang paket httpd-manual, dan server web harus berjalan.

Sebelum mengakses dokumentasi, berikan perintah berikut sebagai root:

~]# dnf install httpd-manual
~]# apachectl graceful
Dokumentasi Daring
  • http://httpd.apache.org/ — The official website for the Apache HTTP Server with documentation on all the directives and default modules.

  • ulink url="http://www.modssl.org/" /> — The official website for the mod_ssl module.

  • http://www.openssl.org/ — The OpenSSL home page containing further documentation, frequently asked questions, links to the mailing lists, and other useful resources.