Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Водяхо 04 / lect_doc / АРАС.doc
Скачиваний:
45
Добавлен:
03.06.2014
Размер:
329.22 Кб
Скачать

Блочные директивы

В Apache есть ряд директив, которые ограничивают область действия других директив. К таким директивам относится VirtualHost:

< VirtualHost хост[:порт]>

</VirtualHost >

Эта директива по своему действию аналогична HTML-тегам: она ограничивает блок текста, который содержит директивы, относящиеся к одному хосту. В этой директиве также указывается имя хоста и, если необходимо, номер порта. Если номер порта не указан, используется порт по умолчанию - это либо стандартный HTTP-порт 80, либо порт, заданный в директиве Port. Кроме директивы <VirtualHost...> имеются три другие блочные директивы, которые также ограничивают область действия других директив:

<Directory... >

<Files... >

<Location... >

В этом списке директивы показаны в порядке возрастания полномочий, т.е. установки директивы Directory отменяются директивой Files, установки директивы Files - директивой Location.

<Directory каталог>

. . .

</Directory>

Директива Directory ограничивает область действия директив, применяемых к каталогу или группе каталогов. Аргумент каталог может включать метасимволы и полные регулярные выражения, но их нужно предварять символом ~. Например, действие директивы

<Directory ~^/[a-d]*. *>

распространяется на все каталоги верхнего уровня, имена которых начинаются с букв а, b, с или d.

<Files файл>

. . .

</Files>

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

<Location URL>

. . .

</Location>

Директива Location ограничивает область действия директив, применяемых к указанному URL. Аргумент URL может включать метасимволы и полные регулярные выражения, но их нужно предварять символом ~.

Запуск нескольких экземпляров Apache

Иногда может понадобиться запустить более чем один экземпляр Apache.

В этом случае можно запустить два экземпляра Apache с разными IP-адресами на разных консолях так, как будто это две совершенно разные машины. Этой стратегии необходимо придерживаться в следующих обстоятельствах:

• Для разных виртуальных хостов нужны весьма различающиеся конфигурации httpd, например разные значения ServerType, User, TypesConfig или ServerRoot. (Практически ни одна из этих директив не может применяться к виртуальному хосту, потому что они являются глобальными для всех серверов).

• Частота запросов, которые обрабатывает данная машина, не очень высока.

В качестве примера можно рассмотреть такой вариант.

Пусть первый сервер называется www.mycompany.com и для него имеется каталог /usr/local/www/htdocs, а второй sales.mycompany.com, для которого HTML-документы хранятся в /usr/local/sales/htdocs. Тогда файлы конфигурации для этих узлов будут следующими:

#Файл /usr/local/www/conf/httpd.conf:

User nobody

Group nobody

ServerName www.mycompany.com

DocumentRoot /usr/local/www/htdocs

BindAddress www.mycompany.com

AccessConfig/dev/null

ResourceConfig /dev/null

Файл /usr/local/sales/htdocs:

User nobody

Group nobody

ServerName sales.mycompany.com

DocumentRoot/usr/local/sales/htdocs Listen sales.mycompany.com

AccessConfig /dev/null ResourceConfig /dev/null

Естественно, DNS-сервер должен знать о существовании www.mycompany.com и sales.mycompany.com. Теперь достаточно запустить на разных консолях два экземпляра Apache с указанием флага -f для того, чтобы задать необходимый в каждом случае файл конфигурации:

]

# httpd -f <nymь_к_файлу_конфигурации>/httpd.conf

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

BindAddress <адрес>

Эта директива заставляет Apache привязываться к конкретному IP-адресу вместо того, чтобы анализировать все IP-адреса на данной машине.

Port <порт (по умолчанию 80)>

Эта директива устанавливает номер порта, на котором Apache будет ожидать запросов.

Listen <имя хоста: порт>

Эта директива дает Apache указание уделять внимание не одному, а нескольким IP-адресам и портам. По умолчанию Apache отвечает на запросы по всем IP-адресам, но только на порте, указанном в директиве Port. Данная директива позволяет ограничить набор IP-адресов, с которых ожидаются запросы, и расширить набор обслуживаемых портов.

Применение директивы Listen является более предпочтительным. Дело в том, что директива BindAddress устарела: в случаях, когда нужно обслуживать не только порт 80, ее нужно использовать совместно с директивой Port. Кроме того для конфигурации сервера можно использовать только одну директиву BindAddress, тогда как Listen может быть несколько.

Соседние файлы в папке lect_doc