Apache поддомен и хосты переписать
Итак, вот основы того, что я пытаюсь сделать. У меня есть 2 сервера, один живой и один разработчик. Live имеет 2 домена, к которым он привязан. Для простоты мы будем называть их a.live.com и b.live.com. У Dev есть публичный IP-адрес, но к нему не подключен хост. Так что я могу получить доступ к dev, перейдя к 11.22.33.44, но на самом деле я не могу использовать имя хоста для доступа к нему. (Домены явно указывают только на живой сервер)
Я только что создал сервер dev, но у меня проблемы с доступом к двум поддоменам. У меня есть файл 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, но сначала мы хотели запустить сервер dev и убедиться, что все работает должным образом)
Любая помощь будет принята с благодарностью. Я не знаком с переписыванием apache, поэтому не уверен, что делаю что-то не так.
Я провел некоторые поиски по вине сервера, и вот несколько ответов на обычно задаваемые вопросы: Я побежал
apachectl restart
после изменения всего. (Из того, что я понимаю, изящные иногда пропускают вещи, поэтому я сделал полный перезапуск вместо этого) Я также запустил configtest, и он сказал, что синтаксис был в порядке
Заранее спасибо.
1 ответ
Сводка немного вводит в заблуждение, предполагает проблему с Apache mod_rewrite, хотя это не так.
Ваш основной httpd.conf включает NameVirtualHosts?
NameVirtualHost *:80
Если это включено:
Для дальнейшего анализа, пожалуйста, включите регистрацию на вашем Apache. Каждый vhost должен регистрироваться в отдельном лог-файле и пытаться получить доступ к вашим серверам с вашего клиента с помощью некоторых опций отладки, например, с помощью curl:
curl -vvv http://a.live.com/
curl -vvv http://b.live.com/
Таким образом, вы можете узнать, к какому IP-адресу ваш клиент действительно подключается и какой виртуальный хост на этом IP-адресе действительно доступен.