Премиальное программное обеспечение и практические уроки
Расположение файла конфигурации Apache2.4.41 по умолчанию — /usr/local/apache2/conf/httpd.conf
Начнем с подробного рассмотрения конфигурации различных переменных в httpd.conf.
/usr/local/apache2/conf/httpd.conf, конкретное содержимое файла следующее
# #Это основной файл конфигурации Apache HTTP Server, содержащий исполняемые директивы, необходимые для настройки сервера. #Документация Apache HTTP Server 2.4 доступна по адресу http://httpd.apache.org/docs/2.4/zh-cn. #Примечание: Пожалуйста, посетите страницу «Указатель директив». Все директивы, доступные в стандартной дистрибуции Apache, перечислены по ссылке ниже. Они описаны в единообразном формате и сопровождаются словарем терминов. #http://httpd.apache.org/docs/2.4/zh-cn/mod/directives.html #Предупреждение: Не читайте этот материал, не ознакомившись с материалом по ссылке выше, если вы не понимаете команды настройки. #ServerRoot настраивает имя файла журнала: если вам нужно настроить путь к файлу журнала сервера, начните с «/» (или «drive:/» для Win32), и сервер будет использовать этот явный путь. #Если путь не задан с помощью символа «/», значением ServerRoot будет значение по умолчанию, которое отображается как «logs/access_log». #Установите ServerRoot в «/usr/local/apache2», а расположение журнала на сервере — «/usr/local/apache2/logs/access_log». # #ServerRoot: Расположение HTTP-сервера Apache. Конфигурация сервера, сообщения об ошибках и файлы журналов сохраняются в этом корневом каталоге. #Не добавляйте «/» в конец пути к каталогу. Если вы указываете размещение ServerRoot на нелокальном диске, обязательно добавьте директиву Mutex (при использовании блокировок мьютексов на основе файлов). #Если вы хотите использовать один и тот же ServerRoot для нескольких демонов httpd, необходимо внести изменения в PidFile как минимум в следующем расположении. ServerRoot "/usr/local/apache2" # — расположение HTTP-сервера Apache, установленного в каталоге /usr/local/apache2. TMutex: позволяет настроить механизм мьютекса и каталог для файла мьютекса для отдельного мьютекса, а также изменить глобальное значение по умолчанию. Если мьютекс основан на файле, раскомментируйте и измените каталог, а каталог для файла мьютекса по умолчанию находится не на локальном диске или не подходит по какой-либо другой причине. Значение по умолчанию для TMutex: Log. Listen: позволяет привязать Apache к определённому IP-адресу/порту вместо заданного по умолчанию. Подробности см. в директиве. Измените это значение на конкретный IP-адрес и порт, как показано ниже: Это предотвращает привязку Apache ко всем IP-адресам на сервере. Например: Listen 12.34.56.78:8080. Это означает, что доступ к HTTP-серверу возможен только через порт 8080 на сервере 12.34.56.78. Listen 8088. Это устанавливает отдельный номер порта, чтобы все привязанные IP-адреса на сервере могли его использовать. Установка порта 8088 обусловлена тем, что на сервере установлен другой HTTP-сервер, чтобы избежать конфликта с портом 80. При обычной установке нет необходимости менять порт 80. # Поддержка динамических общих объектов (DSO) # Чтобы использовать функциональность модулей, созданных как DSO, необходимо поместить соответствующую строку «LoadModule» в это место, и содержащиеся в ней инструкции будут доступны _до_них. # Статически скомпилированные модули (перечисленные командой httpd -l) загружать здесь не нужно. Пример #: #LoadModule foo_module modules/mod_foo.so LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authn_dbm_module modules/mod_authn_dbm.so #LoadModule authn_anon_module modules/mod_authn_anon.so #LoadModule authn_dbd_module modules/mod_authn_dbd.so #LoadModule authn_socache_module modules/mod_authn_socache.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_user_module modules/mod_authz_user.so #LoadModule authz_dbm_module modules/mod_authz_dbm.so #LoadModule authz_owner_module modules/mod_authz_owner.so #LoadModule authz_dbd_module modules/mod_authz_dbd.so LoadModule authz_core_module modules/mod_authz_core.so #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so LoadModule access_compat_module modules/mod_access_compat.so LoadModule auth_basic_module modules/mod_auth_basic.so #LoadModule auth_form_module modules/mod_auth_form.so #LoadModule auth_digest_module modules/mod_auth_digest.so #LoadModule allowmethods_module modules/mod_allowmethods.so #LoadModule file_cache_module modules/mod_file_cache.so #LoadModule cache_module modules/mod_cache.so #LoadModule cache_disk_module modules/mod_cache_disk.so #LoadModule cache_socache_module modules/mod_cache_socache.so #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so #LoadModule socache_dbm_module modules/mod_socache_dbm.so #LoadModule socache_memcache_module modules/mod_socache_memcache.so #LoadModule socache_redis_module modules/mod_socache_redis.so #LoadModule watchdog_module modules/mod_watchdog.so #LoadModule macro_module modules/mod_macro.so #LoadModule dbd_module modules/mod_dbd.so #LoadModule dumpio_module modules/mod_dumpio.so #LoadModule buffer_module modules/mod_buffer.so #LoadModule ratelimit_module modules/mod_ratelimit.so LoadModule reqtimeout_module modules/mod_reqtimeout.so #LoadModule ext_filter_module modules/mod_ext_filter.so #LoadModule request_module modules/mod_request.so #LoadModule include_module modules/mod_include.so LoadModule filter_module modules/mod_filter.so #LoadModule substitute_module modules/mod_substitute.so #LoadModule sed_module modules/mod_sed.so #LoadModule deflate_module modules/mod_deflate.so LoadModule mime_module modules/mod_mime.so #LoadModule ldap_module modules/mod_ldap.so LoadModule log_config_module modules/mod_log_config.so #LoadModule log_debug_module modules/mod_log_debug.so #LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so #LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so #LoadModule unique_id_module modules/mod_unique_id.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule version_module modules/mod_version.so #LoadModule remoteip_module modules/mod_remoteip.so #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #LoadModule proxy_scgi_module modules/mod_proxy_scgi.so #LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so #LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so #LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #LoadModule proxy_express_module modules/mod_proxy_express.so #LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so #LoadModule session_module modules/mod_session.so #LoadModule session_cookie_module modules/mod_session_cookie.so #LoadModule session_crypto_module modules/mod_session_crypto.so #LoadModule session_dbd_module modules/mod_session_dbd.so #LoadModule slotmem_shm_module modules/mod_slotmem_shm.so #LoadModule ssl_module modules/mod_ssl.so #LoadModule lbmethod_byrequests_module модули/mod_lbmethod_byrequests.so #LoadModule lbmethod_bytraffic_module модули/mod_lbmethod_bytraffic.so #LoadModule lbmethod_bybusyness_module модули/mod_lbmethod_bybusyness.so #LoadModule lbmethod_heartbeat_module модули/mod_lbmethod_heartbeat.so LoadModule unixd_module модули/mod_unixd.so #LoadModule dav_module модули/mod_dav.so LoadModule status_module модули/mod_status.so LoadModule autoindex_module модули/mod_autoindex.so #LoadModule info_module модули/mod_info.so #LoadModule cgid_module modules/mod_cgid.so #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule vhost_alias_module modules/mod_vhost_alias.so #LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so #LoadModule actions_module modules/mod_actions.so #LoadModule speling_module modules/mod_speling.so #LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so #LoadModule rewrite_module modules/mod_rewrite.so #Если вы хотите, чтобы httpd запускался от имени другого пользователя или группы, вы должны сначала запустить httpd от имени root, а затем он переключится.Пользователь/Группа: Имя пользователя/группы, от имени которой работает httpd.
Обычно для запуска службы httpd создается отдельная группа пользователей и пользователь.
Пользователь www #Имя пользователя для запуска службы httpd. Группа www #Имя группы пользователей, к которой принадлежит пользователь. #Конфигурация сервера "main" #Директивы в этом разделе задают значения, используемые "main" сервером, который отвечает на любые запросы, не обработанные сервером. #Измените директивы. Вы можете изменить их позже в контейнере. Директивы в контейнере теперь имеют значения по умолчанию. #Все эти директивы могут присутствовать в контейнере, и в этом случае эти настройки по умолчанию будут переопределены заданными виртуальными хостами. #ServerAdmin: Ваш адрес электронной почты, на который следует отправлять сообщения о проблемах сервера. Этот адрес отображается на некоторых страницах, сгенерированных сервером, например, в документах об ошибках. Например, admin@your-domain.com ServerAdmin xxx@gmail.com #ServerName предоставляет имя и порт, которые сервер использует для своей идентификации. Это имя и порт обычно определяются автоматически, но мы рекомендуем указывать их явно, чтобы избежать проблем при запуске. #Если у вашего сервера нет зарегистрированного DNS-имени, введите здесь его IP-адрес. #Примечание: имя хоста не может быть указано произвольно. Это должно быть допустимое DNS-имя для вашего компьютера. Вы можете использовать IP-адрес или доменное имя. При локальном тестировании можно использовать 127.0.0.1 или localhost #ServerName www.example.com:80 #Запретить доступ ко всей файловой системе сервера. Необходимо явно разрешить доступ к каталогу веб-контента в следующих других блоках. #Оператор Directory используется для определения ограничений доступа для каталога #AllowOverride None означает, что файлу управления доступом в этом каталоге запрещено изменять заданную здесь конфигурацию. AllowOverride none Require all denied #Примечание: С этого момента необходимо явно разрешить включение определенных функций. Поэтому, если что-то работает некорректно, убедитесь, что вы специально включили эту функцию ниже. #DocumentRoot: Каталог, где хранятся ваши веб-документы. По умолчанию все веб-запросы отправляются из этого каталога, но символические ссылки и псевдонимы могут указывать на другие расположения. DocumentRoot "/usr/local/apache2/htdocs"#Возможные значения директивы Options: «None», «All» или любая комбинация из следующих: #Indexes includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews #«MultiViews» должны быть названы явно; «Options All» использовать нельзя. Директива Options одновременно сложна и важна. Подробнее см. на странице http://httpd.apache.org/docs/2.4/mod/core.html#options.
Параметры Индексы FollowSymLinks #AllowOverride управляет директивами, которые можно разместить в файле .htaccess. Возможные значения: «All», «None» или любая комбинация ключевых слов: #AllowOverride FileInfo AuthConfig Limit AllowOverride None #Управляет доступом к содержимому этого сервера. Требовать предоставления всех прав #DirectoryIndex: задаёт файл, который Apache будет обслуживать при запросе каталога. #Задаёт документ по умолчанию для доступа: index.html index.php DirectoryIndex index.html #Следующие строки запрещают веб-клиентам просматривать файлы .htaccess и .htpasswd.Требовать все отклоненные #ErrorLog: Расположение файла журнала ошибок. #Если директива ErrorLog не указана в контейнере, сообщения об ошибках, связанные с этим виртуальным хостом, будут регистрироваться в каталоге, указанном в ". #Если конкретное расположение журнала не указано, по умолчанию используется "logs/error_log". ErrorLog "logs/error_log" #LogLevel: управляет количеством сообщений, регистрируемых в error_log. #Доступные значения: debug, info, notification, warn, error, crit, alert, emerg. LogLevel warn #Следующие директивы определяют некоторые псевдонимы форматов для использования с директивой CustomLog (см. ниже). LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" в сочетании LogFormat "%h %l %u %t \"%r\" %>s %b" common #Для использования %I и %O необходимо включить mod_logio.c. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio #Расположение и формат файлов журнала доступа (общий формат файлов журнала). #Если в контейнере не определены файлы журнала доступа, они будут регистрироваться здесь. #Напротив, если определены файлы журнала доступа для каждого доступа, транзакции будут регистрироваться в них, а не в этом файле. CustomLog "logs/access_log" common #Если вы хотите использовать файлы журналов с информацией о правах доступа, агентах и реферерах (объединенный формат файла журнала), вы можете использовать следующие директивы. #CustomLog "logs/access_log" combined #Redirects: позволяет сообщать клиентам о документах, которые когда-то существовали в пространстве имен сервера, но больше не существуют. После этого клиент отправит новый запрос на документ в новом месте. #Например: #Redirect permanent /foo http://www.example.com/bar #Псевдоним: сопоставляет веб-путь с путем в файловой системе и используется для доступа к контенту, которого нет в DocumentRoot. #Например: #Псевдоним /webpath /full/filesystem/path #Если /webpath/ заканчивается символом /, сервер потребует его включения в URL. Вам также может потребоваться указать сегмент /, чтобы разрешить доступ к файловой системе. Пути. #ScriptAlias: Управляет каталогами, содержащими серверные скрипты. #ScriptAliases по сути то же самое, что и псевдонимы, за исключением того, что документы в целевом каталоге рассматриваются как приложения и запускаются сервером по запросу, а не как документы, отправляемые клиенту. #Те же правила относительно завершающего символа "/" применяются к директивам ScriptAlias и псевдонимам. #Это описание настройки виртуальных каталогов в Apache 2.4. #ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" #ScriptSock: На многопоточном сервере указывает путь к сокету UNIX, используемому для взаимодействия с CGI-демоном mod_cgid. #Scriptsock cgisock #"/usr/local/apache2/cgi-bin" следует заменить на то, где находится ваш Каталог ScriptAliased #CGI существует (если настроен). AllowOverride Нет Параметры Нет Требовать все предоставленные #AИзбегать передачи среды HTTP_PROXY в CGI на этом или любом другом прокси-сервере, на котором сохраняется уязвимость «httpoxy». #IProxy не определяет заголовок запроса «Proxy» и RequestHeader не установлен Proxy early не указан в списке IANA #TypesConfig указывает на файл, содержащий список сопоставлений расширений файлов с типами MIME. TypesConfig conf/mime.types #AddType позволяет добавлять или переопределять файлы конфигурации MIME, указанные в TypesConfig для определенных типов файлов. #AddType application/x-gzip .tgz #AddEncoding позволяет некоторым браузерам распаковывать информацию «на лету». ПРИМЕЧАНИЕ. Не все браузеры поддерживают эту функцию. #AddEncoding x-compress .Z #AddEncoding x-gzip .gz .tgz #Если указанная выше директива AddEncoding закомментирована, то вам, вероятно, следует определить следующие расширения для указания типа носителя: AddType application/x-compress .Z AddType application/x-gzip .gz .tgz #AddHandler позволяет сопоставлять определенные расширения файлов с «обработчиками»: #Действия, не связанные с типом файла. Их можно либо встроить в сервер, либо добавить с помощью директивы Action (см. ниже) #Для использования CGI-скриптов вне каталогов ScriptAliased: #(Вам также потребуется добавить «ExecCGI» в директиву «Options».) #AddHandler cgi-script .cgi #Для сопоставлений типов (согласованные ресурсы): #AddHandler type-map var Фильтры позволяют обрабатывать контент перед отправкой клиенту.
#Анализ файлов .shtml для включения на стороне сервера (SSI): #(Вам также потребуется добавить "include" в директиву "Options".) #AddType text/html .shtml #AddOutputFilter INCLUDES .shtml #Модуль mod_mime_magic позволяет серверу использовать различные подсказки в содержимом самого файла для определения его типа. Директива MIMEMagicFile сообщает модулю, где находятся определения подсказок. #MIMEMagicFile conf/magic #Настраиваемые сообщения об ошибках бывают трёх видов: #1) Простой текст 2) Локальное перенаправление 3) Внешнее перенаправление #Некоторые примеры: #ErrorDocument 500 "Сервер освистан". #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html #MaxRanges: Возвращает весь ресурс или одно из специальных значений: "default", "none" или "unlimited" — максимальное количество диапазонов в запросе. По умолчанию принимается 200 диапазонов. #MaxRanges — без ограничений. #EnableMMAP и EnableSendfile: В системах, которые поддерживают эту функцию, файлы могут доставляться с помощью отображения памяти или системного вызова sendfile. #Это часто может повысить производительность сервера, но для этого необходимо отключить сетевые файловые системы из служб или если поддержка этих функций в вашей системе нарушена. #Значения по умолчанию: EnableMMAP включен, EnableSendfile выключен #EnableMMAP выключен #EnableSendfile включен #Supplemental configuration #Файлы конфигурации в каталоге conf/extra/ можно включить для добавления дополнительных функций или изменения конфигурации сервера по умолчанию, или можно просто скопировать их содержимое сюда и изменить по мере необходимости. #Управление пулом серверов (специфично для MPM) #include conf/extra/httpd-mpm.conf #Многоязычные сообщения об ошибках #include conf/extra/httpd-multilang-errordoc.conf #Вывод списка каталогов #include conf/extra/httpd-autoindex.conf #Языковые настройки #include conf/extra/httpd-languages.conf #Домашние каталоги пользователей #include conf/extra/httpd-userdir.conf #Информация о запросах и конфигурации в режиме реального времени #include conf/extra/httpd-info.conf #Виртуальные хосты #include conf/extra/httpd-vhosts.conf #Локальный доступ к руководству по Apache HTTP Server #Включить conf/extra/httpd-manual.conf # Распределенная разработка и управление версиями (WebDAV) # Включить conf/extra/httpd-dav.conf # Различные настройки по умолчанию # Включить conf/extra/httpd-default.conf # Настройка mod_proxy_html для понимания HTML4/XHTML1 Включить conf/extra/proxy-html.conf Включить безопасные соединения (SSL/TLS) #include conf/extra/httpd-ssl.conf Включить ПРИМЕЧАНИЕ. Для поддержки запуска без SSL на платформах, на которых нет эквивалента /dev/random, но есть статически скомпилированный mod_ssl, необходимо следующее: Встроенный запуск SSLRandomSeed Встроенное подключение SSLRandomSeed
Подробное объяснение инструкции под контейнером:
Настройки параметров Вы можете использовать параметры для управления некоторыми настройками функций доступа в этом каталоге.
Все функции каталога действительны, это состояние по умолчанию.
Нет Все функции каталога отключены
FollowSymLinks позволяет использовать символические ссылки, которые позволяют браузеру получать доступ к документам за пределами корневого каталога документов (DocumentRoot).
SymLinksIfOwnerMatch разрешает доступ только в том случае, если целевой объект символической ссылки и сама символическая ссылка принадлежат одному и тому же пользователю. Этот параметр повышает безопасность.
ExecCGI позволяет запускать CGI-программы в этом каталоге.
Индексы позволяют браузеру генерировать индекс всех файлов в этом каталоге, так что когда в этом каталоге нет index.html (или другого файла индекса), список файлов в этом каталоге может быть отправлен в браузер.
Влияние параметра AllowOverride на файл управления доступом для каждого каталога
All — это значение по умолчанию, которое позволяет файлам управления доступом переопределять системные конфигурации.
Нет Сервер игнорирует настройки файла контроля доступа
Параметры позволяют файлу управления доступом определять параметры каталога с помощью параметра Options.
FileInfo позволяет устанавливать файлы контроля доступа с помощью таких параметров, как AddType.
AuthConfig позволяет файлам управления доступом использовать механизмы аутентификации, такие как AuthName и AuthType, для каждого пользователя, что позволяет владельцам каталогов защищать каталоги с помощью паролей и имен пользователей.
Limit позволяет ограничить IP-адреса и имена клиентов, которые могут получить доступ к каталогу.
Выше представлен подробный перевод и объяснение конфигурации различных переменных в httpd.conf и основной структуры файла конфигурации сервера Apache2.4.4. Наиболее примечательным является то, что он определяет права доступа к подкаталогам, размещённым в разных каталогах.АпачиНекоторые версии совместимости.