Apache несколько поддоменов с одним IP-адресом

это, вероятно, было задано, но я не могу найти прямой ответ, или те, которые я нашел, не работают.

у меня один домен mydomain.com, разрешение на IP; назовем его 8.8.8.8. Параметры DNS также указывают два поддомена на этот IP-адрес с записью A. Это dev.mydomain.com и staging.mydomain.com. Оба имеют A-запись, указывающую на 8.8.8.8.

на сервере (8.8.8.8) у меня есть два файла виртуальных хостов. Вот они:

постановка.мидомен.com.conf

<VirtualHost *:80>
    ServerName  staging.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

и...

Дэв.мидомен.com.conf

<VirtualHost *:80>
    ServerName  dev.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>

проблема:

независимо от того, посещаю ли я http://staging.mydomain.com или http://dev.mydomain.com, я всегда приземляюсь на staging.mydomain.com (Apache обслуживает эти архив.)

я перезапустил Apache и даже сервер. Если я изменю порядок .conf файлы, чтобы Дев был первым, я всегда это вижу. Любые предложения будут оценены. Спасибо!


обновление

Я снова возвращаюсь к этой проблеме! Если ты ... --28-->знаю что ваш синтаксис правильный, у вас может быть плохая символическая ссылка. Удалите его и повторно создайте, перезапустив apache между ними. Я просто сделал это, и это решило часы головы царапин. On CentOS вы можете проверить свои доступные vhosts с httpd -S

обновление 2

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

1 ответов


звучит так, как будто вам нужно добавить NameVirtualHost директива конфигурации.

NameVirtualHost         *:80

при некоторых обстоятельствах Apache может не справиться *:80 правильно VirtualHosts. В этих случаях вы должны сопоставить VirtualHosts непосредственно на определенных IPs.

NameVirtualHost         8.8.8.8:80

<VirtualHost 8.8.8.8:80>
    ServerName  staging.mydomain.com
    ServerAlias stage.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

<VirtualHost 8.8.8.8:80>
    ServerName  dev.mydomain.com
    ServerAlias development.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>

вы также можете запустить apachectl -t -D DUMP_VHOSTS чтобы увидеть, как Apache анализирует конфигурацию VirtualHost.

Update: как упоминалось в комментариях, обычно вы можете просто использовать NameVirtualHost *:80. Так что большинство время можно настроить виртуальные хосты следующим образом.

NameVirtualHost         *:80

<VirtualHost *:80>
    ServerName  staging.mydomain.com
    ServerAlias stage.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

<VirtualHost *:80>
    ServerName  dev.mydomain.com
    ServerAlias development.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>