В чем разница между *:80 и _default_:80 в Apache2?

Я пытаюсь понять разницу между следующими двумя терминами:

*:80
_default_:80

в файле конфигурации Apache. Документация здесь неясна для меня, и единственный разговор по списку рассылки, который я мог найти здесь, также не пролил (понятный мне) свет на этот вопрос.

У меня есть несколько виртуальных хостов на основе имен, объявленных так:

<VirtualHost *:80>
    ServerName example.com
    ...

и я хотел бы иметь запись, которая запускается, когда ни один из них не совпадает, то есть когда поступает запрос без имени виртуального хоста или с именем виртуального хоста, которое не было объявлено. Должен ли я использовать *:80 или же _default_:80?

1 ответ

Решение

Я думаю что _default_ используется для определения виртуального хоста по умолчанию в конфигурации виртуального хоста на основе IP. Вы используете виртуальный хостинг на основе имени, так что это утверждение в документации

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

становится актуальным.

В конфигурации виртуального хоста на основе имени первым определенным vhost является vhost по умолчанию, и он будет обслуживаться, если не найдено никакого другого соответствия, поэтому вы можете сделать что-то простое, например:

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName sub.example.com
    DocumentRoot /var/www/sub.example.com
</VirtualHost>

Будет делать то, что вы хотите, и обслуживать все, кроме example.com и sub.example.com по умолчанию.

Другие вопросы по тегам