В чем разница между *: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 по умолчанию.