Основные конфигурационные директивы Apache файла http.conf

Директива Описание
ServerRoot Путь к исполняемым файлам HTTP-сервера Apache.
Listen Устанавливает порт и IP-адрес, "прослушиваемый" Apache. По умолчанию, все браузеры пытаются открыть HTTP соединение с сервером Apache через 80 порт. Если установить другой номер порта, например 9031, то чтобы открыть страницу в браузере, после адреса страницы необходимо дополнительно указывать порт через двоеточие, например: http://localhost:9031. Также, в этой директиве можно указать один IP адрес, который будет обрабатываться Apache (Например Listen 192.168.0.10:80), если компьютер распологает 2-мя и более IP-адресами.
DocumentRoot Эта директива httpd.conf определяет директорию, в которой находятся html и др. файлы одного сайта. В случае необходимости поддержки двух и более сайтов одним сервером Apache, следует использовать директиву-контейнер <VirtualHost></VirtualHost>. При использовании виртуальных хостов про настройку прав доступа директории, указанной в строке "DocumentRoot" забывать не следует, так как страницы этого каталога будут отображаться пользователям, ввевшим домен, не прописаный в VirtualHost.
<Directory>
...
</Directory>
Директивы, указанные внутри контейнера Directory будут влиять на все файлы и папки указанной директории. Путь к директории указывается сразу после слова Directory, например: блок кода
<Directory "C:/apache2.2.19/htdocs">
... директивы ...
</Directory>
настраивает поведение указанной директории. Вместо имени каталога, можно использовать регулярные выражения.
Options Директива Options определяет, какие особенности сервера являются доступными в конкретном каталоге.
  • All - разрешены все опции, кроме MultiViews (устанавливается по умолчанию).
  • None - запрещены все опции.
  • ExecCGI - выполнение сценариев CGI разрешено.
  • FollowSymLinks - сервер будет следовать за символическими связями в этом каталоге.
  • Includes - SSI (Server-Site Includes) разрешено.
  • IncludesNOEXEC - SSI разрешено, но команды #exec и #include у CGI-скриптов заблокированны.
  • Indexes - если запрошенный URL соответствует каталогу, и в этом катлоге нет ничего соответствующего DirectoryIndex (например Index.htm), то сервер вернет список всех файлов и директорий каталога.
  • MultiViews - content negotiated MultiViews допускаются.
  • SymLinksIfOwnerMatch - сервер будет следовать только тем символическим связям, для которых целевой файл или каталог имеют тот же идентификатор пользователя, что и связь.
Если несколько опций директивы Options применяются к каталогу, а затем другие опции применяются к его подкаталогу, то опции родительского каталога не распространяются на подкаталог.
Пример №1 - наследование опций:
<Directory "c:/www">
  Options Indexes FollowSymLinks
</Directory>

<Directory "c:/www/otherdir">
  Options Includes
</Directory>
 
В этом примере каталогу c:/www и всем его подкаталогам, кроме c:/www/otherdir, присваивается "Indexes" и "FollowSymLinks". А вот подкаталог c:/www/otherdir и все его подкаталоги наделяются только опцией "Includes".
Используя символы "+" и "-" можно добавить или удалить любую опцию для подкаталога.
Пример №2 - наследование опций:
<Directory "c:/www">
  Options Indexes FollowSymLinks
</Directory>

<Directory "c:/www/otherdir">
  Options +Includes -Indexes
</Directory>
 
В этом случае, директория c:/www/otherdir будет располагать опциями "FollowSymLinks" (добавлена для родительской директории) и "Includes" - добавлена с помощью знака "+". Опция "Indexes" удалена из директории c:/www/otherdir при помощи знака "-".
AllowOverride Опция AllowOverride указывает Apache, какие директивы в файле .htaccess допустимы (название файла ".htaccess" или любое другое определяется директивой AccessFileName).
  • All - доступны все директивы (используется по умолчанию).
  • None - .htaccess не обрабатывается.
  • AuthConfig - допускает использование директив разрешения (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, и т.д..).
  • FileInfo - допускает использование директив, управляющих типами документа (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, и т.д..).
  • Indexes - допускает использование деректив управления индексацией каталога(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, и т.д..).
  • Limit - допускает использование основных директив управления доступом (allow, deny и order).
  • Options[=Option,...] - допускает использование директив, управляющих специфическими особенностями каталога (Options и XBitHack).
В целях производительности и максимальной безопасности основной директории HTTP-сервера Apache "/", указанной в контейнере <Directory />, следует указать значение AllowOverride равное None: AllowOverride None.
Order Директива Order управляет состоянием доступа по умолчанию и порядок, в котором доступ разрешается или запрещается. Order может принимать 3 значения:
  • Allow,Deny - доступ по умолчанию запрещен, кроме хостов, указанных в строке после Allow from.
  • Deny,Allow - доступ по умолчанию разрешен, кроме хостов, указанных в строке после Deny from
  • Mutual-failure - разрешен доступ только для тех хостов, которые присутствуют в Allow и отсутствуют в Deny.
Чаще всего используются значения Allow,Deny и Deny,Allow. Значение по умолчанию устанавливается последним словом (Allow или Deny). Между словами Allow и Deny директивы Order должна находится только запятая, без пробелов.
В примерах №1-3 опущены открывающий и закрывающий контейнер <Directory ...></Directory> для краткости, при настройке Апача они обязательны.
Пример №1 первой строкой "Order Deny,Allow" назначает порядок чтения прав доступа: вначале читаются все права которые что-либо запрещают (Deny from...), а уже потом разрешающие права (Allow from). По умолчанию устанавливается Allow. Вторая строка "Deny from all" запрещает доступ всем хостам ко всем доменам. Третья же "Allow from apache.org", разрешает доступ к домену apache.org.
Пример №1 назначения прав доступа
Order Deny,Allow
Deny from all
Allow from apache.org
Следующий пример №2, разрешает доступ только к домену apache.org, за исключением поддомена foo.apache.org (Deny from foo.apache.org). Все остальные домены будут не доступны.
Пример №2 назначения прав доступа
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
Пример №3 отличается от №2 только значением Order: "Deny,Allow" вместо "Allow,Deny". Но логика предоставления прав доступа Apache изменится, на первый взгляд, весьма не ожиданно. Доступ будет открыт абсолютно ко всем доменам, даже к поддомену foo.apache.org, явно запрещенному строкой "Deny from foo.apache.org". Это происходит потому, что порядок строк "Allow from ..." и "Deny from ..." не имеет значения. Порядок установки правил задается директивой Order, изходя из чего Апач сначала запрещает доступ к foo.apache.org, а потом перезаписывает это правило, изходя из директивы "Allow from apache.org".
Пример №3 назначения прав доступа
Order Deny,Allow
Allow from apache.org
Deny from foo.apache.org
Пример №4 запрещает доступ к директории C:/www по умолчанию даже без использования строки "Deny from ...".
Пример №4 назначения прав доступа
<Directory "C:/www">
Order Allow,Deny
</Directory>
Дополнительную информацию по директивам Alow, Deny и Order можно получить из официальной документации Apache2.2 (eng).
<VirtualHost>
...
</VirtualHost>
Контейнер <VirtualHost>...</VirtualHost> используется для обработки одним сервером Apache различных сайтов. Все директивы, записанные в контейнере Virtualhost применяются исключительно к одному сайту. Один сайт (набор файлов и каталогов) может быть доступен по одному и более домену(ам) или IP.
Специальное имя _default_ может быть определено, когда этот конкретный виртуальный хост будет соответствовать любому адресу IP явно не указанному в объявлении другого virtual host. Если объявление _default_ virtual host отсутствует в конфигурации сервера и запрос не подходит ни под какой из известных virtual host, то для ответа используется основной сервер, каталог которого задается в директиве DocumentRoot.
Внутри каждого контейнера VirtualHost можно использовать практически любые директивы Apache, что дает возможность настраивать каждый сайт самым детальным образом.
Пример поддержки 2-ух различных сайтов одним сервером Apache
<VirtualHost *:80>
    ServerName first.loc
    ServerAlias www.first.loc
    DocumentRoot "c:/www/first.loc/public"
    ErrorLog "c:/www/first.loc/logs/error.log"
</VirtualHost>

<VirtualHost *:80>
    ServerName second.loc
    ServerAlias www.second.loc
    DocumentRoot "c:/www/second.loc/public"
    ErrorLog "c:/www/second.loc/public"
</VirtualHost>
Более подробную информацию по виртуальным хостам Апача, можно прочесть здесь: "Официальная документация Apache по Virtual Host".

Статьи схожей тематики про HTTP-сервер Apache

Установка и настройка Apache
Русскоязычный перевод httpd.conf
Опубликовано: 2011/08/31
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/apache.php?txt=86" target="_blank">Основные директивы Apache в http.conf</a>
58764
Добавить комментарий
Ваш e-mail: (не виден посетителям сайта)
Ваше имя:
Комментарий:
Символы с картинки:
Только выделенные поля формы добавления комментариев обязательны к заполнению.