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

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

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

*:80
_default_:80

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

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

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

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

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

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

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

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

<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 по умолчанию.