Виртуальный хостинг на основе имени Apache - PullRequest
1 голос
/ 17 февраля 2009

В прошлый раз, когда я пытался настроить виртуальный хостинг на основе имен на моей машине для разработки, я просто отказался и сопоставил веб-сайты с различными портами. На этот раз я пытаюсь сделать это правильно:)!

Я правильно зарегистрировал записи DNS и отправил на сервер два разных заголовка:

Host: dev.site1.com
Host: dev.site2.com

Тем не менее, Apache доставляет мне трудности с отображением dev.site2.com на dev.site1.com

Вот мой уменьшенный конфиг:

Listen 80
ServerName localhost:80
NameVirtualHost *:80

<VirtualHost *>
    ServerName dev.site1.com
    DocumentRoot /www/site1
</VirtualHost>

<VirtualHost *>
    ServerName dev.site2.com
    DocumentRoot /www/site2
</VirtualHost>

Я пробовал такие комбинации, как (без эффекта):

ServerName site1.com
ServerName site2.com

ServerName site1.com
ServerAlias *.site1.com site1
ServerName site2.com site2
ServerAlias *.site2.com site2

Я с удовольствием запускаю Apache 2.2 и надеюсь, что найдутся те, кто занимался тем же и раньше и сможет мне помочь.

Ответы [ 2 ]

4 голосов
/ 17 февраля 2009

Обычно я также указываю порт в директивах VirtualHost, но не уверен, что это может быть проблемой:

<VirtualHost *:80>
    ServerName dev.site2.com
    DocumentRoot /www/site2
</VirtualHost>

(я даже обычно указываю IP-адрес, чтобы убедиться, что он действительно прослушивает правильный адрес в случае, если сервер получит дополнительный адрес в какой-то момент).

На самом деле я только что заметил в документации эту строку:

Обратите внимание, что аргумент директивы должен точно соответствовать аргументу директивы NameVirtualHost.

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

4 голосов
/ 17 февраля 2009

Отмечу следующие вещи:

  1. ваше имя_сервера - localhost: 81 - не должно ли это быть localhost: 80?
  2. DocumentRoot для обоих VirtualHosts одинаковы - / www / site1 - поэтому будут обслуживать одни и те же страницы, даже если он работает

Попробуйте создать отдельный DocumentRoot для второго виртуального хоста.

Для справки, вот мой (рабочий, обрезанный, URL переименован) httpd.conf:

NameVirtualHost *

<VirtualHost *>
        DocumentRoot    /var/www/site1
        ServerName      my.website.co.nz
        ServerAlias     www.my.website.co.nz
</VirtualHost>


<VirtualHost *>
        DocumentRoot    /var/www/joker
        ServerName      another.site.co.nz
        ServerAlias     www.another.site.co.nz
</VirtualHost>

Удачной охоты!

РЕДАКТИРОВАТЬ: MrTopf имеет хорошую точку. NameVirtualHost должен точно соответствовать директиве VirtualHost. Обратите внимание, что у меня есть звездочка только для каждого из них, тогда как у вас есть NameVirtualHost *: 80 и VirtualHosts с *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...