Основные конфигурационные директивы 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, например: блок кода
настраивает поведение указанной директории. Вместо имени каталога, можно использовать регулярные выражения.
Options
Директива Options определяет, какие особенности сервера являются доступными в конкретном каталоге.
All - разрешены все опции, кроме MultiViews (устанавливается по умолчанию).
None - запрещены все опции.
ExecCGI - выполнение сценариев CGI разрешено.
FollowSymLinks - сервер будет следовать за символическими связями в этом каталоге.
Includes - SSI (Server-Site Includes) разрешено.
IncludesNOEXEC - SSI разрешено, но команды #exec и #include у CGI-скриптов заблокированны.
Indexes - если запрошенный URL соответствует каталогу, и в этом катлоге нет ничего соответствующего DirectoryIndex (например Index.htm), то сервер вернет список всех файлов и директорий каталога.
SymLinksIfOwnerMatch - сервер будет следовать только тем символическим связям, для которых целевой файл или каталог имеют тот же идентификатор пользователя, что и связь.
Если несколько опций директивы Options применяются к каталогу, а затем другие опции применяются к его подкаталогу, то опции родительского каталога не распространяются на подкаталог.
<Directory "c:/www/otherdir">
Options Includes
</Directory>
В этом примере каталогу c:/www и всем его подкаталогам, кроме c:/www/otherdir, присваивается "Indexes" и "FollowSymLinks". А вот подкаталог c:/www/otherdir и все его подкаталоги наделяются только опцией "Includes".
Используя символы "+" и "-" можно добавить или удалить любую опцию для подкаталога.
В этом случае, директория 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>
Контейнер <VirtualHost>...</VirtualHost> используется для обработки одним сервером Apache различных сайтов. Все директивы, записанные в контейнере Virtualhost применяются исключительно к одному сайту. Один сайт (набор файлов и каталогов) может быть доступен по одному и более домену(ам) или IP.
Специальное имя _default_ может быть определено, когда этот конкретный виртуальный хост будет соответствовать любому адресу IP явно не указанному в объявлении другого virtual host. Если объявление _default_ virtual host отсутствует в конфигурации сервера и запрос не подходит ни под какой из известных virtual host, то для ответа используется основной сервер, каталог которого задается в директиве DocumentRoot.
Внутри каждого контейнера VirtualHost можно использовать практически любые директивы Apache, что дает возможность настраивать каждый сайт самым детальным образом.
Пример поддержки 2-ух различных сайтов одним сервером Apache