Скачиваний:
107
Добавлен:
01.05.2014
Размер:
329.22 Кб
Скачать

Виртуальные хосты

В последнем примере были запущены две различные версии Apache, каждая из которых обслуживает свой URL. В реальной жизни так обычно не делают. Как правило, запускается несколько виртуальных Apache[l], которые будут направлять входящие запросы по разным URL на разные наборы документов. Это могут быть домашние страницы сотрудников организации или клиентов. Рассмотрим пример, в котором создаются два виртуальных хоста: один для покупателей, другой для продавцов.

User nobody

Group nogroup

#Для Apache необходимо указывать название сервера даже в том случае, когда оно не будет

# использоваться. Это имя сервера будет использоваться по умолчанию

# для тех серверов, имена которых не указаны в директиве VirtualHost

ServerName customer my.company.com

AccessConfig /dev/null

ResourceConfig /dev/null

<VirtualHost customer .mycompany .com>

ServerAdmin sales@mycompany.com

DocumentRoot/usr/local/www/htdocs/customers

ServerName customer.my copany .com

ErrorLog /usr/local/www /logs/customers/error log

TransferLog /usr/local/www /logs/customers/access log

</VirtualHost>

<VirtualHost sales .my company .com>

ServerAdmin sales_mgr@mycompany.com

DocumentRoot /usr/local/www /htdocs/salesmen

ServerName sales.mycompany.com

ErrorLog /usr/local/www/logs/salesmen/error_log

TransferLog /usr/local/www logs/salesmen/access log

</VirtualHost>

Если хост с именем, указанным в директиве ServerName в начале файла, не обнаруживается (либо с помощью DNS-сервера, либо с помощью файла /etc/hosts), то Apache выводит сообщение об ошибке и прекращает работу:

Cannot determine local host name

Use ServerName to set it manually

(«не могу определить имя локального хоста

установите его вручную с помощью ServerName»)

Суть этого файла заключена в двух секциях <VirtualHost ... >. Кроме того здесь используются следующие директивы:

ServerAdmin <адрес_электронной_почты >

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

TransferLog <файл_или_команда>

Эта директива задает имя файла, который сервер будет использовать для регистрации входящих запросов. Аргумент <файл_или_команда> может принимать одно из следующих значений:

имя_файла

Имя файла относительно каталога ServerRoot

Команда

Программа, которая будет принимать агентскую регистрационную информацию на свой стандартный ввод. Новая программа, заданная для виртуального хоста, заданного директивой <VirtualHost ... >, не запускается, если этот хост наследует директиву TransferLog от главного сервера. Если программа используется, она выполняется с учетом привилегий, которые имеет пользователь, запустивший httpd. Обычно это пользователь root, если сервер запускался им, поэтому для данной программы обязательно должны быть приняты меры по защите.

Директива DocumentRoot в файле httpd.conf организует торговый зал для предложений покупателям. Директива ErrorLog сообщает Apache о том, где следует регистрировать ошибки, a TransferLog - где следует регистрировать успехи. Можно также осуществлять настройку режима сохранения информации в этих файлах. Организовав блок для покупателей, можно продублировать этот блок, и, внеся в него несколько незначительных изменений, удовлетворить нужды продавцов. У этих двух серверов - разные значения директив DocumentRoot, чего и следовало ожидать, потому что именно по этой причине и ^создаются два виртуальных хоста. У них также разные файлы регистрации передачи и ошибок, но это не обязательно. Может быть один файл регистрации передачи и один файл регистрации ошибок. Можно также записывать все данные регистрации по обоим узлам в один файл.

Соседние файлы в папке Лекции по сетям в формате doc