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>