
- •Принципы работы арасне
- •Директивы сервера
- •Блочные директивы
- •Запуск нескольких экземпляров Apache
- •Виртуальные хосты
- •Управление виртуальными хостами
- •Перезапуск Apache
- •Использование файлов .Htaccess
- •Общий шлюзовый интерфейс (cgi)
- •Установка переменных среды
- •Браузеры
- •Обработчики
- •Аутентификация
- •Команды allow и deny
- •Выбор языка
- •Поддержка русскоязычных кодировок,
- •Переадресация
- •Сенсорные изображения
- •Кэширование
- •Var Значение этого атрибута — имя переменной.
Блочные директивы
В 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 может быть несколько.