Основные особенности Apache


Эти параметры конфигурации управляют настройкой ядра Apache, и всегда доступны.

AccessConfig директива
Синтаксис: AccessConfig имя-файла
Значение по умолчанию: AccessConfig conf/access.conf
Контекст: конфигурация сервера, virtual host
Состояние: основное
Сервер будет читать этот файл для дополнительных директив после чтения ResourceConfig файла. Имя-файла - относительно ServerRoot. Действие этой дерективы может быть заблокировано следующим образом:
AccessConfig /dev/null
Исторически, этот файл, содержит только <Directory> разделы, хотя фактически, он может теперь содержать любую директиву сервера, допустимую в контексте конфигурации сервера.
AccessFileName директива
Синтаксис: AccessFileName имя-файла
Значение по умолчанию: AccessFileName .htaccess
Контекст: конфигурация сервера, virtual host
Состояние: основное
При выдаче документа клиенту сервер ищет файл управления доступом с этим именем в каждом каталоге пути к документу, если файлы управления доступом допускаются для того каталога. Например:
AccessFileName .acl
Перед возвратом документа /usr/local/web/index.html, сервер будет читать /.acl, /usr/.acl, /usr/local/.acl и /usr/local/web/.acl для проверки доступа, если они не были заблокированы с помощью
<Dirctory />
AllowOverride None
</Directory>
AddModule директива
Синтаксис: AddModule модуль модуля ...
Контекст: конфигурация сервера
Состояние: основное
Совместимость: AddModule доступен тольоко в Apache 1.2 выше
Сервер может иметь модули, которые были скомпилированы, но активно не используются. Эта директива может применяться для того, чтобы инициализировать использование этих модулей. Сервер поставляется со списком pre-loaded активных модулей; этот список может быть очищен с помощью ClearModuleList директивы.
AllowOverride директива
Синтаксис: AllowOverride override override ...
Значение по умолчанию: AllowOverride All
Контекст: каталог
Состояние: основное
Когда сервер находит .htaccess файл (как определено AccessFileName) ему необходимо знать какие директивы, объявленные в том файле могут отменять ранее утановленную информацию доступа.
Эта директива может быть установлена в None, т.е. чтобы сервер не читал файл .htaccess. Если она установленна в All - сервер будет допускать все директивы .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 - допускает использование директив, управляющих специфическими особенностями каталога (Options и XBitHack).
AuthName директива
Синтаксис: AuthName auth-область
Контекст: каталог, .htaccess
Отмена: AuthConfig
Состояние: основное
Эта директива присваивает каталогу имя как области доступа. Эта область дается пользователю для запроса у него username и пароля. Директива должна использоваться совместно с AuthType и require директивами, и директивами типа AuthUserFile и AuthGroupFile.
AuthType директива
Синтаксис: AuthType тип
Контекст: каталог, .htaccess
Отмена: AuthConfig
Состояние: основное
Эта директива выбирает тип идентификации пользователя для каталога. Только Basic в настоящее время реализован. Эта деректива должна использоваться совместно с дерективами AuthName и require, и директивами типа AuthUserFile и AuthGroupFile.
BindAddress директива
Синтаксис: BindAddress saddr
Значение по умолчанию: BindAddress *
Контекст: конфигурация сервера
Состояние: основное
UnixR http сервер может быть настроен на все IP-адреса машины сервера, или только на один IP-адрес. Saddr может иметь одно из следующих значений:
" *
" Адрес IP
" Полное domain name
Если значение - *, то сервер будет отвечать на запросы с любого IP-адреса машины, иначе он будет принимать запросы только на определенном адресе IP.
Эта опция может использоваться как альтернативный метод для поддержки виртуальных серверов, вместо использования <VirtualHost> разделов.
См. Также: DNS проблемы
См. Также: Установка использования адресов и портов Apache.
ClearModuleList директива
Синтаксис: ClearModuleList
Контекст: конфигурация сервера
Состояние: основное
Совместимость: ClearModuleList доступен только в Apache 1.2 и выше.
Сервер поставляется со встроенным списком активных модулей. Эта директива очищает список. Применение этой дерективы подразумевает, что список модулей будет затем повторно заполнен с помощью директивы AddModule.
DefaultType директива
Синтаксис: DefaultType mime-тип
Значение по умолчанию: DefaultType text/html
Контекст: конфигурация сервера, virtual host, каталог, .htaccess
Отмена: FileInfo
Состояние: основное
Не исключена ситуация, когда сервер получает запрос на документ, mime-тип которого не определен.
Т.к. в ответе сервер должен сообщить клиенту Content-type документа, то в случае неизвестного mime-типа он использует DefaultType. Например:
DefaultType image/gif
был бы подходящим для каталога, который содержит много gif изображений с именами файлов с .gif расширением.
<Directory> директива
Синтаксис: <Directory directory> ... </Directory>
Контекст: конфигурация сервера, virtual host
Состояние: основное
<Directory> и </Directory> используется, чтобы включить группу директив, которые необходимо применить только к указанному каталогу и его подкаталогам. Может исполбзоваться любая директива применимая в контексте каталога. Directory является или полным путем к каталогу, или wild-card строкой. В wild-card строке, "? " соответствует любому одиночному символу, и " * " соответствует любым последовательностям символов. Пример:
<Directory /usr/local/httpd/htdocs>
Options Indexes FollowSymLinks
</Directory>
Apache 1.2 и выше: Расширенные регулярные выражения могут также использоваться, с добавлением ~ символа. Например:
<Directory ~ " ^/www/. * / [0-9] {3)">
соответствует каталогам в /www/, имена которых состоят из трех чисел.
Если несколько разделов <Directory> соответствуют каталогу (или образцу) содержащему документ, то директивы применяются в порядке самого короткого соответствия сначала в соответствии с директивами из .htaccess файла. Например, с
<Directory />
AllowOverride None
</Directory>
<Directory /home/*>
AllowOverride FileInfo
</Directory>
для доступа к документу /home/web/dir/doc.html будут выполнены следующие шаги:
" Выполнится директива AllowOverride None (отключение .htaccess файл).
" Выполнится директива AllowOverride FileInfo (для каталога /home/web).
" Выполнятся любые FileInfo директивы в /home/web/.htaccess
Обратите внимание, что по умолчанию Apache значение доступа для <Directory /> - Allow from All. Это означает что Apache будет выдавать любой файл содержащийся в URL. Рекомендуется, чтобы Вы заменили этот блок на блок типа
<Directory />
Order Deny,Allow
Deny from All
</Directory>
и затем отмените это для каталогов, которые Вы хотите сделать доступными. См. Советы По Защите для более полной информации.
Разделы <Directory> обычно применяются в access.conf файле, но они могут использоваться в любом файле конфигурации. <Directory> директивы не могут быть вложенными, и не могут появляться в <Limit> разделе.
DocumentRoot директива
Синтаксис: DocumentRoot каталог-имя-файла
Значение по умолчанию: DocumentRoot /usr/local/etc/httpd/htdocs
Контекст: конфигурация сервера, virtual host
Состояние: основное
Эта директива устанавливает каталог, из которого httpd будет брать файлы. Если это не согласовано директивой вроде Alias, сервер конкатенирует путь от запрошенного URL до корня документа, чтобы определить путь к документу. Пример:
DocumentRoot /usr/web
теперь обращение к http://www.my.host.com/index.html будет транслироваться в /usr/web/index.html.
Замечание: имеется ошибка в mod_dir, которая вызывает проблемы, когда DocumentRoot имеет конечным символом "/"(то есть " DocumentRoot /usr/web/ ") - пожалуйста избегите таких объявлений.
ErrorDocument директива
Синтаксис: ErrorDocument код-ошибки документ
Контекст: конфигурация сервера, virtual host, каталог, .htaccess
Состояние: основное
Отмена: FileInfo
Совместимость: контексты - каталог и .htaccess доступны только в Apache, 1.1 и позже.
В случае проблемы или ошибки, Apache может быть конфигурирован так, чтобы выполнить одно из четырех действий:
1. выдать клиенту простое жестко закодированное сообщение об ошибках .
2. выдать настроенное сообщение .
3. перенаправить(redirect) запрос локальному URL, чтобы обработать проблему/ошибку
4. перенаправить(redirect) запрос внешнему URL, чтобы обработать проблему/ошибку
Первое действие выполняется по умолчанию, в то время как действия 2-4 должны быть сконфигурированы директивой ErrorDocument, которая сопровождается HTTP-кодом_ответа и сообщением или URL.
Сообщения в этом контексте начинаются с одиночной кавычки ("), которая не включается в сообщение непосредственно. Apache будет иногда предлагать дополнительную информацию относительно проблемы/ошибки.
URLs может начинаться с наклонной черты вправо (/) для локального URLs, или быть полным URL, который поможет пользователю решить проблему. Примеры:
ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 /subscription_info.html
ErrorDocument 403 "Извините, сегодня доступ Вам закрыт
Обратите внимание, что, когда Вы определяете ErrorDocument, который указывает на удаленный URL (то есть что-нибудь с методом типа "http" в начале) Apache пошлет переназначающий ответ пользователю, чтобы сообщить ему, где найти нужный документ, даже если документ находиться на том же самом сервере .. За этим следуют некоторые особенности, наиболее важной является та, что если Вы используете директиву "ErrorDocument 401", то она должна ссылатся на локальный документ. Это обусловленно характером HTTP базисной опознавательной схемы.
См. Также: документация настраиваемых ответов.
ErrorLog директива
Синтаксис: ErrorLog имя_файла
Значение по умолчанию: ErrorLog logs/error_log
Контекст: конфигурация сервера, virtual host
Состояние: основное
Директива файла регистрации ошибок устанавливает имя файла, в котором сервер регистрирует любые ошибки с которыми он сталкивается. Если имя файла не начинается с символа слеш (/), то путь к файлу устанавливается относительно ServerRoot. Пример:
ErrorLog /dev/null
эта директива отключает регистрацию ошибок.
ЗАЩИТА: См. документ "Советы по конфигурации защиты сервера" для информации о том, почему ваша защита может быть сломана, если каталог, в котором хранятся logfiles доступны для записи всем, а не только пользователю под которым стартует сервер.
<Files>
Синтаксис: <Files имя-файла> ... </Files>
Контекст: конфигурация сервера, virtual host, htaccess
Состояние: основное
Совместимость: доступно в Apache 1.2 и выше.
<Files> директива предназначена для управления доступом к файлу. Эта директива тесно связана с директивами <Directory> и <Locations>, они должны быть согласованы с </Files> директивой. Директивы, которые применяются к данному имени файла должны быть перечислены внутри. <Files> разделы обрабатываются в том порядке, в каком они появляются в файле конфигурации, после <Directory> разделов и объявления .htaccess файлов, но перед разделами <Location>.
Параметр имя-файла должен включить имя файла, или wild-card, в котором "?" соответствует любому одиночному символу, а "*" соответствует любой последовательности символов. Расширенные регулярные выражения также могут использоваться, с добавлением символа ~. Например:
<Fales ~ " .(gif|jpe?g|png)$">
будет соответствовать наиболее общим графическим форматам Internet.
Обратите внимание, что в отличие от разделов <Directory> и <Location>, <Fales> разделы могут использоваться внутри .htaccess файлов. Это позволяет пользователям управлять доступом к их собственным файлам на уровне file-by-file. Когда этот раздел используется в .htaccess файле, если имя-файла не начинается с символа "/", путь к нему будет добавляться автоматически.
Group директива
Синтаксис: Group unix-группа
Значение по умолчанию: Group #-1
Контекст: конфигурация сервера, virtual host
Состояние: основное
Директива Group устанавливает группу, под которой сервер отвечает на запросы. Директива имеет смысл, если сервер будет запущенн под root в режиме statdalone. Unix-группа - это или:
" Имя группы - дается имя группы.
" # номер группы - ссылается на номер группы.
Рекомендуется, чтобы Вы создали новую группу специально для выполнения сервера. Некоторые администраторы используют пользователя nobody, но это не всегда возможно или желателено.
Обратите внимание: если Вы запускаете сервер как non-root пользователь, то Вы не сможете изменить его группу на заданную директивой Group, и он будет продолжать выполняться под группой первоначального запуска.
Специальное примечание: Использование этой директивы в <VirtualHost> требует правильной конфигурации suEXEC оболочки. Если эта директива исползуется внутри <VirtualHost>, она будет иметь смысл только для той группы, которой доступно выполнение CGI .
ЗАЩИТА: См. User для обсуждения вопросов защиты.
HostNameLookups директива
Синтаксис: HostNameLookups boolean
Значение по умолчанию: HostNameLookups on
Контекст: конфигурация сервера, virtual host
Состояние: основное
Эта директива подключает поиск в DNS, чтобы host имена могли регистрироваться в log-файлах. Наличие этой директивы позволяет использовать имена в <Limit> блоках для управления доступом.
На часто посещаемых сайтах рекомендуется установить эту директиву в off, так как доступ к поисковым таблицам DNS длителен по времени. Утилита logresolve, поставляемая в каталоге support/, может применятся для поиска host имени по регестрируемому IP-адресу автономно.
IdentityCheck директива
Синтаксис: IdentityCheck boolean
Значение по умолчанию: IdentityCheck off
Контекст: конфигурация сервера, virtual host
Состояние: основное
Эта директива включает регистрации, соответствующую RFC1413, удаленного имени пользователя для каждого соединения, где клиентская машина выполняет identd или что - нибудь подобное. Эта информация сохраняется в файле регистрации доступа. Boolean может быть установлен в on или off.
Этой информации нельзя доверять, разве-что для элементарной трассировки.
Обратите внимание, что это может вызывать серьезные временные задержки при обращении к вашему серверу, так как для каждого запроса необходимо выполнить поиск. Когда работает firewalls, каждый поиск, вероятней всего, будет неудачным и добавлять за счет этого 30 секунд ожидания к каждой передаче. Т.о. это лучше отключить для web-сервера, доступного в Internet.
<IfModule>
Синтаксис: <IfModule [!]имя модуля > ... </IfModule>
Значение по умолчанию: None
Контекст: all
Состояние: основное
Совместимость: ScriptLog доступен только в Apache 1.2 и выше.
<IfModule тест> ... </IfModule> раздел используется, чтобы отметить директивы, которые являются условными. Директивы внутри раздела IfModule обрабатываются только, если тест true. Если тест false, все между маркерами начала и конца раздела игнорируется.
Тест в <IfModule> директиве это одна из двух форм:
" имя модуля
" !имя модуля
В первом случае, директивы между маркерами начала и конца обрабатываются если модуль имя-модуля компилирован в Apache. Второй формат выполняет директивы раздела , если имя-модуля не компилирован в Apache.
Параметр имени модуля - имя модуля как имя файла модуля. Например, mod_rewrite.c.
<IfModule> разделы допускают вложеннность.
KeepAlive
Синтаксис: (Apache 1.1) KeepAlive максимальное-кол.запросов
Значение по умолчанию: (Apache 1.1) KeepAlive 5
Синтаксис: (Apache 1.2) KeepAlive on/off
Значение по умолчанию: (Apache 1.2) KeepAlive on
Контекст: конфигурация сервера
Состояние: основное
Совместимость: KeepAlive доступен только в Apache 1.1 и выше.
Эта директива включает Keep-Alive поддержку.
Apache 1.1: Устанавливает max-кол.запросов обрабатываемых Apache одновременно. Ограничение наложено, чтобы предотвратить сервер от перегрузки. Если установить эту директиву в 0 - сервер не будет отвечать на клиентские запросы.
Apache 1.2 и выше: Установка в "on" включает постоянно открытое соединение, "off" отключает. См. также MaxKeepAliveRequests директиву.
KeepAliveTimeout
Синтаксис: KeepAliveTimeout секунд
Значение по умолчанию: KeepAliveTimeout 15
Контекст: конфигурация сервера
Состояние: основное
Совместимость: KeepAliveTimeout доступен только в Apache 1.1 и выше.
Заданное число секунд Apache будет ждать следующий запрос перед закрытием соединения.
Listen
Синтаксис: Listen [IP адрес:] номер порта
Контекст: конфигурация сервера
Состояние: основное
Совместимость: Listen доступен только в Apache 1.1 и выше.
Listen директива настраивает Apache на более чем один IP адрес или порт; по умолчанию он отвечает на запросы на всех интерфейсах IP, но только на порте, заданном директивой Port.
См. Также: DNS проблемы
См. Также: Установка адресов и портов Apache
См. Также: Известные Ошибки
<Limit> директива
Синтаксис: <Limit метод метод ... > ... </Limit>
Контекст: любой
Состояние: основное
<Limit> и </Limit> используется, чтобы включить группу директив управления доступом, которые затем применяются только к определенным методам доступа, где метод - любой допустимый HTTP метод. Любая директива за исключением другой <Limit> или <Directory> может использоваться. Пример:
<Limit GET POST>
require valid-user
</Limit>
Если директива управления доступом появляется снаружи <Limit> директивы, то она применяется ко всем методам доступа.
<Location>
Синтаксис: <Location URL> ... </Location>
Контекст: конфигурация сервера, virtual host
Состояние: основное
Совместимость: Location доступно только в Apache 1.1 и выше.
<Location> директива обеспечивает управление доступом к URL. Она подобна директиве <Directory> и должна быть с ней согласована. Директивы, которые относятся к данному URL должны быть перечислен внутри. <Location> разделы обрабатываются в порядке их появления в файле конфигурации, после <Directory> раздела и объявления .htaccess файлов.
Обратите внимание, что URL - префикс должен быть сохранен для proxy запросов в форме /path/, и не должен включить http://servername. Он(URL) не обязательно должен защищать каталог (это может быть индивидуальный файл, или ряд файлов), и может включать wild-card. В wild-card строке, "?" cоответствует любому одиночному символу, и "*" соответствует любой последовательности символов.
Apache 1.2 и выше: Расширенные регулярные выражения могут также использоваться, с добавлением ~ символа. Например:
<Location ~ "/(extra|special)/data">
соответствует URLs, которые содержат подстроку "/extra/data" или "/special/data".
Применение Location особенно эффективно когда она объединена с SetHandler директивой. Для примера, чтобы включить просмотр статуса сервера только в браузере с foo.com, Вы могли бы использовать:
<Location /status>
SetHandler server-status
order deny,allow
deny from all
allow from .foo.com
</Location>
MaxClients директива
Синтаксис: MaxClients число
Значение по умолчанию: MaxClients 256
Контекст: конфигурация сервера
Состояние: основное
MaxClients директива устанавливает ограничение числа одновременно обслуживаемых запросов; не более чем это число порожденнных процессов сервера будут созданы.
MaxKeepAliveRequests
Синтаксис: MaxKeepAliveRequests число
Значение по умолчанию: MaxKeepAliveRequests 100
Контекст: конфигурация сервера
Состояние: основное
Совместимость: Доступна только в Apache1.2 и выше.
MaxKeepAliveRequests директива ограничивает число допустимых запросов на одно соединение когда KeepAlive включен. Если она установлена в "0", допускаются неограниченные запросы. Мы рекомендуем, чтобы эта установка была по возможности выше для большей производительности сервера.
MaxRequestsPerChild директива
Синтаксис: MaxRequestsPerChild номер
Значение по умолчанию: MaxRequestsPerChild 0
Контекст: конфигурация сервера
Состояние: основное
MaxRequestsPerChild директива устанавливает ограничение числа запросов обрабатываемых порожденнным процессом сервера. После MaxRequestsPerChild запросов, порожденнный процесс умрет. Если MaxRequestsPerChild - 0, то порожденный процесс никогда не будет завершен.
Установка MaxRequestsPerChild в ненулевое значение имеет два полезных эффекта:
" это ограничивает объем памяти потребляемой процессом (через случайную утечку памяти);
" ограничени времени жизни процесса позволяет уменьшить число процессов при старте сервера.
MaxSpareServers директива
Синтаксис: MaxSpareServers число
Значение по умолчанию: MaxSpareServers 10
Контекст: конфигурация сeрвера
Состояние: основное
MaxSpareServers директива устанавливает желательное максимальное число неактивных порожденнных процессов сервера. Неактивный Процесс - тот, который не обрабатывает запрос в данный момент. Если имеются больше чем MaxSpareServers неактивных процессов, то Родительский процесс уничтожит лишние.
Настройка этого параметра рекомендуется только на очень посещаемых сайтах. Установка этого параметра в большое число - плохая идея.
См. также MinSpareServers и StartServers.
MinSpareServers директива
Синтаксис: MinSpareServers число
Значение по умолчанию: MinSpareServers 5
Контекст: конфигурация сервера
Состояние: основное
MinSpareServers директива устанавливает желаемое минимальное число неактивных порожденнных процессов сервера. Неактивный Процесс - тот, который не обрабатывает запрос в данный момент. Если имеется меньшее количество чем MinSpareServers неактивных процессов, то родительский процесс создает новые порожденные процессы за максимум 1 секунду.
Настройка этого параметра рекомендуется только на очень посещаемых сайтах. Установка этого параметра в большое число - плохая идея.
См. также MaxSpareServers и StartServers.
Options директива
Синтаксис: Options [+|-]option [+|-]option ...
Контекст: конфигурация сервера, virtual host, directory, .htaccess
Отмена: Options
Состояние: основное
Директива Options опредиляет, какие особенности сервера являются доступными в данном каталоге.
option может быть установлена в None, когда ни одна из опций не допускается и возможно одно или несколько следующих полей:
" All - все опции кроме MultiViews.
" ExecCGI - разрешается выполнение сценариев CGI.
" FollowSymLinks - сервер будет следовать за символическими связями в этом каталоге.
" Includes - Server-site includes(SSI), разрешаются.
" IncludesNOEXEC - Server-site includes(SSI), разрешается, но команда #exec и #include CGI-скриптов заблокированны.
" Indexes - если запрошенный URL соответствует каталогу, и в этом катлоге нет ничего соответствующего DirectoryIndex (например Index.html), то сервер возвратит форматированную распечатку содерщания каталога.
" MultiViews - Content negotiated MultiViews допускаются.
" SymLinksIfOwnerMatch - сервер будет следовать только тем символическим связям, для которых целевой файл или каталог имеют тот же идентификатор пользователя что и связь.
Обычно, если несколько опций директивы Options применяются к каталогу, а затем наиболее специфический применяются к его подкаталогу, то опции не обьединяются. Однако, если любой опции в директиве Options предшествует символ "+" или "-", то опции обьединяются. Любые опции, которым предшествует "+" будут добавлены к опциям включенным в настоящее время, и любые опции, которым предшествует "-" будут удалены из включенных опций.
Например, без любого + и - символа:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options Includes
</Directory>
только опция Includes, будет установлен для каталога /web/docs/spec. Однако, если вторая Options директива использует + и - символы:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
то опции FollowSymLinks и Includes будут установлены для каталога /web/docs/spec.
PidFile директива
Синтаксис: PidFile имя-файла
Значение по умолчанию: PidFile logs/httpd.pid
Контекст: конфигурация сервера
Состояние: основное
PidFile директива устанавливает файл, в котором сервер записывает идентификатор процесса daemon. Если имя файла не начинается с символа (/), имя будет принято относительно ServerRoot. PidFile используется только в standalone режиме.
Часто бывает необходимо изменить конфигурацию сервера, т.е., чтобы он перечитал файлы конфигурации. Этого можно добиться посылкой сигнала SIGHUP (-1) процессу с идентификатором, содержащимся, в PidFile.
На PidFile распространяются тем же предупреждения относительно защиты, что и на log-файлы.
Port директива
Синтаксис: Port номер-порта
Значение по умолчанию: Port 80
Контекст: конфигурация ссервера
Состояние: основное
Номер - номер от 0 до 65535; некоторые номера портов (особенно ниже 1024) зарезервированы. См. /etc/services для списка некоторых определенных портов; стандартный порт для http протокола - 80.
Директива Port имеет два аспекта; первый - необходим для совместимости в обратном направлении с NCSA ( и который путают в контексте Apache)..
" В отсутствие Listen или BindAddress директив, определяющих номер порта, директива Port устанавливает сетевой порт, на котором сервер слушает. Если имеется, любая из директив Listen или BindAddress опредиляющая номер порта, то директива Port игнорируется.
" Директива Port устанавливает системную переменную SERVER_PORT (для CGI и SSI), и используется сервером для генерации URL, который ссылается на себя (например при создании внешнего переназначения на себя).
Установка Port не воздействует на то, на каком порте работает VirtualHost. Директива VirtualHost непосредственно используется для этого.
Действие директивы Port подобно действию ServerName директивы. ServerName и Port вместе определяют канонический адрес сервера.
Port 80 - один из специальных портов Unix's. Все порты, ниже 1024 зарезервированы для использования системы, т.е. обычным (non-root) пользователям они не доступны; они могут использовать только более высокие номера портов. Используя Port 80, Вы можете запустить сервер только как root. После привязки к порту и перед принятием запросов, привелегии Apache изменяются на более низкие привилегии пользователя установленого директивой User.
Если Вы не можете использовать порт 80, выберите любой другой неиспользуемый порт. Пользователи non-root должны будут выбрать порт номером выше чем 1023, типа 8000.
ЗАЩИТА: если Вы запускаете сервер как root, убедитесь, что не установили User в root. Если Вы запускаете сервер как root, пока устанавливаются соединения, защита вашего сайта открыта для атаки.
require директива
Синтаксис: require имя-объекта объект объект ...
Контекст: directory, .htaccess
Отмена: AuthConfig
Состояние: основное
Эта директива устанавливает пользователей имеющих доступ к каталогу. Допустимый синтаксис:
" require user userid userid ... - только указанные пользователи имеют доступ к каталогу.
" require group имя-группы имя-группы ... - только пользователи из указанных групп имеют доступ к каталогу.
" require valid-user - все допустимые пользователи имеют доступ к каталогу.
Если директива require, появляется в <Limit> разделе, то она ограничивает доступ к перечисленным методам, иначе она ограничивает доступ для всех методов. Пример:
AuthType Basic
AuthName somedomain
AuthUserFile /web/users
AuthGroupFile /web/groups
<Limit GET POST>
require group admin
</Limit>
Require должена сопровождаться AuthName и AuthType директивами, и директивами типа AuthUserFile и AuthGroupFile (определяющие пользователей и группы) чтобы работать правильно.
ResourceConfig директива
Синтаксис: ResourceConfig имя-файла
Значение по умолчанию: ResourceConfig conf/srm.conf
Контекст: конфигурация сервера, virtual host
Состояние: основное
Сервер считывает этот файл с дополнительными директивами после чтения httpd.conf файла. Имя-файла - относительно ServerRoot. Эта директива может быть заблокирована т.о.:
ResourceConfig /dev/null
Исторически, этот файл содержал большинство директив кроме директив конфигурации сервера и <Directory> разделов; фактически он может теперь содержать любую директиву сервера, допустимую в контексте конфигурации сервера.
См. также AccessConfig.
RLimitCPU директива
Синтаксис: RLimitCPU # или 'max' [# или 'max']
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст: конфигурация сервера, virtual host
Состояние: основное
Совместимость: RLimitCPU доступен только в Apache 1.2 и выше
Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть числовой или "max", чтобы указать серверу, что ограничение должно быть установлено к максимуму, позволенному конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер выполнилась под root, или в начальной фазе запуска.
Ограничения ресурса ЦЕНТРАЛЬНОГО ПРОЦЕССОРА сказываются на процессе.
См. также RLimitMEM или RLimitNPROC.
RLimitMEM директива
Синтаксис: RLimitMEM # или 'max' [# или 'max']
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст: конфигурация сервера, virtual host
Состояние: основное
Совместимость: RLimitMEM доступен только в Apache 1.2 и выше
Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть числовой, или max, чтобы указать серверу, что ограничение должно быть установлено к максимуму, допустимому конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер выполнился с полномочиями root, или в начальной фазе запуска.
Ограничения ресурса Памяти выражены в байтах на процесс.
См. также RLimitCPU или RLimitNPROC.
RLimitNPROC директива
Синтаксис: RLimitNPROC # или 'max' [# или 'max']
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст: конфигурация сервера, virtual host
Состояние: основное
Совместимость: RLimitNPROC доступен только в Apache 1.2 и выше
Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть число, или max, чтобы указать серверу, что ограничение должно быть установлено к максимуму, допустимому конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер работал с root-полномочиями, или в начальной фазе запуска.
Управляет ограничением процессов числом процессов на пользователя.
Обратите внимание: Если CGI процессы выполняются под тем же userids что и сервер, эта директива будет ограничивать число процессов, которые сервер непосредственно может создавать. Доказательством этой ситуации будет cannot fork сообщения в error_log.
См. также RLimitMEM или RLimitCPU.
Satisfy
Синтаксис: Satisfy 'any' или 'all'
Значение по умолчанию: Satisfy all
Контекст: directory, .htaccess
Состояние: основное
Совместимость: Satisfy доступен только в Apache 1.2 и выше
Определяет стратегию доступа, если используются и allow и require. Параметр может быть или 'all' или 'any'. Эта директива полезна только, если доступ к области ограничивается и, username/password и адресом машины-клиента. В этом случае заданное по умолчанию значение ("all") требует, чтобы пользователь передал адрес, которому доступна ограниченная область, и ввел допустимый username и пароль. С "any" опцией клиенту будет предоставлен доступ, если он или передаст адрес хоста, которому открыт доступ к данной области, или введет допустимый username и пароль. Это может использоваться для ограничения доступа к области паролем и открытого доступа к этой же области хостам с определенными адресами.
ScoreBoardFile директива
Синтаксис: ScoreBoardFile имя-файла
Значение по умолчанию: ScoreBoardFile logs/apache_status
Контекст: конфигурация сервера
Состояние: основное
ScoreBoardFile директива требуется в некоторых архитектурах, чтобы разместить файл, используемый сервером для связи между порожденными процессами и родительским. Самый простой способ выяснять, требует ли ваша архитектура файл-табло это - запустить Apache и посмотреть, создает ли он файл, указанный в директиве. Если вашей архитектуре это необходимо, Вы должны гарантировать, что этот файл не используется в то же самое время больше чем одним вызовом Apache.
Вы можете увеличить быстродействие сервера размещая ScoreBoardFile на RAM-диске. Но будьте внимательны, Вы должны учитывать те же предупреждения относительно размещения ScoreBoardFile, что и к log-файлам, с точки зрения защиты.
Apache 1.2 и выше:
Пользователи Linux 1.x могут добавить флаг -DHAVE_SHMGET к EXTRA_CFLAGS в файл Configuration, но это не будет работать во всех версиях Linux 1.x.
Пользователи SVR4, так же могут попробовать добавить флаг -DHAVE_SHMGET к EXTRA_CFLAGS в свой Configuration файл. Это, вероятно, должно сработать, но мы не успели проверить это для версии 1.2.
См. Также: Остановка и перезапуск Apache
SendBufferSize директива
Синтаксис: SendBufferSize байты
Контекст: конфигурация сервера, virtual host
Состояние: основное
Cервер установит размер буфера TCP к указанному кол. байт.
ServerAdmin директива
Синтаксис: ServerAdmin email-адрес
Контекст: конфигурация сервера, virtual host
Состояние: основное
ServerAdmin устанавливает адрес электронной почты, который сервер включает в любые сообщения об ошибках, которые он возвращает клиенту.
Для этой установки стоит выделить специальный адрес, например.
ServerAdmin www-admin@foo.bar.com
поскольку пользователи не всегда контролируют то, что они говорят о сервере!
ServerAlias директива
Синтаксис: ServerAlias host1 host2 ...
Контекст: virtual host
Состояние: основное
Совместимость: ServerAlias доступно только в Apache 1.1 и выше.
ServerAlias директива устанавливает альтернативные имена хостов, для использования с virtual host базирующихся на Host-header.
См. Также: Подробное описание соответствия Virtual Host
ServerName директива
Синтаксис: ServerName полное имя домена
Контекст: конфигурация сервера, virtual host
Состояние: основное
ServerName директива устанавливает hostname сервера; это используется только для переадресации URLs. Если она не определена, то сервер пытается вывести ее из собственного IP-адреса, но это может работать не надежно, или может не возвращать привилегированное hostname. Например:
ServerName www.wibble.com
будет работать, если фактическое имя машины будет что-то вроде monster.wibble.com.
См. Также: DNS проблемы
ServerPath директива
Синтаксис: ServerPath имя пути
Контекст: virtual host
Состояние: основное
Совместимость: ServerPath доступно только в Apache 1.1 и выше.
ServerPath директива устанавливает наследование имя-пути URL для хоста, чтобы использовать virtual host базирующийся на Host-header.
См. Также: Подробное описание соответствия Virtual Host
ServerRoot директива
Синтаксис: ServerRoot каталог - имя файла
Значение по умолчанию: ServerRoot /usr/local/etc/httpd
Контекст: конфигурация сервера
Состояние: основное
ServerRoot директива устанавливает корневой каталог сервера. Обычно он содержит подкаталоги conf/ и logs/. Пути для других файлов конфигурации устанавливаются относительно этого каталога.
См. также опцию -d к httpd.
ServerType директива
Синтаксис: ServerType тип
Значение по умолчанию: ServerType standalone
Контекст: конфигурация сервера
Состояние: основное
ServerType директива устанавливает то, как сервер запускается в системе. Тип - один из двух:
" inetd - сервер будет запущен в системе процессом inetd; команда для старта сервера будет добавлена к /etc/inetd.conf
" standalone - сервер запускается как daemon; команда для запуска сервера будет добавлена в системные сценарии запуска. (/etc/rc.local или /etc/rc3.d/ ....)
Inetd используется меньше. Для каждого http соединения, запускается новая копия сервера; после завершения соединение - программа выгружается. Это высокая цена за соединение, но из соображений безопасности, некоторые администраторы предпочитают эту опцию.
Standalone - наиболее общая установка для ServerType, так как она более эффективна. Сервер запускается один раз, и обслуживает все последующие соединения. Если Вы предполагаете выполнять Apache на очень загруженном сайте, установите эту опцию.
ЗАЩИТА: если Вы параноидально беспокоитесь о защите, запускайтесь в inetd режиме, хотя он тоже не гарантирует безопасность. Во всяком случае, сейчас большинство администраторов счастливо используют режим standalone, просто inetd более устойчив к атакам.
StartServers директива
Синтаксис: StartServers число
Значение по умолчанию: StartServers 5
Контекст: конфигурация сервера
Состояние: основное
StartServers директива устанавливает число порожденнных процессов сервера при запуске. Так как число процессов динамически контролируется в зависимости от загрузки, то обычно нет причин корректировать этот параметр.
См. также MinSpareServers и MaxSpareServers.
TimeOut директива
Синтаксис: TimeOut число
Значение по умолчанию: TimeOut 300
Контекст: конфигурация сервера
Состояние: основное
Директива TimeOut в настоящее время определяет количество времени, которое Apache будет ожидать три вещи:
1. Общее кол. времени, которое набежит за GET запрос.
2. Количество времени между получением TCP пакетов на POST или PUT запросе.
3. Количество времени между ACK на передачах TCP пакетов в ответах.
В будующем планируется сделать их отдельно настраиваемыми. Таймер, использовавший раньше по умолчанию значение 1200, был понижен до 300, что все еще является избыточным в большинстве случаев. Это не следует установливать ниже, потому что могут все еще быть лишние места в коде, где таймер не сбросится, после отправки пакета.
User директива
Синтаксис: User unix-userid
Значение по умолчанию: User #-1
Контекст: конфигурация сервера, virtual host
Состояние: основное
Директива User устанавливает userid, под которым сервер отвечает на запросы. Чтобы правильно использовать эту директиву, сервер должен быть запущен как root. Unix-userid это одно из:
" Username - ссылается на имя пользователя.
" # код-пользователя - ссылается на пользователя по номеру.
User не должен иметь таких привилегий, которые могут привести к нарушению безопасности системы, и аналогично, User не должен иметь возможности выполнить код, который не предназначен для запросов httpd. Рекомендуется, чтобы Вы завели нового пользователя и группу специально для работы сервера. Некоторые администраторы используют пользователя nobody, но это не всегда возможно или желательно.
Примечания: Если Вы запускаете сервер как non-root пользователь, то сервер не сможет изменить свои полномочия на привелегии менее привилегированного пользователя, и будет продолжать работу как тот первоначальный пользователь. Если Вы запускаете сервер как root, то родительский процесс продолжит выполнятся как root, что нормально.
Специальное примечание: Использование этой директивы в <VirtualHost> требует правильной конфигурации suEXEC оболочки. Когда эта директива применяется внутри <VirtualHost>, то только для пользователя которому доступно выполнение CGI она будет иметьсмысл. Не - CGI запросы будут обрабатываться под пользователем, определенным в основной директиве User.
ЗАЩИТА: Не установите User (или Group) в root, если Вы не знаете точно, что Вы делаете, и какая Вам грозит опасность.
<VirtualHost> директива
Синтаксис: <VirtualHost адрес[:порт] ...> ... </VirtualHost>
Контекст: конфигурация сервера
Состояние: основное
Совместимость: не базирующийся IP-адресе VirtualHost доступен только в Apache 1.1 и выше.
Совместимость: Многоадресная поддержка доступна только в Apache 1.2 и выше.
<VirtualHost> и </VirtualHost> используются, чтобы включить группу директив, которые применятся только к данному virtual host. Может использоваться любая директива допустимая контексте virtual host. Когда сервер получает запрос на документ относящийся к VirtualHost, он использует директивы конфигурации включенные в раздел < VirtualHost >. Адрес может
" IP-адрес virtual host
" Полное имя домена для IP-адреса virtual host.
Пример:
<VirtualHost 10.1.2.3>
ServerAdmin webmaster@host.foo.com
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
</VirtualHost>
Все VirtualHost должны соответствовать разным IP-адресам или различном host-именам для сервера, в последнем случае машина сервера должна быть конфигурирована так, чтоб принимать IP пакеты для нескольких адресов. (Если машина не имеет нескольких сетевых интерфейсов, это можно поправить с помощью команды ifconfig (если ваша OS поддерживает это), или патчами ядра вроде VIF (для SunOS(TM)4.1.x)).
Специальное имя _default_ может быть определено, когда этот virtual host будет соответствовать любому адресу IP явно не указанному в объявлении другого virtual host. Если объявление _default_ virtual host отсутствует в конфигурации сервера и запрос не подходит ни под какой из известных virtual host, то для ответа используется основной сервер.
Вы можете определить порт, чтобы изменить соответствующий порт. Если порт не определен, то по умолчанию используется порт установленный в конфигурации основного сервера. В установке порта Вы можете использовать *, что будет соответствовать всем портам на этом адресе. (Это рекомендуется использовать вместе с _default_.)
ЗАЩИТА: См. документ советов по защите для деталей о том, почему ваша защита могла быть сломана если каталог log-файлов доступен для записи любому другому пользователь, кроме пользователя, под которым стартует сервер.

Обновлено: 13.03.2015