ДОКУМЕНТАЦИЯ - ОСНОВНЫЕ
ОСОБЕННОСТИ APACHE
Эти параметры конфигурации
управляют настройкой ядра Apache, и всегда доступны.
AccessConfig
директива
Синтаксис: AccessConfig
имя-файла
Значение по умолчанию: AccessConfig conf/access.conf
Контекст: конфигурация сервера, virtual host
Состояние: основное
Сервер будет читать этот файл
для дополнительных директив после чтения ResourceConfig файла. Имя-файла
- относительно ServerRoot. Действие этой дерективы может
быть заблокировано следующим образом:
Исторически, этот файл, содержит
только <Directory> разделы, хотя фактически,
он может теперь содержать любую директиву сервера, допустимую в контексте
конфигурации сервера.
AccessFileName
директива
Синтаксис: AccessFileName
имя-файла
Значение по умолчанию: AccessFileName .htaccess
Контекст: конфигурация сервера, virtual host
Состояние: основное
При выдаче документа клиенту
сервер ищет файл управления доступом с этим именем в каждом каталоге пути
к документу, если файлы управления доступом допускаются для того каталога.
Например:
Перед возвратом документа
/usr/local/web/index.html, сервер будет читать /.acl, /usr/.acl,
/usr/local/.acl и /usr/local/web/.acl для проверки доступа, если
они не были заблокированы с помощью
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 *
Контекст: конфигурация сервера
Состояние: основное
Unix® 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. Например:
был бы подходящим для каталога,
который содержит много gif изображений с именами файлов с .gif расширением.
<Directory>
директива
Синтаксис: <Directory
directory> ... </Directory>
Контекст: конфигурация сервера, virtual host
Состояние: основное
<Directory> и </Directory>
используется, чтобы включить группу директив, которые необходимо применить
только к указанному каталогу и его подкаталогам. Может исполбзоваться
любая директива применимая в контексте каталога. Directory является
или полным путем к каталогу, или wild-card строкой. В wild-card строке,
"? " соответствует любому одиночному символу, и " * " соответствует любым
последовательностям символов. Пример:
Apache 1.2 и выше:
Расширенные регулярные выражения могут также использоваться, с добавлением
~ символа. Например:
соответствует каталогам в
/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
до корня документа, чтобы определить путь к документу. Пример:
теперь обращение к 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 может быть конфигурирован так, чтобы выполнить одно из четырех
действий:
- выдать клиенту простое
жестко закодированное сообщение об ошибках .
- выдать настроенное сообщение
.
- перенаправить(redirect)
запрос локальному URL, чтобы обработать проблему/ошибку
- перенаправить(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. Пример:
эта директива отключает регистрацию
ошибок.
ЗАЩИТА: См. документ
"Советы по конфигурации
защиты сервера" для информации о том, почему ваша защита может быть
сломана, если каталог, в котором хранятся logfiles доступны для записи
всем, а не только пользователю под которым стартует сервер.
<Files>
Синтаксис: <Files
имя-файла> ... </Files>
Контекст: конфигурация сервера, virtual host, htaccess
Состояние: основное
Совместимость: доступно в Apache 1.2 и выше.
<Files> директива предназначена
для управления доступом к файлу. Эта директива тесно связана с директивами
<Directory> и <Locations>, они должны быть согласованы
с </Files> директивой. Директивы, которые применяются к данному
имени файла должны быть перечислены внутри. <Files> разделы обрабатываются
в том порядке, в каком они появляются в файле конфигурации, после <Directory>
разделов и объявления .htaccess файлов, но перед разделами <Location>.
Параметр имя-файла должен
включить имя файла, или wild-card, в котором "?" соответствует любому
одиночному символу, а "*" соответствует любой последовательности символов.
Расширенные регулярные выражения также могут использоваться, с добавлением
символа ~. Например:
будет соответствовать наиболее
общим графическим форматам 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> директивы, то она применяется
ко всем методам доступа.
<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 и выше:
Расширенные регулярные выражения могут также использоваться, с добавлением
~ символа. Например:
соответствует 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. Эта директива может быть заблокирована т.о.:
Исторически, этот файл содержал
большинство директив кроме директив конфигурации сервера и <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 устанавливает
адрес электронной почты, который сервер включает в любые сообщения об
ошибках, которые он возвращает клиенту.
Для этой установки стоит выделить
специальный адрес, например.
поскольку пользователи не
всегда контролируют то, что они говорят о сервере!
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. Например:
будет работать, если фактическое
имя машины будет что-то вроде 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 будет ожидать три
вещи:
- Общее кол. времени, которое
набежит за GET запрос.
- Количество времени между
получением TCP пакетов на POST или PUT запросе.
- Количество времени между
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-файлов доступен
для записи любому другому пользователь, кроме пользователя, под которым
стартует сервер.
|