Читаем Linux-сервер своими руками полностью

Поддержка виртуальных хостов обеспечивается директивами VirtualHost и NameVirtualHost. Если ваша система имеет только один IP-адрес, его нужно указать в директиве VirtualHost. Внутри блока директивы VirtualHost записывается директива ServerName. Эта директива задает доменное имя для создаваемого виртуального сервера. Это обязательно нужно сделать, чтобы избежать поиска службой DNS — вы же не хотите, чтобы при неудачном поиске виртуальный сервер был заблокирован? Все директивы VirtualHost используют один и тот же IP-адрес, заданный директивой NameVirtualHost. В блоке VirtualHost записываются параметры виртуального сервера, причем они записываются для каждого виртуального сервера отдельно. Пример приведен в листинге 12.9.

Листинг 12.9. Два виртуальных сервера — www 121– и lib

ServerName den.dhsilabs.com

 ServerName www.dhsilabs.com

 ServerAdmin webmaster@den.dhsilabs.com

 DocumentRoot /var/httpd/www/html

 Error Log /var/https/www/logs/error.log

 TransferLog logs/access.log

 ServerName lib.dhsilabs.com

 ServerAdmin webmaster@den.dhsilabs.com

 DocumentRoot/var/httpd/lib/html

 ErrorLog /var/https/lib/logs/error.log

 TransferLog logs/access.log

Если ваша система имеет только один IP-адрес, доступ к основному серверу станет невозможным, то есть вы не сможете использовать его напрямую. Можно основной сервер использовать в качестве виртуального, что я и сделал в листинге 12.9: основной сервер www является виртуальным. При наличии двух IP-адресов можно один присвоить основному серверу, а другой — виртуальному.

Сервер Apache позволяет использовать несколько доменных имен для доступа к одному серверу, например:

ServerAlias www.dhsilabs.com www2.dhsilabs.com

При этом запросы, посланные по IP-адресам, которые присвоены вашим виртуальным хостам, должны соответствовать одному из указанных доменных имен. Чтобы зафиксировать запросы, не соответствующие ни одному их этих имен, нужно с помощью опции default:* создать виртуальный хост, который будет обслуживать такие запросы:

Обратите внимание на то, что в рассмотренном примере адреса www.dhsilabs.com и lib.dhsilabs.com должны быть прописаны в DNS.

<p>12.4.2. Виртуальные серверы с идентификацией по IP-адресу</p>

В директиве VirtualHost в качестве адресов можно использовать доменные имена, но лучше указывать IP-адрес, причем действительный, а не виртуальный. В этом случае вы не будете зависеть от DNS при разрешении имени. Также потребуется один IP-адрес для вашего основного сервера. Если же распределить все адреса между виртуальными серверами, то нельзя будет получить доступ к основному серверу.

Листинг 12.10. Идентификация по IP-адресу

 ServerName www.dhsilabs.com

 ServerAdmin webmaster@den.dhsilabs.com

 DocumentRoot /var/httpd/www/html

 ErrorLog /var/https/www/logs/error.log

 ServerName lib.dhsilabs.com

 ServerAdmin webmaster@den.dhsilabs.com

 DocumentRoot /var/httpd/lib/html

 ErrorLog /var/https/lib/logs/error.log

В приведенном примере (см. листинг 12.10) сконфигурированы два виртуальных сервера с идентификацией по IP-адресу. Один из них использует сам IP-адрес, а другой — доменное имя, соответствующее IP-адресу.

При конфигурировании виртуальных серверов можно использовать опцию ExecCGI, которая разрешает выполнение CGI-скриптов на виртуальном сервере. Ниже приведен пример для почтового Web-интерфейса (листинг 12.11).

Листинг 12.11. Подключение почтового Web-интерфейса

# Файл httpd.conf

 order deny,allow

 deny from all

 allow from localhost

 allow from 192.168

 allow from 123.123.123.123

 Options ExecCGI

# Файл vhosts.conf

 ServerAdmin webmaster@den.dhsilabs.com

 DocumentRoot /home/httpd/mail

 ServerPath /mail

 ServerName wwwmail.dhsilabs.com

 ErrorLog logs/error_log

 TransferLog logs/access_log

 ErrorDocument 403 http://www.dhsilabs.com/messages/error403.html

# Error 403 — доступ извне, то есть почтовый интерфейс будет доступен только

# из локальной сети

<p>12.5. SSL и Apache</p>
Перейти на страницу:

Все книги серии Секреты мастерства

Похожие книги