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

8

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

*:80
_default_:80

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

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

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

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

Йоханнес Эрнст
источник
На apache у вас может быть либо один веб-сайт с одним номером ip, либо другая модель, вы можете разместить несколько сайтов, каждый из которых имеет один и тот же номер ip, и другой домен, настроенный как VirtualHost и прослушивающий один и тот же порт 80.
Andrew Smith

Ответы:

9

Я думаю, что _default_это используется для определения vhost по умолчанию в конфигурации виртуального хоста на основе 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 по умолчанию.

user9517
источник