httpd.conf: Основной файл конфигурации

Это основной файл конфигурации для сервера Apache HTTP. Он управляет настройками сервера и находится в conf каталоге установки Apache. Например:

ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin you@example.com
<Directory "/var/www/html">
    AllowOverride None
    Require all granted
</Directory>

В приведенном выше фрагменте «ServerRoot» определяет каталог, в котором находятся файлы, специфичные для сервера, такие как файлы журналов и конфигурации. «Listen» определяет порт, который прослушивает Apache, а «ServerAdmin» устанавливает контактный адрес электронной почты для сообщений об ошибках сервера.

Разделы конфигурации

Файл httpd.confсодержит несколько разделов, и т. д. Эти разделы применяют директивы конфигурации к определенным каталогам, файлам или URL-адресам. Например:

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Приведенный выше раздел управляет поведением сервера при обработке запросов по указанному пути к каталогу.

Загрузка модуля Модули расширяют функциональность Apache. Вы можете загружать модули с помощью директивы 'LoadModule' в файле httpd.conf:

LoadModule authz_core_module modules/mod_authz_core.so

Здесь:

  • LoadModule: Это директива, используемая в файлах конфигурации Apache для загрузки модуля во время процесса запуска.
  • authz_core_module: Это идентификатор модуля authz_core. Этот модуль предоставляет основные возможности авторизации для Apache, позволяя вам контролировать доступ к ресурсам веб-сайта на основе характеристик запроса, таких как учетные данные пользователя или IP-адрес.
  • modules/mod_authz_core.so: Это указывает путь к файлу общего объекта модуля ( ) относительно корня сервера. Этот файл является фактическим скомпилированным кодом для модуля .mod_authz_core.so

httpd-vhosts.conf: Управление виртуальными хостами

Виртуальные хосты позволяют размещать несколько веб-сайтов на одном сервере. Конфигурация виртуальных хостов обычно находится в, в подкаталоге внутри ‘conf’. Пример настройки виртуального хоста выглядит следующим образом:httpd-vhosts.confextra

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot "/var/www/example.com"
    ErrorLog "logs/example.com-error_log"
    CustomLog "logs/example.com-access_log" common
    # Other directives might go here
</VirtualHost>

В данном контексте:

  • <VirtualHost *:80>: Эта строка начинает определение виртуального хоста на порту 80 (стандартный порт для HTTP). Звездочка *означает, что виртуальный хост прослушивает все доступные IP-адреса.
  • ServerName: Указывает базовый домен для виртуального хоста.
  • ServerAlias: Определяет дополнительные имена, которые должны совпадать, как если бы они были базовым именем.
  • DocumentRoot: Устанавливает каталог, из которого Apache будет обслуживать файлы для этого хоста.
  • ErrorLogи CustomLog: Настройте расположение и форматы файлов журнала.

Имена и порты

Вы можете указать уникальный ‘ServerName’ для каждого виртуального хоста, наряду с ‘ServerAlias’, который допускает альтернативные имена. ‘DocumentRoot’ определяет каталог, из которого Apache будет обслуживать файлы для этого хоста.

httpd-ssl.conf: Настройка SSL/TLS

Обеспечение безопасности передачи данных через Интернет имеет решающее значение, поэтому необходимо настроить HTTPS через SSL/TLS. Это в первую очередь обрабатывается , часто расположенным в том же подкаталоге «extra», где находится «httpd-vhosts.conf». Пример фрагмента для защищенного виртуального хоста может включать:httpd-ssl.conf

<VirtualHost *:443>
    ServerName www.secure-example.com
    DocumentRoot "/var/www/secure-example.com"

    SSLEngine on
    SSLCertificateFile "/path/to/secure-example.com.crt"
    SSLCertificateKeyFile "/path/to/secure-example.com.key"
    # Include the SSLCertificateChainFile only if your certificate provider requires it
    # SSLCertificateChainFile "/path/to/secure-example.com.chain.pem"
    
    # Other directives might go here, like custom log files, server aliases, etc.
</VirtualHost>

Ключевые моменты:

  • <VirtualHost *:443>: Указывает, что этот виртуальный хост прослушивает все интерфейсы ( *) на порту 443, который является стандартным портом для HTTPS.
  • SSLEngine on: Включает SSL/TLS для этого виртуального хоста.
  • SSLCertificateFileи SSLCertificateKeyFile: Эти директивы указывают на ваш SSL-сертификат и файлы закрытого ключа соответственно.
  • SSLCertificateChainFile(необязательно): Если ваш поставщик SSL предоставил вам файл цепочки (иногда называемый промежуточным сертификатом), вам следует включить его. Обратите внимание, что в Apache 2.4.8 и более поздних версиях эта SSLCertificateChainFileдиректива устарела, и вместо этого вы можете объединить сертификаты цепочки в конец файла сертификата сервера. Не забудьте заменить пути к сертификату и ключу на фактические пути, где хранятся ваши файлы SSL. После обновления конфигурации всегда проверяйте синтаксис apachectl configtestи перезапускайте Apache, чтобы применить изменения. Кроме того, убедитесь, что настройки брандмауэра и группы безопасности (если применимо) разрешают трафик через порт 443.

Заключение

Понимание файлов конфигурации Apache HTTP-сервера по умолчанию является ключом к управлению успешной настройкой веб-сервера. Начните с ознакомления с синтаксисом и структурой каждого файла, настраивая его в соответствии с конкретными требованиями вашего сервера. Эффективная конфигурация обеспечивает высокую производительность, безопасность и возможность обработки нескольких сайтов с различными потребностями.

Обратите внимание, что после внесения любых изменений в эти файлы конфигурации вам нужно будет перезапустить сервер Apache, чтобы изменения вступили в силу. Всегда помните о необходимости резервного копирования текущих файлов конфигурации перед внесением любых изменений, чтобы избежать простоя из-за непредвиденных ошибок.