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

 

Существуют следующие способы создания виртуальных web-узлов с помощью сервера Apache:

  • На основе имен. Такая конфигурация требует существования множества имен, указывающих на одну систему. Поскольку этот метод не использует IP-адресов в конфигурации сервера Apache, то его можно легко перенастроить на другой сервер, изменив IP-адрес web-сервера;
  • На основе IP-адресов. Этот метод требует указания IP-адресов в конфигурации сервера Apache, что усложняет перенастройку при необходимости изменения IP-адресов.

 

Виртуальные узлы на основе имен. Здесь требуется только один IP-адрес, чтобы обеспечить поддержку для тысяч виртуальных web-узлов. Допустим, у вас есть адрес 192.168.1.100 и вы хотите создать узлы vhost1.domain.com и vhost2.domain.com на одном и том же сервере. Для этого необходимо:

  • создать соответствующие записи на сервере DNS, указывающие для имен vhost1.domain.com и vhost2.domain.com на адрес 192.168.1.100;
  • создать в файле httpd.conf конфигурационный сегмент, подобный следующему:

 

NameVirtualHost 192.168.1.100

<VirtualHost 192.168.1.100>

ServerName vhost1.domain.com

ServerAdmin root@ vhost1.domain.com

DocumentRoot “/www/vhost1/docs”

#здесь вы можете задать любые необходимые директивы

</VirtualHost>

<VirtualHost 192.168.1.100>

ServerName vhost2.domain.com

ServerAdmin root@ vhost2.domain.com

DocumentRoot “/www/vhost2/docs”

#здесь вы можете задать любые необходимые директивы

</VirtualHost>

 

  • перезагрузить сервер Apache.

 

Виртуальные узлы на основе IP-адресов. Данный метод требует использования различных IP-адресов для создания виртуальных узлов. Такие IP-адреса должны быть заданы в файле настройки в каждом из дескрипторов контейнеров <VirtualHost>. Этот метод не имеет преимуществ в сравнении с методом, описанным выше. В примере показаны три виртуальных узла на основе IP-адресов.

 

<VirtualHost 192.168.1.1>

ServerName vhost1.server.com

#здесь вы можете задать любые необходимые директивы

</VirtualHost>

<VirtualHost 192.168.1.2>

ServerName vhost2.server.com

#здесь вы можете задать любые необходимые директивы

</VirtualHost>

<VirtualHost 192.168.1.3>

ServerName vhost3.server.com

#здесь вы можете задать любые необходимые директивы

</VirtualHost>

 

Директивы для виртуальных узлов:

  • ServerAdmin
  • ServerRoot
  • DocumentRoot
  • ErrorLog
  • CustomLog

Директивы, не имеющие значения для виртуальных узлов:

  • ServerType
  • StartServers
  • MaxSpareServers
  • MinSpareServers
  • MaxRequestsPerChild
  • BindAddress
  • Listen
  • ServerRoot
  • PidFile
  • TypesConfig
  • NameVirtualHost

Виртуальные хосты наследуют все директивы, определенные в области главного сервера.