Итак, вот основы того, что я пытаюсь сделать. У меня есть 2 сервера, один живой и один девелоперский. Live имеет 2 домена, прикрепленных к нему. Для простоты мы будем называть их a.live.com и b.live.com. Dev имеет общедоступный IP-адрес, но к нему не подключен хост. Таким образом, я могу получить доступ к dev, перейдя к 11.22.33.44, но на самом деле я не могу использовать имя хоста для доступа к нему. (Очевидно, что домены указывают только на действующий сервер)
Я только что создал сервер разработки, но у меня проблемы с доступом к двум поддоменам. У меня есть настройка файла hosts на моем компьютере, который указывает хост на домен:
11.22.33.44 a.live.com
11.22.33.44 b.live.com
У меня включены оба сайта (они оба появляются в / etc / apache2 / sites-enabled), но по какой-то причине, когда я захожу на b.live.com, он пытается получить доступ к a.live.com на моем сервере разработки. Итак, я знаю, что хост правильно указывает на правильный сервер. Кроме того, когда я отключаю a.live.com, то b.live.com правильно переходит на правильный поддомен. Таким образом, похоже, что apache каким-то образом берет любой домен, который я ввел, и каким-то образом упорядочивает их в любом порядке ... Вот пример моего файла vhost
<VirtualHost *:80>
ServerName a.live.com
DocumentRoot /var/www/a/
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
</VirtualHost>
Файл b vhost точно такой же, но с очевидными изменениями.
Некоторые дополнительные примечания: Dev использует apache 2.4, в то время как live использует 2.2, поэтому я не могу просто скопировать и вставить вещи = / (Мы планируем в конечном итоге продвинуть live до 2.4, но сначала мы хотели запустить сервер разработки и убедиться, что все работает должным образом)
Любая помощь будет принята с благодарностью. Я не знаком с переписыванием apache, поэтому не уверен, что делаю что-то не так.
Я немного искал ошибку сервера и вот несколько ответов на обычно задаваемые вопросы: Я запустил
apachectl restart
после переделки все. (Насколько я понимаю, изящный иногда пропускает что-то, поэтому вместо этого я выполнил полный перезапуск) Я также запустил configtest, и он сказал, что синтаксис в порядке
Заранее спасибо.
Резюме немного вводит в заблуждение, предполагает проблему Apache mod_rewrite, хотя это не так.
Включает ли ваш основной httpd.conf NameVirtualHosts?
NameVirtualHost *:80
Если это включено:
Для дальнейшего анализа, пожалуйста, включите регистрацию на вашем Apache (ах). Каждый виртуальный хост должен регистрироваться в другом файле журнала и пытаться получить доступ к вашим серверам с вашего клиента с некоторыми параметрами отладки, например, используя curl:
curl -vvv http://a.live.com/
curl -vvv http://b.live.com/
Таким образом вы сможете узнать, к какому IP-адресу действительно подключается ваш клиент и к какому виртуальному хосту на этом IP-адресе действительно осуществляется доступ.