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

Почему apache2 использует vhost по умолчанию, если я запрашиваю домен, который совпадает с именем хоста сервера, и как я могу предотвратить это?

У меня есть веб-сайт, на который я хочу попасть, используя http://mydomain.com так же как http://www.mydomain.com

Недавно я настроил свои серверы hostname к mydomain.com

Я установил apache2 по умолчанию из репозиториев ubuntu 12.04 и настроил следующий файл конфигурации в /etc/apache2/sites-enabled/mydomain.com

<VirtualHost *:80>
        ServerName mydomain.de
        ServerAlias     www.mydomain.de
        DocumentRoot /home/mydomain/public
</VirtualHost>
<Directory /home/mydomain/public>
        AllowOverride All
</Directory>

Теперь, если я запрошу http://www.mydomain.com все работает, но если я запрошу http://www.mydomain.com Я получаю по умолчанию страницу приветствия apache "это работает".

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

ls -lha /etc/apache2/sites-enabled/
total 8.0K
drwxr-xr-x 2 root root 4.0K Jul  6 18:46 .
drwxr-xr-x 7 root root 4.0K Oct  5  2012 ..
lrwxrwxrwx 1 root root   33 Jul  6 18:45 000-0mydomain -> /home/mydomain/apache2.conf
lrwxrwxrwx 1 root root   26 Jul  6 18:29 000-default -> ../sites-available/default

это действительно работает.

Однако я не знаю, хорошая ли это идея и почему это вообще происходит. Это также работает, когда имя хоста сервера не соответствует имени домена!

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

Что я могу с этим поделать? Как я могу это сделать правильно?

Я думаю изменить имя, чтобы мой vhost ocmes eben до значения по умолчанию, который не назван 000-default просто раздражать людей - не лучшая идея ...

Когда вы печатаете hostname -f, это и ваш домен? Я думаю, что vhost по умолчанию отвечает на доменное имя машины. Я бы посоветовал установить для машины другое имя хоста, потому что имя, которое вы используете для его администрирования, должно отличаться от имени веб-сайта, который на нем работает. В противном случае вы не сможете делать такие вещи, как временный другой адрес веб-сайта и отображение сообщения об обслуживании.

Если вы не хотите этого делать, вы можете настроить фиктивное имя сервера в 000-default.