Виртуальный сервер

Концепция виртуальных хостов позволяет Apache поддерживать несколько Web-узлов. Получается, что один Web-сервер заменяет несколько и пользователи видят отдельные Web-узлы.

Apache можно настроить несколькими способами: чтобы запускался один сервер, который будет прослушивать ВСЕ обращения к виртуальным серверам, или запускать отдельный процесс для каждого виртуального сервера. В первом случае один сервер будет одновременно обслуживать все виртуальные хосты. Если интересует такой вариант, нужно настраивать виртуальные сервера с помощью директивы VirtualHost. Настройка отдельных процессов для каждого сервера осуществляется с помощью директивы Listen и BindAddress.

Здесь будет рассматриваться первый вариант. Внутри блока директивы VirtualHost можно использовать любые директивы, кроме ServerType, BindAddress, Listen, NameVirtualHost, ServerRoot, TypesConfig, PidFile, MinRequestPerChild, MaxSpareServers, MinSpareServers.

В зависимости от версии и от настроек Apache виртуальные узлы могут прописываться или в файле httpd.conf или в файле vhosts.conf. Виртуальные сервера можно идентифицировать по имени или по IP-адресу.

Идентификация по имени имеет существенное преимущество перед идентификацией по IP-адресу: вы не ограничены количеством адресов, имеющемся у вас в распоряжении. Вы можете использовать любое количество виртуальных серверов и при этом вам не потребуются дополнительные адреса. Такое возможно благодаря использованию протокола HTTP/1.1.
Поддержка виртуальных хостов обеспечивается директивами VirtualHost и NameVirtualHost. Если ваша система имеет только один IP-адрес, его нужно указать в директиве VirtualHost. Внутри блока директивы VirtualHost записывается директива ServerName. Эта директива задает доменное имя для нашего виртуального сервера. Все директивы VirtualHost используют один и тот же IP-адрес, заданный директивой NameVirtualHost. В блоке VirtualHost записываются параметры виртуального сервера, причем они записываются для каждого виртуального сервера отдельно.

Пример создания 2-х виртуальных хостов (www, photo):

 ServerName 172.16.100.2

 <NameVirtulaHost 172.16.100.2>

 <VirtualHost 172.16.100.2>
 ServerName www.wandmagic.ru
 ServerAdmin webmaster@wandmagic.ru
 DocumentRoot /usr/local/www/data/www
 ErrorLog /var/logs/http/www/error.log
 </VirtualHost>

 <VirtualHost 172.16.100.2>
 ServerName photo.wandmagic.ru
 ServerAdmin webmaster@wandmagic.ru
 DocumentRoot /usr/local/www/data/photo
 ErrorLog /var/logs/http/photo/error.log
 </VirtualHost>
Если система имеет только один IP-адрес, доступ к основному серверу станет невозможным, то есть вы не сможете использовать его напрямую. Можно основной сервер использовать в качестве виртуального, что и сделалано в примере выше, основной сервер www является виртуальным. При наличии двух IP-адресов можно один присвоить основному серверу, а другой - виртуальным. Apache позволяет использовать несколько доменных имен для доступа к одному серверу:

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

<VitrualHost _default_:*>
Адреса www.wandmagic.ru и photo.wandmagic.ru должны быть прописаны в DNS.
Прочли: 2307 | Добавлено: 01 мая 2011 | На главную