22.11. Многодоменный хостинг в Apache

Проблема

Необходимо настроить один сервер Apache для обслуживания нескольких доменов, использующих один и тот же IP-адрес. Все доменные имена уже зарегистрированы, и для каждого домена настроена информация DNS.

Решение

Для поддержки многодоменного хостинга используется директива Apache VirtualHost, которая позволяет каждому домену иметь отдельные настройки и директории. Пример файла httpd.conf для обслуживания двух доменов:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.tuxcomputing.com
    ServerAlias tuxcomputing.com *.tuxcomputing.com
    DocumentRoot /var/www/tuxcomputing
    ServerAdmin admin@tuxcomputing.com
</VirtualHost>

<VirtualHost *:80>
    ServerName www.bratgrrl.com
    ServerAlias bratgrrl.com *.bratgrrl.com
    DocumentRoot /var/www/bratgrrl
    ServerAdmin admin@bratgrrl.com
</VirtualHost>

Для каждого домена создаётся отдельный корневой каталог, где хранятся файлы сайта. Это позволяет легко добавлять субдомены, например, webmail.bratgrrl.com и wacko.games.tuxcomputing.com. Однако для корректной работы каждого домена и субдомена нужно создать соответствующие DNS-записи типа А.

ПРИМЕЧАНИЕ

При использовании виртуальных хостов для каждого домена необходима отдельная директива VirtualHost. Эти директивы заменяют глобальные настройки из httpd.conf и могут включать почти все директивы, что позволяет детально настраивать каждый виртуальный хост.

Комментарий

Конфигурация виртуальных хостов — это эффективный способ обслуживания нескольких доменов на одном сервере Apache. Однако настройка большого количества записей типа А для субдоменов может оказаться трудоёмкой. Альтернативный подход с использованием доменных групповых обозначений (wildcards) может привлечь нежелательный трафик, включая случайные и нежелательные обращения, например:

randomstuff.bratgrrl.com
really.weird.randomstuff.bratgrrl.com

Спамеры могут злоупотреблять wildcard-записями, поэтому настройка точных DNS-записей для конкретных субдоменов предпочтительнее. В директивах VirtualHost групповые обозначения безопаснее, поскольку они обрабатывают только трафик, адресованный именам, явно указанным в DNS.

Рекомендации по настройке многодоменного хостинга

См. также

Документация по настройке виртуальных хостов в Apache