Все подряд О чем здесь

Конфигурация Apache 2.4

По умолчанию конфигурация Apache 2.4 разбита на пачку файлов. Тут я рассмотрю стандартный конфиг и снабжу его русскими комментариями.

Базовый конфиг

Максимально упростим и по-русски откомментируем основной файл конфига /etc/httpd/conf/httpd.conf

#Корневая директория Apache ServerRoot "/etc/httpd" #Порт который будет "слушать" сервер. В случае использования Apache "за nginx" нужно указать отличное от "80" значение Listen 8080 #Подключаем все .conf-файлы из поддиректории conf.modules.d Include conf.modules.d/*.conf #Пользователь и группа с которыми запускается сервер User apache Group apache #Дефолтный конфиг под все директории AllowOverride none #Указание дефолтной директории при доступе с "внешки" (можно переопределять на конфигах виртуальных серверов) DocumentRoot "/var/www/empty" #Порядок поиска индексных файлов DirectoryIndex index.html index.php Require all denied #Путь к error_log ErrorLog "logs/error_log" #Уровень логгирования LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog "logs/access_log" combined AddDefaultCharset UTF-8 EnableSendfile on TypesConfig /etc/mime.types #Дополнительные файлы конфигурации IncludeOptional conf.d/*.conf

Дополнительно подгружаемые модули Apache

Разберемся с подгружаемыми модулями. Листинг /etc/httpd/conf.modules.d/00-base.conf с русскими комментариями выглядит так.

#Отвечает за возможность использования директив Allow и Deny в расширенном синтаксисе #Allow from all|host|env=[!]env-variable [host|env=[!]env-variable] #LoadModule access_compat_module modules/mod_access_compat.so #Позволяет связать запрошенный клиентом mime-тип c cgi-скриптом #Action action-type cgi-script [virtual] #LoadModule actions_module modules/mod_actions.so #Позволяет использовать синтаксис Alias #Alias URL-path file-path|directory-path LoadModule alias_module modules/mod_alias.so #Позволяет явно указать поддерживаемые сервером HTTP-методы #AllowMethods GET POST OPTIONS LoadModule allowmethods_module modules/mod_allowmethods.so #Модули авторизации #LoadModule auth_basic_module modules/mod_auth_basic.so #LoadModule auth_digest_module modules/mod_auth_digest.so #LoadModule authn_anon_module modules/mod_authn_anon.so LoadModule authn_core_module modules/mod_authn_core.so #LoadModule authn_dbd_module modules/mod_authn_dbd.so #LoadModule authn_dbm_module modules/mod_authn_dbm.so #LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authn_socache_module modules/mod_authn_socache.so LoadModule authz_core_module modules/mod_authz_core.so #LoadModule authz_dbd_module modules/mod_authz_dbd.so #LoadModule authz_dbm_module modules/mod_authz_dbm.so #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so #LoadModule authz_host_module modules/mod_authz_host.so #LoadModule authz_owner_module modules/mod_authz_owner.so #LoadModule authz_user_module modules/mod_authz_user.so #Позволяет использовать директивы индексации директорий #LoadModule autoindex_module modules/mod_autoindex.so #Позволяет управлять кешированием #LoadModule cache_module modules/mod_cache.so #LoadModule cache_disk_module modules/mod_cache_disk.so #Позволяет преобразовавать ответ сервера в RFC2397 data URL #LoadModule data_module modules/mod_data.so #Позволяет управлять подключениями к базам данных. Подбробнее можно найти по ключевому слову APR LoadModule dbd_module modules/mod_dbd.so #Управляет сжатием отправляемого контеннта LoadModule deflate_module modules/mod_deflate.so #Позволяет использовать директиву DirectoryIndex для автоматической подстановки файла "по умолчанию" на запросы без файла LoadModule dir_module modules/mod_dir.so #Позволяет логгировать io-дамп в error_log #LoadModule dumpio_module modules/mod_dumpio.so #Позволяет использовать Echo-протокол #ProtocolEcho On|Off #LoadModule echo_module modules/mod_echo.so #Позволяет устанавливаеть дополнительные переменные окружения в исполняемые скрипты #LoadModule env_module modules/mod_env.so #Позволяет управлять http-заголовками Expires и Cache-Control #LoadModule expires_module modules/mod_expires.so #Позволяет ответ сервера перенаправить через сторонние приложения #LoadModule ext_filter_module modules/mod_ext_filter.so #Позволяет управлять фильтрацией отправляемых данных #LoadModule filter_module modules/mod_filter.so #Позволяет отправлять кастомные заголовки клиенту #LoadModule headers_module modules/mod_headers.so #Позволяет настраивать server-side вставки сторонних файлов в отправялемые данные #LoadModule include_module modules/mod_include.so #Позволяет настроить генерацию server-info #LoadModule info_module modules/mod_info.so #Позволяет вести логгирование запросов и ошибок LoadModule log_config_module modules/mod_log_config.so #Позволяет логгировать так же информацию об объемах принятой/отправленной информации LoadModule logio_module modules/mod_logio.so #Позволяет использовать директиву MimeMagicFile LoadModule mime_magic_module modules/mod_mime_magic.so #Позволяет соотносить запрошенные типы файлов/контента с server-side хэндлерами, фильтрами, файлами и типами контента LoadModule mime_module modules/mod_mime.so #Позволяет управлять отображением различных видов одного файла в зависимости от входящего запроса (например, при реализации мультиязычности) #LoadModule negotiation_module modules/mod_negotiation.so #Предназначет для переопределения клиентского IP в случае если apache используется за другим front-сервером LoadModule remoteip_module modules/mod_remoteip.so #Позволяет установить таймауты для генерации ответов клиенту #RequestReadTimeout [header=timeout[-maxtimeout][,MinRate=rate] [body=timeout[-maxtimeout][,MinRate=rate] #LoadModule reqtimeout_module modules/mod_reqtimeout.so #Позволяет использвать Rewrite-движок. Необходим для большинства MVC-фреймворков LoadModule rewrite_module modules/mod_rewrite.so #Позволяет устанавливать переменные окружения в зависимости от характеристик запроса #LoadModule setenvif_module modules/mod_setenvif.so #Memory-провайдеры #LoadModule slotmem_plain_module modules/mod_slotmem_plain.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so #socache-провайдеры #LoadModule socache_dbm_module modules/mod_socache_dbm.so #LoadModule socache_memcache_module modules/mod_socache_memcache.so #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so #Позволяет настроить выдачу информации о статусе и текущей производительности сервера #LoadModule status_module modules/mod_status.so #Позволяет производить операции на отправляемых данных во время отправки #LoadModule substitute_module modules/mod_substitute.so #Позволяет выполнять CGI-скрипты от имени определенного пользователя #LoadModule suexec_module modules/mod_suexec.so #Позволяет задавать уникальный ID каждому реквесту #LoadModule unique_id_module modules/mod_unique_id.so #Позволяет управлять некоторыми вопросами в области unix-безопасности LoadModule unixd_module modules/mod_unixd.so #Позволяет задавать директории для работы определенных пользоваталей #LoadModule userdir_module modules/mod_userdir.so #Позволяет организовывать различные конфиги Apache в зависимости от версии Apache #LoadModule version_module modules/mod_version.so #Позволяет создавать динамически конфигурируемый виртуальный хостинг #LoadModule vhost_alias_module modules/mod_vhost_alias.so #Управляет буфферизацией ##LoadModule buffer_module modules/mod_buffer.so #Позволяет управлять периодической проверкой работы других модулей #LoadModule watchdog_module modules/mod_watchdog.so #Управляет автоматической отправкой отчетности о состоянии сервера #LoadModule heartbeat_module modules/mod_heartbeat.so #LoadModule heartmonitor_module modules/mod_heartmonitor.so #Позволяет настраивать мониторинг "сервинга" сайта пользователем с помощью кук #LoadModule usertrack_module modules/mod_usertrack.so #Позволяет настроить отдачу контента со скоростью различных старых стандартов модемов #LoadModule dialup_module modules/mod_dialup.so #Позволяет легко настроить трансляцию отправляемых данных в нужную кодировку #LoadModule charset_lite_module modules/mod_charset_lite.so #Позволяет сконфигурировать debug-log #LoadModule log_debug_module modules/mod_log_debug.so #Позволяет ограничить скорость отдачи данных для некоторых видов запросов #LoadModule ratelimit_module modules/mod_ratelimit.so #Позволяет настроить отдачу запроса обратно клиенту с использованием некоторых фильтров #LoadModule reflector_module modules/mod_reflector.so #Позволяет задавать максимальный размер тела запроса #LoadModule request_module modules/mod_request.so #Позволяет фильтровать входящие запросы и исходящие ответы с помощью sed-синтаксиса #LoadModule sed_module modules/mod_sed.so #Позволяет настраивать реакцию сервера на неверные адреса (например отключать case-sensitive) #LoadModule speling_module modules/mod_speling.so

Здесь и далее он представлен в таком виде в котором использую его лично я - все лишние модули я просто убрал.

Файл конфига 00-dav.conf отвечает за модули авторизации. Еслми пользуетесь php-методами авторизации - можно смело все комментировать или удалить файл.

Файл 00-lua.conf содержит модули отвечающие за работу lua-скриптов в конфигах. Если не используете - можно комментировать или удалить файл целиком.

00-mpm.conf содержит подгрузку модулей, отвечающих за процессинг запросов.

00-systemmd.conf подгружает модуль для правильной работы с systemctl операционной системы.

00-proxy.conf содержит модули про проксирование. Если вы не используете apache-проксиование (например, у вас для фронт используется nginx) - то так же можно комментировать/удалять этот файл.

01-cgi.conf подгружает модули обработки cgi-скриптов. Если вы их не используете - и этот файл можно закомментировать/удалить.

Дополнительные подгружаемые Apache файлы:

Виртуальные хосты

Теперь, наконец, можно настроить виртуальные хосты.

Создадим папку куда будем складывать конфиги виртуальных хостов.

mkdir /etc/httpd/conf.vhosts.d

Создадим там файл domain.com.conf и внесем в него такую заготовку.

DocumentRoot /var/www/sites/domain.com ServerName domain.com ServerAlias www.domain.com ErrorLog /var/www/sites/domain.com/logs/error_log CustomLog /var/www/sites/domain.com/logs/access_log combined Options FollowSymLinks AllowOverride All

Ваш сайт должен лежать в директории /var/www/sites/domain.com.

Осталось добавить строчку Include conf.vhosts.d/*.conf в файл /etc/httpd/conf/httpd.conf и перезапустить httpd.

Файлов виртуальных хостов можно добавить сколько угодно - все они будут подтягиваться автоматически при рестарта сервиса.

Apache готов к работе.