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-адресе действительно доступен.

Другие вопросы по тегам