Иллюстрированный самоучитель по RedHatLinux

       

Конфигурационный файл Apache


Хотя подкаталог /etc/httpd/conf включает все три оригинальных конфигурационных файла, собственно конфигурируется только файл httpd. conf. Остальные CONF-файлы оставлены для совместимости с предыдущими версиями.

Структура файла httpd. conf довольно проста. Ниже приведен его листинг по умолчанию:

##

## httpd.conf - конфигурационный файл HTTP-сервера Apache

##

#

# Построил Rob McCool на основе конфигурационных файлов NCSA-сервера. #

# Это основной конфигурационный файл сервера. QH содержит

# конфигурационные директивы для сервера. За дополнительными

# инструкциями обращайтесь по адресу <URL:

http://www.apache.org/docs/

> #

# Если не понятно, о чем речь - лучше не читать. Если в чем-то

# не уверены - обращайтесь к документации в on-line. Вас предупредили. #

# После обработки этого файла, сервер ищет и обрабатывает файлы

# /usr/conf/srm.conf и /usr/conf/access.conf, если вы не заблокировали



# их здесь директивами ResourceConfig и/или AccessConfig.#

# Директивы конфигурирования разбиты на три раздела:

# 1. Директивы, управляющие работой сервера Apache в целом

# (раздел 'global environment') .

# 2. Директивы, определяющие параметры 'сервера 'main' или 'default',

# соответствующие запросам, не обрабатываемы виртуальным хостом.

# Эти директивы также обеспечивают значения по умолчанию для всех

# виртуальных хостов.

# 3. Установки для виртуальных хостов, позволяющие отправлять

# Web-запросы на другие IP-адреса или хосты в расчете на обработку # аналогичным Apache-сервером.

#

# Имена файлов конфигурации и протокола: Если заданные имена файлов

# управления сервером начинаются с "/" (или "drive:/ " для Win32),

# сервер будет использовать явный путь. Если имена не начинаются

# с "/", значение ServerRoot интерпретируется так: "logs/foo.log"

# для ServerRoot, установленного на "/usr/local/apache" будет

# интерпретироваться сервером как "/usr/local/apache/logs/foo.log".


### Раздел 1: Global Environment #

# Директивы этого раздела определяют поведение Apaohe в целом,

# например, задают число параллельно обрабатываемых запросов, # или местоположение конфигурационных файлов.

# #

# ServerType либо inetd, либо standalone. Inetd режим поддерживается

# только на платформе Unix. #

ServerType standalone

#

# ServerRoot: Корень дерева каталогов, в котором сервер хранит # файлы конфигурации, ошибок и протоколов.

#

# Внимание! Если вы хотите разместить его в NFS (или сети), смонтируйте

# файловую систему, затем прочитайте документацию LockFile (доступную

# по адресу <URL:

http://www.apache.org/docs/mod/core.htmlflockfile


>),

# и вы избавите себя от массы забот. #

# Не добавляйте косую черту в конце пути каталога. ServerRoot "/etc/httpd"

#

# Команда LockFile устанавливает путь к файлу блокировки, использующемуся

# если Apache откомпилирован либо с USE_FCNTL_SERIALIZED_ACCEPT, либо с

# USE_FLOCK_SERIALIZED_ACCEPT. Обычно эта команда должна иметь значение

# по умолчанию. Основной причиной, по которой нужно изменять эту

# переменную, является установка каталога протоколов на смонтированной

# NFS, так как файл-блокировки ДОЛЖЕН НАХОДИТЬСЯ НА ЛОКАЛЬНОМ ДИСКЕ.

# PID главного процесса сервера автоматически добавляется к имени файла. #

LockFile /var/lock/httpd.lock

# PidFile: Файл для протоколирования pid сервера PidFile /var/run/httpd.pid

# ScoreBoardFile: Файл для хранения сервером внутренней информации о

# процессе. Требуется не на всех архитектурах. Но если у Вас требуется

# (файл будет создан после запуска Apache), то Вы *должны* убедиться в # том, что ни одна из запускаемых копий Apache не разделяет один и тот # же файл для этой цели.

#

ScoreBoardFile /var/run/httpd.Scoreboard

#

# В стандартной конфигурации сервер обработает этот файл,

# файл srm.conf и access.conf в указанном порядке. Два последних файла

# в этом дистрибутиве пусты, а все директивы объединены в один



# файл для простоты. Ниже приведены закомментированные

# значения по умолчанию. Можно заставить сервер проигнорировать

# эти файлы, задав "/dev/null" (для Unix) или

# "mil" (для Win32) в качестве аргументов директив. #

# ResourceConfig conf/srm.conf

#AccessConfig conf/access.conf

#

# Timeout: Количество секунд перед приемом и посылкой тайм-аута. Timeout 300

# KeepAlive: Разрешить или не разрешить устойчивые соединения (более

# одного запроса на каждое соединение). Для запрещения установите в "Off". KeepAlive On

# MaxKeepAliveRequests: Максимальное количество разрешенных запросов при

# устойчивом соединении. Значение 0 устанавливает неограниченное

#количество. Для обеспечения максимальной производительности рекомендуем

# установить это число большим. # MaxKeepAliveReguests 100

#

# KeepAliveTimeout: Количество секунд для ожидания следующего запроса.

#

KeepAliveTimeout 15

#

# Правила размера серверного пула. Чтобы Вы не гадали, сколько Вам нужно

# процессов для сервера, Apache динамически подстраивается к текущей

# нагрузке — он пытается запустить необходимое количество процессов для # оперирования текущей нагрузкой, плюс несколько резервных серверов для

# обслуживания временных пиков (т.е. нескольких одновременных запросов,

# исходящих из одного браузера Netscape). #

# Делает он это при помощи периодической проверки количества

# серверов, ожидающих запросов. Если их меньше, чем MinSpareServers,

# то он создает дополнительный резерв. Если

больше,

чем

# MaxSpareServers, то он уничтожает некоторые из них.

# Эти значения, вероятно, подходят для многих сайтов #

MinSpareServers 5 MaxSpareServers 20

#

# Количество запускаемых серверов — должно быть умеренное

# приблизительное число. #

StartServers 8

# Предел на общее количество запускаемых серверов, т.е. предел на число

# одновременно соединяющихся клиентов - если этот предел когда-либо



# будет достигнут, клиенты будут ЗАБЛОКИРОВАНЫ, поэтому он НЕ ДОЛЖЕН

# БЫТЬ СЛИШКОМ МАЛЕНЬКИМ. Этот параметр главным образом используется

# как тормоз, чтобы необузданный сервер не потянул за собой Unix,

# который в это время начнет тормозить... #

MaxClients 150

# MaxRequestsPerChild: максимальное количество запросов, разрешенных

# для обработки каждому дочернему процессу перед его удалением.

# После этого дочерний процесс будет завершен, чтобы избежать

# неприятностей связанных с продолжительным использованием из-за

# изъянов Apache (а может и используемых им библиотек) . На многих

# системах этот параметр не очень нужен, но некоторые (такие как

# Solaris) действительно имеют изъяны в библиотеках. Для таких систем

# задайте значение, наподобие 10000;

# значение 0 означает "неограниченный".

#

# Внимание: Это значение не включает keepalive-запросы после .соединения.

# Например, если дочерний процесс обрабатывает начальный запрос и 10

# последующих keptalive-запросов, будет учтен только один запрос

# при анализе превышения данного предела .

#

MaxRequestsPerChild 100

#

# Listen: Позволяет привязать Apache к конкретным IP-адресам

# и/или портам, в дополнение к принятым по умолчанию значениям.

# См. также команду VirtualHost.

#

#Listen 3000

#Listen 12.34.56.78:80

Listen 80

#

# BindAddress: Эту сйщию можно использовать для поддержки виртуальных

# хостов. Эта опция указывает серверу IP-адрес для прослушивания. Он

# может содержать либо "*", либо IP-адрес, либо полное квалифицированное

# имя Internet-домена. См. также команду VirtualHost.

#

# BindAddress *

# Поддержка Dynamic Shared Object (DSO - Динамические

# совместные объекты)

#

# Чтобы использовать функциональность модулей, построенных как DSO,

# поместите соответствующие строчки 'LoadModule' в этом месте, чтобы

# содержащиеся в них команды были доступны до того, как они будут

# использованы. Для дополнительной информации о механизме DSO,

# пожалуйста, прочтите файл README. DSO из дистрибутива Apache Д. 3 и

# запустите 'httpd -1' для получения списка уже встроенных модулей

# (они Скомпонованы статически и, таким образом, всегда доступны)

# в исполняемом модуле httpd.

# # Внимание : Порядок загрузки модулей существенен. Не меняйте

# приведенный ниже порядок без консультации со специалистом.

# Пример :

# LoadModule foo_module libexec/mod_foo.so

#

# LoadModule imiap_static_module modules /mod_mmap_static. so

LoadModule vhost_alias_module modules/mod_vhost_alias.so

LoadModule env_module modules /mod_env. so

LoadModule conf ig_log_module modules /mod_log_config. so

LoadModule agent_log_module modules /mod_log_agent .so

<


/p>
LoadModule referer_log_module modules /mod_log_referer .so

#LoadModule mime_magic_module modules /mod_mime_magic .so

LoadModule mime_module modules /mod_mime. so

LoadModule negotiation_module modules /mod_negotiation. so

LoadModule status_module modules /mod_status. so

LoadModule info_module modules /mod_info. so

LoadModule includes_module modules/mod_include.so

LoadModule autoindex_module modules/mod_autoindex.so

LoadModule dir_module modules /mod_dir .so

LoadModule cgi_module modules /mod_cgi .so

LoadModule asis_module modules/mod_asis . so

LoadModule imap_module modules /mod_imap. so

LoadModule action_module modules /mod_actions . so

tLoadModule 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

LoadModule access_module modules /mocLaccess. so

LuaJWuUule auUuuuQule modules/mod_auth.so

LoadModule anon_auth_module modules /mocLauth_anon. so

LoadModule db_auth_module modules /mod_auth_db. so

#LoadModule digest module modules /mod_dige'st. so

#LoadModule proxy_module modules /libproxy. so

#LoadModule cern_meta_moduie modules /mod cern_meta.so

LoadModule expires_module modules /mod_expires. so

LoadModule headers_module modules/mod_headers.so

#LoadModule usertrack_module modules /mod_user track. so

#LoadMnHn1e example_modul modules /mod_example. so

#LoadModule unique_id_module modules /mod_unique_id. so

LoadModule setenvif_module moauies/mod_secenvit.so

#LoadModule bandwidth_module modules /mod_bandwidth . so

ILoadModule put_module modules/mod_put.so

<If Define HAVE_PERL>

LoadModule perl_module modules /libperl .so

</lfDefine>

<If Define HAVE_PHP>

LoadModule php_module modules /mod_php. so

</IfDefine>

<IfDefine HAVE_PHP3>

LoadModule php3_module modules /libphpS . so

</IfDefine>

<IfDefine HAVE_PHP4>

LoadModule php4_module modules/ Iibphp4. so

</IfDefine>

<IfDefine HAVE_DAV>

LoadModule dav_module modules /libdav. so

</IfDefine>

<If Define HAVE_ROAMING>

LoadModule roaming_module modules /mod_roaming. so

</IfDefine>

<IfDefine HAVE_SSL>

LoadModule ssl_module modules/libssl .so

</IfDef ine>

# Реконструкция полного списка модулей из всех доступных модулей

# (статических и совместных) для обеспечения правильного порядка

<


/p>
# выполнения модулей.

# [ВСЯКИЙ РАЗ ПОСЛЕ ПОПРАВОК В СЕКЦИИ LOADMODULE (см. выше)

# ТАКЖЕ ОТКОРРЕКТИРУЙТЕ И ЭТУ СЕКЦИЮ]

ClearModuleList

#AddModule mod_mmap_static.c

AddModule mod_vhost_alias.c

AddModule mod__env.с

AddModule mod_log_conf ig.c

AddModule mod_log_agent.c

AddModule mod_log_referer.c

#AddModule mod_mime_magic . с

AddModule mod_mime . с

AddModule mod_negotiation.c

AddModule mod_status.c

AddModule mod_info.c

AddModule mod_include.c

AddModule mod_auto index . с

AddModule mod_dir.c

AddModule mod_cgi.c

AddModule mod_asis.c

AddModule mod_imap.c

AddModule mod_actions.c

#AddModule mod_spel ing . с

AddModule mod_userdir . с

AddModule mod_alias.c

AddModule mod_rewrite .c

AddModule mod_access . с

AddModule mod_auth.c

AddModule mod_auth_anon . с

AddModule mod_auth_db . с

#AddModule mod_digest.c

#AddModule mod_proxy.c

#AddModule mod_cern_meta . с

AddModule mod_expires . с

AddModule mod_headers . с

#AddModule mocLuser track _e

#AddModule mod_example.c

#AddModule mod_unique_id . с

AddModule mod_so.c

AddModule mod_setenvif .c

#AddModule mod__bandwidth . с

#AddModule mod_put.c

< If Define HAVE_PERL>

AddModule mod_perl.с

</IfDefine>

<IfDefine HAVE_PHP>

AddModule mod_php.c

</IfDefine>

<IfDefine HAVE_PHP3>

AddModule mod_php3 . с

</IfDef ine>

<If Define HAVE_PHP4>

AddModule mod_php4.c

</IfDefine>

<If Define HAVE_DAV>

AddModule mod_dav . с

</IfDefine>

<IfDefine HAVE_ROAMING>

AddModule mod_roaming . с

</IfDef ine>

<IfDefine HAVE_SSL>

AddModule mod_ssl . с

</IfDef ine>

# ExtendedStatus : определяет, будет ли Apache генерировать

# информацию о состоянии в полном объеме (ExtendedStatus On)

# или только базисную информацию (ExtendedStatus Off) ,

# когда вызывается обработчик "server-status". По умолчанию

# используется значение Off.

#

#ExtendedStatus On

#

### Раздел 2: 'Main' конфигурация сервера

#

# Директивы этого раздела устанавливают значения, используемые

# 'main' сервером, который отвечает на любой запрос, не

# обработанный хостом <VirtualHost>.

# Эти значения также задают величины по умолчанию для любых

# контейнеров <VirtualHost>, которые вы можете

# определить позже.

#

# Все эти директивы могут возникать внутри контейнеров

# <VirtualHost>. В этом случае значения по умолчанию будут

# заменены этими величинами для виртуальных хостов.

#

#

# Если ваша директива ServerType (см. выше в разделе

# 'Global Environment') устанавливает значение "inetd",

# следующие несколько директив не оказывают никакого эффекта,

# поскольку их значения определены inetd-конфигурацией.

#

# Переходите к директиве ServerAdmin.

#

# Port: порт, который прослушивает сервер в режиме standalone.

# Если номер порта < 1023, то при загрузке httpd нужно запускать с

# привилегиями root .

# Port 80

# Чтобы запустить httpd как другого пользователя или группу

# пользователей, необходимо вначале запустить httpd как root, a

# он затем сам выполнит переключение.

#

# User/Group: Имя (или #номер) пользователя/группы, под которым

# запустить httpd.

# На SCO (ОПТ 3) используйте User nouser и Group nogroup

# Если на HPUX указать nobody, то нельзя будет использовать

# разделяемую память и выходом из положения может быть

# создание пользователя www и его использование.

#

# ПРИМЕЧАНИЕ : в некоторых системах ядро отвергает запросы на

<


/p> # setgid(Group) или semctl(IPC_SET), если величина (unsigned)

# Group больше 60000;

# не используйте группу nobody на таких системах!

User apache Group apache

# ServerAdmin: Адрес, куда направлять электронную почту

# для решения проблем с сервером.

#

ServerAdmin root@localhost

# ServerName позволяет установить имя хоста, которое будет возвращаться

# клиентам сервера, если оно отличается от имени, получаемого

# программой (т.е. используется "www" вместо настоящего имени хоста). #

# Примечание: Нельзя просто придумать имя хоста и надеяться, что оно

# будет работать. Имя, которое здесь определяется, должно быть

# допустимым DNS-именем для хоста. Если это не понятно -.

# проконсультируйтесь с вашим сетевым администратором.

# Если ваш хост не имеет зарегистрированного DNS-имени, # введите здесь его IP-адрес.

# Вы в любом случае получите доступ к хосту по его адресу

# (например,

http://123.45.67.89/)


и эта директива позволит

# выполнить переадресацию. ServerName localhost

#

# DocumentRoot: Каталог, из которого будут предоставляться документы.

# По умолчанию на все запросы файлы предоставляются из этого каталога,

# но могут использоваться символические ссылки и псевдонимы

# для указания других источников, #

DocumentRoot "/var/www/html"

#

# Каждый каталог, к которому Apache имеет доступ, может быть настроен

# с учетом того, какие сервисы и свойства разрешены и/или запрещены

# в этом каталоге (и его подкаталогах).

# Вначале установим для "default" очень ограниченный набор прав доступа.

#

<Directory />

Options FollowSymLinks AllowOverride None </Directory>

#

# Заметьте: начиная с этого места, необходимо конкретно разрешать

# каждое действие. Если что-то работает не так, как ожидалось,

# убедитесь, что соответствующее действие разрешено.

# Эта строчка должна содержать то же, что и элемент.DocumentRoot.

#

<Directory "/var/www/html">



# Здесь допустимы также значения "None", "All" и любые комбинации

# "Indexes", "Includes", "FollowSymLinks", "ExecCGI" и "MultiViews".

# Заметьте: "MultiViews" должно быть указано *явно* - "Options All"

# не устанавливает эту опцию.

Options Indexes Includes FollowSymLinks

#

# Здесь указывается, какие опции могут переопределить файлы .htaccess,

# находящиеся в каталогах. Значение может быть "All" или любой

# комбинацией "Options", "Filelnfo", "AuthConfig" и "Limit".

AllowOverride None

# Указывает, кто может брать файлы на этом сервере

Order a How, deny

Allow from all

</Directory>

#

# UserDir: Имя каталога, которое добавляется к домашнему каталогу

# пользователя, если получен запрос типа ~user.

#

UserDir public_html

#

# Управление доступом к каталогам UserDir. Ниже приведен пример

# для узла, на котором каталоги объявлены доступными только для чтения.

#

#<Directory /home/*/public_html>

# AllowOverride Filelnfo AuthConfig Limit

# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

# <Limit GET POST OPTIONS PROPFIND>

# Order allow, deny

# Allow from all

# </Limit>

# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

# Order" deny, allow

# Deny from all

# </Limit>

#< /Directory>

#

# Directorylndex: Имя или имена файлов, которые будут использоваться как

# индексные файлы HTML. Разделяйте имена пробелами, если их несколько.

#

Directorylndex index.html index.htm index. shtml index. php index. php4

-> index . php3 index . cgi

#

# AccessFileName: Имя файла, который нужно искать в каждом каталоге

# и который содержит информацию по управлению доступом.

#

AccessFileName .htaccess

<


/p>
#

# Следующие строки защищают файлы .htaccess от просмотра

# Web- клиентами. Поскольку файлы .htaccess часто содержат

# сведения об авторизации, доступ закрывается из соображений

# безопасности. Закомментируйте эти строки, если хотите

# предоставить Web-клиентам возможность просмотра содержимого

# файлов .htaccess. Если вы изменили директиву AccessFileName

# выше, то внесите соответствующие изменения и здесь.

# Поскольку часто для файлов парольной защиты используются

# файлы .htpasswd, защита будет обеспечена.

#

<Files -

н/ч

\ .ht">

Order allow, deny

Deny from all

</Files>

#

# CacheNegotiatedDocs : По умолчанию Apache посылает псевдокомментарий:

# не кэшировать содержимое документов по договоренности. Это указывает

# прокси-серверу не кэшировать документы. Раскомментирование нижестоящей

# строки отменяет это действие и прокси-серверам будет разрешено

# кэширование документов.

#

# CacheNegotiatedDocs

#

# UseCanonicalName: (появилось в 1.3) Если включить эту опцию, то

# всякий раз, когда Apache нужно построить самоссылающийся URL

# (URL, который ссылается на сервер, с которого идет ответ) , он будет

# использовать ServerName и Port для формирования "канонического"

# имени. Когда эта опция выключена, сервер будет использовать

# переданный клиентом hostname:port, если это возможно. Это также влияет

# на SERVER NAME И SERVER PORT в CGI.

#

UseCanonicalName On

#

# TypesConfig указывает где нужно искать файл mime. types (или его аналог)

#

TypesConfig /etc /mime. types

#

# DefaultType - тип MIME по умолчанию для тех документов, тип

# которых сервер не может определить по расширению файлов.

# Если ваш сервер содержит в основном текстовые или

# HTML-документы, следует задать значение "text/plain".

# Если содержимое в основном дцоичное, например, приложения

# или иллюстрации, можно использовать значение

# "application/ octet-stream", чтобы заблокировать попытки

# браузеров отобразить двоичные файлы как текст.

#

DefaultType text/plain

#

# mod mime magic позволяет серверу использовать различные

<


/p>
# особенности самого файла для определения его типа.

# Директива MIMEMagicFile указывает модулю, где

# расположены предлагаемые определения..

# mod mime magic не является частью сервера по умолчанию

# (необходимо добавить его самостоятельно с помощью

# LoadModule [см параграф DSO в разделе 'Global Environment'],

# или рекомпилировать сервер и включить mod mime_magic

# как часть конфигурации) , поэтому он заключен в контейнер

# <IfModule>.

# Это значит, что директива MIMEMagicFile будет отработана

# только если модуль является частью сервера.

#

<IfModule mod_mime_magic . о

MIMEMagicFile /usr/ share/magic

</IfModule>

#

# HostnameLookups : Протоколировать имена клиентов или же только

# их IP-адреса т.е. www.apache.org (on) или 204.62.129.132 (off)

# По умолчанию off, так как для сети намного лучше, когда люди

# должны сознательно включать эту опцию. Вариант on приводит

# к тому, что каждый клиентский запрос порождает по крайней

# мере одно обращение к серверу имен.

#

HoetnameLookupe O££

#

# ErrorLog: Расположение файла протокола ошибок.

# Если директива ErrorLog не задана в контейнере

# <VirtualHost>, сообщения об ошибках, касающихся

# виртуального хоста, будут регистрироваться здесь.

# Если вы определили файл регистрации ошибок для

# контейнера <VirtualHost>, то сообщения об .ошибках хоста

# будут регистрироваться в этом файле, а не здесь.

#

ErrorLog /var/log/httpd/error_log

#

# Log~Level: Управляет количеством сообщений,

# записывающихся в error log.

# Перечень возможных вариантов: debug, info, notice, warn,

# error, crit, alert, emerg.

#

LogLevel warn

#

# Далее следуют команды, определяющие формат мнемонических

# имен, которые будут использоваться в команде CustomLog (см. ниже) .

#

LogFormat "%h %1 %u %t \"%r\" %>s %b \ "%{Referer}i\" \"%{User-

-> Agent }i\" " combined

LogFormat "%h %1 %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "% {User-agent}!" agent

<


/p>
#

# Расположение файла протокола доступа (Обычный Формат Протокола) .

# Если вы не определили никаких файлов протокола доступа в контейнере

# <VirtualHost>, транзакции будут регистрироваться здесь.

# Если вы определили файл регистрации для контейнера

# <VirtualHost>, то транзакции; хоста будут регистрироваться

# в этом файле, а не здесь.

#

CustomLog /var/log/httpd/access_log common

# # Если нужен файл протокола для агентов и рекомендателей -

# раскомментируйте нижестоящие команды.

#

# CustomLog /var/log/httpd/referer_log referer

# CustomLog /var/log/httpd/agent_log agent

# Чтобы использовался один общий файл для протоколирования доступа,

# агента и рекомендателя (Комбинированный Файл Протокола) можно

# использовать следующую команду.

#

# CustomLog /var/log/httpd/access_log combined

#

# Можно добавить строку, содержащую версию сервера

# и имя виртуального хоста для страниц, сгенерированных

# сервером (сообщения об ошибках,, списки ЕТР-каталогов,

# вывод mod status и mod info и т.п.,

# но не документы, сгенерированные CGI) .

# Задайте значение "EMail", чтобы также включить ссылку

# mailto: на ServerAdmin.

# Задайте одно из значений: On | Off | EMail

#

ServerSignature On

#

# Aliases: Укажите здесь столько псевдонимов, сколько' необходимо

# (без ограничения) . Формат следующий: Alias fakename realname

#

# Заметьте: если завершить фиктивное имя fakename символом "/",

# то сервер требует его присутствия в URL. Так, "/icons" не замещается

# в этом примере.

#

Alias /icons/ "/var/www/ icons/"

<Directory " /var/www/ icons ">

Options Indexes MultiViews

AllowOverride None

Order a 1 1 ow , deny

Allow from all

</Directory>

#

# ScriptAlias: Указывает каталоги, в которых находятся сценарии сервера.

# ScriptAliases по сути представляют собой то же самое, что и Aliases,

# кроме документов из каталога realname, которые интерпретируются

<


/p>
# как приложения и запускаются сервером по запросу вместо отправки

# клиенту в качестве документов .

# Правила в отношении "/"/ описанные выше для Alias,

# справедливы и для директив ScriptAlias .

#

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/ "

#

# "/var/www/cgi-bin" следует заменить на CGI-каталог

# ScriptAliased, если он существует и сконфигурирован.

#

<Directory "/var/www/cgi-bin">

AllowOverride None

Options ExecCGI

Order allow, deny

Allow from all

</Directory>

# Redirect позволяет указать клиентам те документы, которые раньше

# были в вашем пространстве имен, а теперь отсутствуют. Это позволяет

# вам сообщить клиентам, где можно найти перемещенный документ.

# Формат: Redirect old-URI new-URL

#

#

# Директивы, управляющие отображением листингов,

# сгенерированных сервером.

#

#

# Fancy Indexing указывает на тип индексирования .каталогов -

# узорчатый или стандартный.

#

IndexOptions Fancylndexing

#

# Addlcon указывает серверу какие значки показывать для

# различных файлов или расширений файлов. Они отображаются

# только для проиндексированных Fancylndexing каталогов.

#

AddlconByEncoding (CMP, /icons /compressed. gif) x-compress x-gzip

AddlconByType (TXT, /icons /text. gif) text/*

AddlconByType (IMG, /icons /irnage2 .gif ) image/*

AddlconByType ( SND , / icons / sound2

.gif)

audio / *

AddlconByType (VID, /icons /movie.gif) video/*

Addlcon /icons /binary. gif .bin .exe

Addlcon / icons /binhex. 'gif .hqx

Addlcon /icons /tar. gif .tar

Addlcon /icons /world2 .gif .wrl .wrl.gz .vrml .vrm .iv

Addlcon /icons /compressed. gif .z .z .tgz .gz .zip

Addlcon /icons /a. gif .ps .ai .eps

Addlcon /icons /layout. gif .html .shtml .htm .pdf

Addlcon /icons /text. gif . txt

<


/p>
Addlcon /icons/c.gif .с

Addlcon /icons/p.gif .pi .py

Addlcon / icons /f. gif .for

Addlcon /icons/dvi.gif .dvi

Addlcon /icons /uuencoded.gif .uu

Addlcon /icons/script. gif .conf .sh . shar .csh . ksh .tcl

Addlcon / icons /tex. gif .tex

Addlcon /icons /bomb. gif core

Addlcon /icons /back. gif ..

Addlcon /icons/hand. right. gif README

Addlcon /icons /folder. gif ^^DIRECTORY^^

Addlcon /icons /blank. gif ^^BLANKICON^^

#

# Defaultlcon указывает, какой значок .использовать для файлов,

# для которых он явно не указан.

#

Defaultlcon /icons/unknown. gif

# AddDescription позволяет разместить краткое описание после.

# имени файла в генерируемых сервером индексах.

# Формат: AddDescription "описание" ИмяФайла

#

# AddDescription "GZIP compressed document" . gz

# AddDescription "tar archive" .tar

# AddDescription "GZIP compressed tar archive" .tgz

#

#

# ReadmeName - имя README-файла, которое сервер будет искать

# по умолчанию, чтобы добавить к списку каталогов.

#

# HeaderName - имя файла, которое сервер будет искать,

# чтобы добавить к началу индекса каталогов.

#

# Сервер сначала будет искать файл name.html и учтет его,

# если найдет. Если этот файл не обнаружится, то будет

# выполнен поиск файла name . txt . Если сервер найдет

# этот файл, то включит его как текстовый файл.

#

ReadmeName README

HeaderName HEADER

#

# Indexlgnore - список имен файлов, игнорируемых

# при индексировании каталога. Разрешается использование

# символов подстановки в соответствии с синтаксисом оболочки.

#

Indexlgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

#

# AddEncoding позволяет указать некоторым браузерам

# (Mosaic/X 2.1+) распаковывать информация? на лету.

# Примечание : не все браузеры это поддерживают .

<


/p> # Несмотря на схожесть названий, следующие директивы Add*

# не оказывают влияния на директивы настройки FancyIndexing

# приведенные выше. #

AddEncoding x-compress Z AddEncoding x-gzip gz

#

# AddLanguage позволяет указать язык, используемый в документе., Затем

# можно выполнить согласование содержимого, чтобы вернуть браузеру файл

# использованием понимаемого им языка. Заметьте: суффикс не обязан быт

# таким же, как и ключевое слово языка - те, кто имеет документы на

# польском, для которого стандартный сетевой код pi, могут использоват

# "AddLanguage p1.ро" во избежание двусмысленности с таким же

# суффиксом для сценариев perl. #

AdSLanguage en .en

AddLanguage fr .fr

AddLanguage de .de

AddLanguage da .da

AddLanguage el .el

AddLanguage it .it

#

# LanguagePriority позволяет назначить приоритет для некоторых

# языков на случай, если при согласовании содержимого не удастся

# достичь единого мнения.

# Просто перечислите языки в убывающем порядке предпочтения. #

LanguagePriority en fr de

#

# AddType позволяет откорректировать mime.types без их реальной

# модификации, а также позволяет установить определенный тип

# для некоторых файлов.

# Далее приведены директивы для РНР4 (конфликт с PHP/FI, ниже): <IfModule mod_php4.c>

AddType application/x-httpd-php .php4 .php3 .phtml .php

AddType application/x-httpd-php-source .phps </IfModule>

# Далее приведены директивы для РНРЗ: <IfModule mod_php3.c>

AddType application/x-httpd-php3 .php3

AddType application/x-httpd-php3-source .phps </IfModule>

# Далее приведены директивы для PHP/FI (PHP2):

<IfModule mod_php.c>

AddType application/x-httpd-php .phtml </IfModule>

AddType application/x-tar .tgz

# AddHandler позволяет назначить некоторые расширения файлов

# "обработчикам", действия которых не связанны с типом файлов.

# Их можно встроить в сервер либо добавить командой Action (см. ниже). #



# Если вы хотите использовать дополнения на сервере, или CGI вне

# каталогов ScriptAliased, раскомментируйте следующие строки. #

# Для использования сценариев CGI: #

AddHandler cgi-script .cgi #

# Для использования файлов HTML, анализируемых сервером: #

AddType text/html .shtml AddHandler server-parsed .shtml

#

# Раскомментируйте следующую строку, чтобы разрешить

# использовать свойство Apache "send-asis HTTP file" #

#AddHandler send-as-is asis

#

# Для использования файлов рисунков, анализируемых сервером: #

AddHandler imap-file map #

# Чтобы разрешить использование плат типов: #

#AddHandler type-map var

# Action позволяет указать типы источников, которые будут запускать

# сценарий при указании соответствующего файла. Это позволяет

# избежать использования повторяющихся URL в часто используемых

# процессорах CGI-файлов.

# Формат: Action media/type /cgi-script/location

I Формат: Action handler-name /cgi-script/location #

# MetaDir: указывает имя каталога, в котором Apache может

# найти метафайлы. Эти файлы содержат дополнительные HTTP-заголовки,

# включаемые в документы при отправке.

# #MetaDir .web

#

# MetaSuffix: указывает суффикс имен файлов, содержащих метаинформацию. #

# MetaSuffix .meta

#

# Настраиваемые ответные сообщения об ошибках (стиль Apache)

# имеется три варианта #

# 1) обычный текст

# ErrorDocument 500 "The server made a boo boo.

# N.B. Символ (") является признаком текста и не отображается

# 2) локальное перенаправление

#ErrorDocument 404 /missing.html

# для перенаправления на локальный URL /missing.html

#ErrorDocument 404 /cgi-bin/missing_handler .pi

# N.B. Можно перенаправлять на сценарий или документ,

# используя включения со стороны сервера.

#

# 3) внешнее перенаправление

#ErrorDocument 402 http : / /some . other_server . com/subscription_inf о . html

# N.B. Многие переменные окружения, связанные

# с исходным запросом, в таком сценарии будут недоступны.

#

# Следующие команды модифицируют обычную процедуру ответа HTTP.

# Первая команда запрещает keepalive для Netscape 2.x и браузеров,

# которые представляются как Netscape 2.x. Известны проблемы,

# связанные с этим. Вторая команда - для Microsoft Internet

# Explorer 4.0Ь2, которая имеет неправильную реализацию НТТР/1.1

# и неправильно поддерживает keepalive, когда эта опция

# используется в ответах 301 и 302 (перенаправление) .

BrowserMatch "Mozilla/2" nokeepalive

BrowserMatch "MSIE 4\.0b2; " nokeepalive downgrade- 1.0 force-response- 1. 0

#

# Следующие команды запрещают ответы HTTP/1.1 браузерам,

# которые нарушают спецификацию НТТР/1 отсутствием понимания самых

# простых ответов 1.1.

#

BrowserMatch "RealPlayer 4\.0" force-response-1 .0

BrowserMatch "Java/l\.0" force-response-1 . 0

BrowserMatch "ODK/IN.O" force-response-1 .0

# Если модуль perl установлен, то следующие директивы выполнятся.

<IfModule mod_perl.c>

Alias /perl/ /var/www/perl/

<Location /perl>

SetHandler perl-script

PerlHandler Apache: : Registry

Options +ExecCGI

</Location>

</IfModule>

#

# Разрешает http-размещение (наподобие публикации в Netscape Gold) .

# Используйте htpasswd для генерации /etc/httpd/conf/passwd.

# Необходимо раскомментировать эти две строки и в начале этого файла:

#

#LoadModule put_module modules /mod_put. so

#AddModule mod_put.c

#

#Alias /upload /tmp

#<Location /upload>

# EnablePut On

<


/p>
# AuthType Basic

# AuthName Temporary

# AuthUserFile /etc/httpd/conf/passwd

# EnableDelete Off

# umask 007

# <bimit PUT>

# require valid-user

# </Limit>

#</Location>

#

# Позволяет серверу возвращать отчет, находящийся по URL

#

http://servername/server-status


# Для включения этого режима следует изменить

# ".your_domain.com" на ваш домен.

#

#<Location /server-status>

# SetHandler server-status

# Order deny, allow

# Deny from all

# Allow from .your_domain.com

#</Location>

# Позволяет отчеты о конфигурации удаленного сервера

# с URL http: //servername/server-info

# (необходимо, чтобы mod info. с был загружен)

# Для включения этого .режима следует изменить

# ".your_domain.com" на ваш домен.

#

#<bocation /server- info>

# SetHandler server- info

# Order deny, allow

# Deny from all

# Allow from .your_dpmain.com

#</Location>

# Разрешает доступ к документам локального компьютера с localhost

Alias /doc/ /usr/share/doc/

<Location /doo

order deny, allow

deny from all

allow from localhost

Options Indexes FollowSymLinks

</Location>

# Имеются сообщения, что некоторые люди пытаются незаконно использовать

# старую ошибку со времен версии 1.1. Эта ошибка была в сценарии CGI,

# поставлявшемся как часть Apache. Сняв комментарии с этих строк, можно

# перенаправить эти атаки на протоколирующий сценарий, который находится

# на phf.apache.org. Или можно самостоятельно записывать их,

# используя сценарий support/phf abuse log.cgi.

#

#<Location /cgi-bin/phf*>

# Deny from all

<


/p> ### Раздел З: Виртуальные хосты

# VirtualHost: Если вы хотите поддерживать несколько

# доменов/имен хостов на вашем компьютере, можете задать

# для них контейнеры VirtualHost. См. документацию по адресу

# <URL:

http://www.apache.org/docs/vhosts/


>

# для ознакомления с подробностями перед тем, как

# приступить к установке виртуальных хостов.

# Можно использовать в командной строке опцию '-S', чтобы

# проверить конфигурацию вашего виртуального хоста.

#

# Если вы хотите использовать именованные виртуальные

# хосты, необходимо определить, по крайней мере, один

# IP-адрес (и номер порта) для них. #

#NameVirtualHost 12.34.56.78:80 #NameVirtualHost 12.34.56.78

#

# Пример VirtualHost:

# Практически любая директива Apache может вставляться в

# контейнер VirtualHost .

#

# <VirtualHos t ip . address . of . host . some_domain . com>

# ServerAdmin webmasterShost .some_domain.com

# DocumentRoot /www/docs/host . some_domain. com

# ServerName host . some_domain . com

# ErrorLog logs/host .some_domain.com-error_log

# CustomLog logs /host. some_domain.com-access_log common

#</VirtualHost>

#<VirtualHost _default_:*>

#</VirtualHost>

<If Define HAVE_SSL>

##

## SSL Virtual Host Context

##

# По умолчанию Apache только слушает порт 80.

# Определение виртуального сервера (см. ниже) не вызывает

# автоматического прослушивания порта виртуального сервера.

Listen 443

<VirtualHost _default_:443>

# Общая установка виртуального хоста

DocumentRoot "/var/www/html"

# SSL Engine ключ:

# Разрешение/запрет SSL для этого виртуального хоста.

SSLEngine on

# SSL шифры:

# Список шифров, которые клиент может использовать.

# См. в документе mod ssl полный список шифров.

#SSLCipherSuite ALL: !ADH:RC4+RSA:+HIGH: +MEDIUM: +LOW: +SSLv2 : +EXP: +eNULL

# Сертификат сервера:

# Адресует SSLCertificateFile на РЕМ-кодированный сертификат.

# Если сертификат зашифрован, появится запрос пароля.

# Обратите внимание: kill -HUP- вызовет повторный запрос

# пароля. Тестовый сертификат можно сгенерировать с помощью

# `make certificate' в ходе построения. Если вы используете и

# RSA и DSA сертификаты, то оба можно конфигурировать одновременно

# (чтобы также разрешить использование шифров DSA и т.д.) .

SSLCertificateFile /etc/httpd/conf /ssl .crt/server ,crt

#SSLCertif icateFile /etc/httpd/conf /ssl . crt/server-dsa. crt

# Частный ключ сервера:

# Если ключ не объединен с сертификатом, используйте эту директиву,

# чтобы указать файл ключа. Если вы используете и RSA и DSA

# сертификаты, то оба можно конфигурировать одновременно

# (чтобы также разрешить использование шифров DSA и т.д.) .

<


/p>
SSLCertif icateKeyFile /etc/httpd/conf /ssl . key/server . key

#SSLCertificateKeyFile /etc/httpd/conf /ssl. key/server-dsa. key

# Цепочка сертификатов сервера :

# Адресует SSLCertificateChainFile на файл, содержащий

# соединение РЕМ- кодированных СА- сертификатов. Он

# формирует цепочку сертификатов для серверного сертификата .

# Альтернатива: указанный файл может быть тем же, что и файл

# SSLCertificateFile, если СА-сертификаты, для удобства,

# непосредственно связаны с серверным сертификатом.

#SSLCertificateChainFile /etc/httpd/conf /ssl . crt/ca.crt

# Авторизация сертификата (СА) :

# Задайте пути верификации сертификата СА, т.е. место где

# можно

найти

сертификаты СА для аутентификации клиентов или

# один большой файл, содержащий все сертификаты (файл должен

# быть РЕМ-кодированным) .

# Внимание : Внутри SSLCACertificatePath следует

# хешировать ссылки на файлы сертификатов. Пользуйтесь

# Makefile для обновления хешированных ссылок после

# внесения изменений.

#SSLCACertificatePath /etc/httpd/conf /ssl. crt

#SSLCACertificateFile /etc/httpd/conf /ssl. crt/ca-bundle. crt

# Список отмененных сертификатов (CRL) :

# Задайте путь отмененных СА, чтобы можно было найти список

# отмененных СА для аутентификации клиентов или один большой файл,

# содержащий все сертификаты (файл должен быть РЕМ-кодированным) .

# Внимание : Внутри SSLCARevocationPath следует

# хешировать ссылки на файлы сертификатов. Пользуйтесь

# Makefile для обновления хешированных ссылок после

# внесения изменений.

#SSLCARevocationPath /etc/httpd/conf /ssl . crl

#SSLCARevocationFile /etc/httpd/conf /ssl . crl/ca-bundle. crl

# Аутентификация клиента (тип) :

# Тип и глубина верификации сертификатов клиентов. Типы:

# none, optional, require и optional no ca. Глубина

# задается как номер, который определяет, насколько глубоко

# следует проверять цепочку издателя сертификата,

# чтобы убедиться в негодности сертификата.

#SSLVerifyClient require

#SSLVerifyDepth 10

# Контроль доступа:

# Посредством SSLRequire можно управлять доступом к каталогам,

# задавая произвольные булевы выражения, содержащие обращения

# к серверным переменным. Синтаксис выражений представляет собой

# нечто среднее между С и Perl. Подробности см. в файле mod ssl.

#<Location />

#SSLReqUire ( %{SSL_CIPHER) ! ~ m/

n

(ЕХР |NULL) -/ \

# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \

# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \

# and %{TIME_WDAY) >= 1 and %{TIME_WDAY} <= 5 \

# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \

<


/p>
tt or %{REMOTE_ADDR) =~ m/

n

!92\ .76\ . 162\ . [0-9] +$/

#</Location>

# Опции SSL Engine:

# Установка различных опций SSL engine.

# о FakeBasicAuth:

# Трансляция клиента Х.509 в Basic Authorisation.

# Это значит, что для контроля доступа могут

# использоваться стандартные методы Auth/DBMAuth.

# Имя пользователя представляет собой однострочную версию

# клиентского сертификата Х.509.

# Обратите внимание, что от пользователя не требуется

# пароль. Каждый ввод в пользовательском файле требует

# пароля: ~xxj31ZMTZzkVA' .

# о ExportCertData :

# Экспортируются две дополнительных переменных:

# SSL CLIENT CERT и SSL_SERVER_CERT . Они

# содержат РЕМ-кодированные сертификаты сервера

# (они существуют всегда) и клиента (существуют

§ только, если используется аутентификация клиента) .

# Это можно использовать для импорта сертификатов

# в CGI- сценарии.

# о StdEnvVarc:

# Экспортируются

V

SSL *' переменные окружения,

# относящиеся к стандартным SSL/TLS.

# По умолчанию это экспортирование заблокировано из

# соображений производительности, поскольку операция

# извлечения относится к достаточно дорогим, и бесполезна

# для обслуживания статического контента. Поэтому

# разрешение выдается обычно только для CGI- и

# SSI-запросов.

# о CompatEnvVars :

# Экспортируются устаревшие переменные окружения

# для совместимости со старыми версиями Apache-SSL 1.x,

# mod ssl 2.0.x, Sioux 1.0 и Stronghold 2.x. Используйте

# для совместимости с существующими CGI-сценариями.

# о StrictRequire:

# Запрещается доступ, когда применяется "SSLRequireSSL"

f или "SSLRequire", даже в ситуации "Satisfy any",

# т.е. когда применяется эта опция, доступ запрещен

# и никакой другой модуль изменить этого не может..

# OptRenegotiate:

# Разрешает оптимизированную обработку SSL-соединения

# когда SSL-директивы используются в контексте

# отдельного каталога.

tSSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire

<Files ~ "\. (cgi|shtml)$">

SSLOptions +StdEnvVars

</Files>

<Directory "/var/www/cgi-bin">

SSLOptions +StdEnvVars

</Directory>

# Примечание: Большинство проблем взлома клиентов

# связаны с возможностями подтверждения активности

# HTTP (keepalive) , поэтому следует запретить keepalive

<


/p> # для этих клиентов. Используйте для этого переменную

# "nokeepalive".

SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

# Протокол для каждого сервера:

# Место хранения пользовательского SSL файла протокола,

# Используйте эту опцию, если нужен компактный файл

# протокола SSL (без ошибок) на виртуальном хосте.

CustomLog /var/log/httpd/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

</IfDefine>

Заметьте: этот файл содержит и комментарии, и реальные команды конфигурирования. Комментарии начинаются с символа диеза (#). Команды состоят из имени команды, за которым следует параметр.

В файле httpd.conf три раздела: Global Environment, Main Server Configuration и Virtual Hosts. Рассмотрим каждый из них подробно.


Содержание раздела