, но вместо имени файла она принимает регулярное выражение. Например, директивы, находящиеся внутри контейнера
…
будут выполняться для файлов с расширениями txt и doc.
- Аналогично , но применяется не к физической области хранения файлов, а к указателям URL. Директивы, разрешенные в , действуют и в , хотя некоторые (например Options FollowSymLinks) логически бессмысленны и игнорируются.
SetHandler server-info
– выполняет те же действия, что и , но вместо URL она принимает регулярное выражение.
- Позволяет описывать дополнительные виртуальные хосты. У каждого из них должны быть имя, IP-адрес, журналы ошибок и доступа.
ServerName www.beta.com
ServerAdmin admin@beta.com
CustomLog /logs/beta_access_log common
ErrorLog /logs/beta_error_log
DocumentRoot /home/www/beta
Правила при использовании контейнеров:
контейнер не может находиться внутри любого другого контейнера;
контейнер с самым узким контекстом не может содержать вложенных контейнеров;
контейнер может содержать только контейнер ;
контейнеры и нельзя смешивать, то есть использовать один внутри другого.
Контейнер с более узкой областью действия перекрывает контейнер с более широко областью действия.
Условная конфигурация
В конфигурационных файлах Apache могут присутствовать разделы, используемые только при определенных условиях. При ограничении разделов конфигурации директивами и Apache будет игнорировать или подключать некоторые из них.
Контейнер позволяет создавать конфигурацию по условию.
AddModule mod_perl.c
HAVE_PERL - определитель, который передается Apache при запуске с ключом -D.
Символ ! перед определителем означает, что директиву нужно выполнить тогда, окгда определителя не существует.
Контейнер используется в том случае, когда есть директивы конфигурации модуля, который может не присутствовать в установленной конфигурации сервера Apache.
Alias /perl/ /www/perl/
Если нужна конструкция условия, действие которой прямо противоположно предыдущей, перед именем модуля ставится символ !.
3.Использование динамических модулей
Apache при загрузке загружает все скомпилированные модули. Однако, он также поддерживает динамическую загрузку и выгрузку модулей, представленных в виде DSO (Dynamic Shared Objects - динамические разделяемые объекты). При использовании следующих директив можно изменить список активных модулей без перекомпилирования сервера:
Директива AddModule используется для включения скомпилированного модуля, который в данный момент не активен. Сервер может содержать в своем составе модули, которые не используются. Данная директива позволяет активизировать эти модули. Сервер загружается со списком директив AddModule имя_модуля. При этом модули, указанные ниже по списку, имеют более высокий приоритет: динамический модуль, зпгружаемый последним, является первым, к кому обращается Apache.
Список активных модулей можно очистить с помощью директивы ClearModuleList. При ее использовании все активные модули запрещаются и их нужно включать по новому с помощью директивы AddModule для достижения правильного порядка выполнения модулей.
Директива LoadModule используется для загрузки модуля, скомпилированного как DSO.
Все указанные директивы используются в контексте конфигурации сервера.
Для получения списка статических (уже встроенных и поэтому всегда доступных модулей) используется команда httpd -l.
Ограничительные директивы Apache
Данные директивы ограничивают размер запросов НТТР, выдаваемых клиентами, что препятствует нерациональному расходованию клиентами ресурсов сервера и возникновению проблем типа "Отказ в обслуживании".
LimitRequestBody значение - ограничивает размер тела НТТР-запроса, посылаемого методом POST. По умолчанию установлено значение 0, что соответствует неограниченному размеру (максимальное значение - 2Гбайта). Если клиент посылает запрос, размер тела которого превышает допустимое значение, сервер отвечает сообщением об ошибке.
LimitRequestFields значение - ограничивает число дополнительных заголовков, которые могут быть посланы клиентом в НТТР-запросе. Обычно приемлемое число заголовков, которые отправляет клиент, составляет около 20. Большое число заголовков иногда указывает на то, что клиент непреднамеренно передает серверу неверные запросы.
LimitRequestSize значение - ограничивает максимальную длину отдельного заголовка НТТР, посылаемого клиентом, включая имя заголовка. Максимальное значение - 8190 символов.
LimitRequestLine значение - ограничивает максимальную длину самого запроса НТТР, включая метод запроса, URL и протокол. Значение должно быть таким, чтобы клиенты могли обращаться ко всем достоверным URL сервера с учетом строки запроса, устанавливаемой методом GET.
Директива Options
Директива Options управляет выбором свойств сервера, которые будут активными в определенном каталоге. Она учитывается только в контейнере или в файле .htaccess.
Параметры директивы Options :
All – разрешает все опции, кроме MultiViews;
None – запрещает все опции;
ExecCGI – разрешает выполнение CGI-сценариев;
FollowSymLinks – сервер будет обращаться к файлам или каталогам через символьные ссылки (не действует внутри контейнера );
SymLinksIfOwnerMatch – сервер будет обращаться к файлам или каталогам только через те символьные ссылки, целевой файл или каталог которых принадлежит тому же пользователю, что и сама ссылка;
Includes – разрешает выполнение команд SSI;
IncludesNOEXEC – разрешает выполнение команд SSI, кроме команд exec и include;
Indexes – если запрашивается URL, указывающий на каталог, а для каталога не определена директива DirectoryIndex, сервер возвращает форматированный список содержимого каталога;
MultiViews – разрешает согласование содержимого, основанное на языке документа. Если клиент не указывает информацию о языковых предпочтениях файла (НТТР-заголовок AcceptLanguage), сервер пытается найти наиболее подходящие совпадения на языках согласно приоритету, заданному директивой LanguagePriority.
Если директива Options не указана для каталога явно, то она наследуется от каталога, находящегося на уровень выше.
Для включения и выключения опций директивы Options используются модификаторы + (добавить в текущий список опций) и – (удалить из текущего списка опций). Если же модификаторы не используются, то значения опций для контейнера полностью заместят все предыдущие значения директивы Options.
Основные директивы конфигурации Apache
Директива ServerName определяет имя сервера, которое пересылается клиенту вместе с другими параметрами запроса. Используется в случае, если сервер имеет несколько имен (синонимов). Например:
ServerName Indy.cnit.nsu.ru
Директива ServerAdmin определяет адрес электронной почты администратора сервера. При возникновении каких-либо ошибок в работе сервера, он выдает клиенту сообщение с просьбой проинформировать о них администратора сервера по указанному E-mail. Например:
ServerAdmin fancy@nsu.ru
Директива ServerRoot определяет абсолютный путь к каталогу сервера. Она сообщает серверу, где находятся все ресурсы и файлы конфигурации. По умолчанию, это /etc/httpd. Например:
ServerRoot /etc/httpd
Директива DocumentRoot определяет каталог локальной файловой системы, от которого начинается отсчет виртуального пути URL. Например:
DocumentRoot /var/www/html
Директива UserDir определяет название публичного подкаталога пользователей. WWW-сервер позволяет обеспечить внешний доступ к гипертекстовым документам пользователей базовой операционной системы. Для этого пользователям необходимо создать в своем домашнем каталоге подкаталог с именем, определяемым параметром UserDir. После этого все обращения по URL:
http://<имя_сервера>/~<имя_пользователя>
будут транслироваться в реальный путь до подкаталога, определенного параметром UserDir в домашнем каталоге пользователя <имя_пользователя>. Например:
UserDir public_html
При этом при обращении по URL
http://www.nsu.ru/~fancy/index.html
сервер будет искать файл index.html в подкаталоге public_html домашнего каталога пользователя fancy.
Директивы User и Group определяют имя пользователя и группу, права которого получает сервер при обработке запросов. Изменение прав сервера производится с целью предотвращения доступа WWW-клиентов к файлам операционной системы, не являющимися общедоступными. Например:
User nobody
Group nobody
Директива Port определяет порт TCP, по которому сервер принимает запросы клиентов. Стандартный порт для WWW-сервера - 80. Пример:
Port 80
Только одна директива Port может быть применена в один момент времени, в отличие от директивы Listen, которая не отменяет значения других директив Listen.
Listen 80
Также Listen может использоваться для определения прослушиваемых IP-адресов (через двоеточие указан прослушиваемый порт).
Listen 192.168.1.15:81
ScoreBoardFile logs/apache_runtime_status - определяет путь к файлу, который используется для обмена информацией между процессами о своем состоянии.
LockFile - определяет путь к файлу блокировки. Обычно применяется блокировка в памяти и данный файл не создается.
UseCanonicalName On - заставляет Apache создавать все внутренние адреса в формате %ServerName%:%Port%. При указании значения Off Apache использует имя узла и номер порта из заголовка запроса для создания адреса. При указании значения dns Apache будет выполнять обратный поиск DNS по IP-адресу сервера при определении имени узла для обращения к внутренним адресам.
TypesConfig /etc/mime.types - задает расположение конфигурационного файла MIME-типов.
DefaultType text/html - устанавливает тип содержимого по умолчанию. Таким образом, когда Apache получает запрос на файл с неизвестным типом (не может определить тип по расширению файла), то он использует предопределенный данной директивой тип. Apache устанавливает заголовок Content-Type при передаче файла неизвестного типа в %DefaultType%.
MIMEMagicFile conf/magic - позволяет серверу определить MIME-тип файла на основании его содержимого, сравнивая несколько байтов из данного файла с образцами, хранящимися в указанном данной директивой файле.
HostNameLookups Off|On - запрещает или разрешает распознавание имен с помощью DNS для каждого запроса. Если распознавание разрешено, то Apache хранит имя системы в переменной окружения REMOTE_HOST каждого запущенного процесса CGI и SSI. Рекомендуется значение Off для уменьшения времени на ответ сервера и сокращения DNS-трафика в сети.
AddDefaultCharset On|Off [Charset] - устанавливает набор символов по умолчанию для заголовка Content-Type, который Apache отправляет браузеру. Если значение директивы установлено в On, то, если дополнительно не указан набор символов, Apache посылает набор символов iso-8859-1 как набор символов по умолчанию. Значения параметра Charset: Windows-1251, ISO-8859-15, CP850, KOI8-R и т.п.
Контрольные вопросы:
Что такое директивы?
Что такое директива Options?
Контекст конфигурации сервера
Контекст каталога
Литературы:
1. Колисниченко Д.Н. Администрирование Unix-сервера и Linux-станции.Питер, 2011-400с.
2. А.Кухарчик. PHP: обучение на примерах – М.: Новое знание, 2004 – 237с.