/etc/httpd/conf/httpd.conf, /etc/httpd/conf.modules.d, /etc/httpd/conf.d
The main configuration file for the httpd daemon is /etc/httpd/conf/httpd.conf. The syntax of this file is described at https://httpd.apache.org/docs/2.4/configuring.html, and the full set of available directives is listed at https://httpd.apache.org/docs/2.4/mod/directives.html.
The main configuration file (httpd.conf) sets up various defaults and includes configuration files from two directories - /etc/httpd/conf.modules.d and /etc/httpd/conf.d. Packages containing loadable modules (like mod_ssl.so) place files in the conf.modules.d directory with the appropriate LoadModule directive so that module is loaded by default.
Some notable configured defaults are:
- DocumentRoot /var/www/html
The default document root from which content is served.
- Listen 80
The daemon listens on TCP port 80.
- ErrorLog "logs/error_log"
Error messages are logged to /var/log/httpd/error_log.
- ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
CGI scripts are served via the URL-path /cgi-bin/.
To remove any of the default configuration provided in separate files covered below, replace that file with an empty file rather than removing it from the filesystem, otherwise it may be restored to the original when the package which provides it is upgraded.
The configuration file at /etc/httpd/conf.modules.d/00-mpm.conf is used to select the multi-processing module (MPM), which governs how httpd divides work between processes and/or threads at run-time. Exactly one LoadModule directive must be uncommented in this file; by default the event MPM is enabled. For more information on MPMs, see https://httpd.apache.org/docs/2.4/mpm.html.
If using the prefork MPM, the "httpd_graceful_shutdown" SELinux boolean should also be enabled, since with this MPM, httpd needs to establish TCP connections to local ports to successfully complete a graceful restart or shutdown. This boolean can be enabled by running the command: semanage boolean -m --on httpd_graceful_shutdown
Module configuration files
Module configuration files are provided in the /etc/httpd/conf.modules.d/ directory. Filenames in this directory are by convention prefixed with two digit numeric prefix to ensure they are processed in the desired order. Core modules provided with the httpd package are loaded by files with a 0x- prefix to ensure these load first. Only filenames with a .conf suffix in this directory will be processed.
Other provided configuration files are listed below.
The set of core modules included with httpd which are all loaded by default.
The set of non-core modules included with httpd which are not loaded by default.
This file loads mod_systemd which is necessary for the correct operation of the httpd.service systemd unit, and should not be removed or disabled.
Other configuration files
Default module configuration files and site-specific configuration files are loaded from the /etc/httpd/conf.d/ directory. Only files with a .conf suffix will be loaded. The following files are provided:
This file gives an example configuration for mod_userdir to map URLs such as http://localhost/~jim/ to /home/jim/public_html/. Userdir mapping is disabled by default.
This file provides the default configuration for mod_autoindex which generates HTML directory listings when enabled. It also makes file icon image files available at the /icons/ URL-path.
This file enables a "welcome page" at http://localhost/ if no content is present in the default documentation root /var/www/html.
- /etc/httpd/conf.d/ssl.conf (present only if mod_ssl is installed)
This file configures a TLS VirtualHost listening on port 443. If the default configuration is used, the referenced test certificate and private key are generated the first time httpd.service is started; see httpd-init.service(8) for more information.
As an alternative to (or in addition to) the httpd.service unit, the instantiated template service httpd@.service unit file can be used, which starts httpd using a different configuration file to the default. For example, systemctl start firstname.lastname@example.org will start httpd using the configuration file /etc/httpd/conf/foobar.conf. See httpd@.service(8) for more information.
/etc/httpd/conf/httpd.conf, /etc/httpd/conf.d, /etc/httpd/conf.modules.d
httpd(8), httpd.service(8), https://httpd.apache.org/docs/2.4/configuring.html, https://httpd.apache.org/docs/2.4/mod/directives.html
Joe Orton <email@example.com>