Назад | Перейти на главную страницу

Vhost по умолчанию Apache2 в алфавитном порядке или переопределить с помощью _default_ vhost?

У меня есть несколько именованных хостов на веб-сервере Apache (CentOS 5, Apache 2.2.3).
Каждый виртуальный хост имеет свой собственный файл конфигурации в /etc/httpd/vhosts.d и эти файлы конфигурации vhost включены из основного httpd conf с помощью ... Include vhosts.d/*.conf

Вот пример одного из vhost conf ...

NameVirtualHost *:80
<VirtualHost *:80>
        ServerName www.domain.biz
        ServerAlias domain.biz www.domain.biz
        DocumentRoot /var/www/www.domain.biz
        <Directory /var/www/www.domain.biz>
                Options +FollowSymLinks
                Order Allow,Deny
                Allow from all
        </Directory>
        CustomLog /var/log/httpd/www.domain.biz_access.log combined
        ErrorLog /var/log/httpd/www.domain.biz_error.log
</VirtualHost>

Теперь я, когда кто-то пытается получить доступ к серверу напрямую, используя общедоступный IP-адрес, он получает первый виртуальный хост, указанный в агрегированной конфигурации (так что в моем случае это алфавитный порядок от vhosts.d каталог). Любой, кто обращается к серверу напрямую по IP-адресу, я бы хотел, чтобы он получил просто 403 или 404.

Я обнаружил несколько способов установить виртуальный хост по умолчанию / для всех и несколько противоречивых мнений.

Как насчет указания виртуального хоста по умолчанию в httpd.conf с участием _default_ http://httpd.apache.org/docs/2.2/vhosts/examples.html#default
Был бы <VirtualHost _default_:*> блок в моем httpd.conf до того как я Include vhosts.d/*.conf быть лучшим способом для всех?

Установка <VirtualHost _default_:*> ничего не будет делать, он не имеет приоритета над виртуальными хостами, настроенными как <VirtualHost *:80> (кроме портов, отличных от 80).

_default_ следует использовать только с виртуальным хостингом на основе IP. Из документация:

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

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

Я мог бы создать новый vhost conf в vhosts.d под названием 000aaadefault.conf или что-то в этом роде, но это немного неприятно.

Однако на самом деле это лучший способ сделать это. Вы хотите, чтобы ваша конфигурация соответствовала вашей конфигурации, поэтому не ставьте ее <VirtualHost> блок в httpd.conf, а остальные в отдельных файлах. Назовите файл конфигурации для vhost по умолчанию !default.conf, а затем просто убедитесь, что в vhosts.d с именами, начинающимися с знаков препинания.