Виртуальный хостинг
Существуют следующие способы создания виртуальных 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
Виртуальные хосты наследуют все директивы, определенные в области главного сервера.