2016-03-14 4 views
0

Не слишком уверен в Apache, предварительно настройте простые виртуальные хосты без проблем. Кажется, что у вас странный, работающий с 1 IP-адресом и несколькими серверами.Apache Virtual Host - проблемы с прокси-сервером

Мой второй виртуальный хост, похоже, смотрит только на первые 2 записи и игнорирует остальные. Я наметил то, что хочу, и как выглядит мой vhost-файл, а второе изображение - это то, что происходит.

How my virtual hosts are setup and envision the routing to act

How it's currently operating

Теперь, возможно, не правильно, используя виртуальные хосты на обоих серверах?

Не слишком уверен в Apache, предварительно настройте простые виртуальные хосты без проблем. Кажется, что у вас странный, работающий с 1 IP-адресом и несколькими серверами.

Мой второй виртуальный хост, похоже, смотрит только на первые 2 записи и игнорирует остальные. Я наметил то, что хочу, и как выглядит мой vhost-файл, а второе изображение - это то, что происходит.

Сервер1

<VirtualHost *:80> 
    ServerName server1.domain.com 
    ServerAlias x.domain.com 
    DocumentRoot /var/www/html 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName server2.domain.com 
    ServerAlias y.domain.com 

    ProxyPreserveHost On 
    <Proxy *> 
     Order allow,deny 
     Allow from all 
    </Proxy> 
    ProxyPass/http://server2 
    ProxyPassReverse/http://server2 

</VirtualHost> 

<VirtualHost *:80> 
    ServerName server2.domain.com 
    ServerAlias z.domain.com 

    ProxyPreserveHost On 
    <Proxy *> 
     Order allow,deny 
     Allow from all 
    </Proxy> 
    ProxyPass/http://server2 
    ProxyPassReverse/http://server2 

</VirtualHost> 

<VirtualHost *:80> 
    ServerName server2.domain.com 
    ServerAlias w.domain.com 
    ProxyRequests Off 
    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 
    ProxyPass/http://server2 
    ProxyPassReverse/http://server2 
</VirtualHost> 

Сервер 2

<VirtualHost *:80> 
    ServerName server2.domain.com 
    DocumentRoot /var/www/html 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName server2.domain.com 
    ServerAlias z.domain.com 
    DocumentRoot /var/www/html/z 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName server2.domain.com 
    ServerAlias w.domain.com 
    DocumentRoot /var/www/html/w 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName server2.domain.com 
    ServerAlias y.domain.com 
    DocumentRoot /var/www/html/y 
</VirtualHost> 
+0

Я не уверен, что я правильно понял вашу конфигурацию. Поскольку все ваши ServerNames читают «server2, domain.com» в конфигурации виртуального хоста server1, они фактически конфликтуют. Таким образом, может применяться только первая запись. То же самое с конфигурацией server2. Не могли бы вы добавить, как этот параметр нужно вызывать через http? – rpy

+0

Таким образом, точка входа в сеть находится на сервере 1, так как у меня есть только один IP-адрес с открытым доступом. Почему я использую сервер 1 для перехода на сервер 2, потому что я не хочу использовать разные номера портов для удобства использования, ege server1.domain.com:81. Таким образом, любая из выбранных поддоменов z, w и y. Должно быть просто направлено на второй сервер, а оттуда сервер 2 виртуальных хоста направит субдомены в правильные папки. – LOFast

ответ

0

Избегайте давать один и тот же Имя_сервера для любых двух VirtualHost записей. Использование имен x, y, z и т. Д. Совершенно нормально (предполагается, что все решения относятся к одному IP-адресу от внешних пользователей).

Для простоты (обслуживания и управления конфигурацией) также избегайте смешивания «стандартной» конфигурации сервера (например, x на сервере1) с помощью VirtualHost. Любая доступная область в вашем пространстве имен в Интернете должна быть настроена через VirtualHost. (Первый в вашей конфигурации, если в этом случае используется «по умолчанию».)

Использование VirtualHosts на обоих серверах само по себе не является проблемой. Вам просто нужно убедиться, что имя_сервера из исходного HTTP-запроса правильно пересылается и поступает на сервер2. Для этого вам необходимо добавить

ProxyPreserveHost On 

к вашим настройкам VirtualHost.

Однако может быть проще отказаться от использования имени VirtualHosts на основе имени server2 и перейти к использованию различных IP-адресов или портов для отдельных (логических) хостов. Server2 (по крайней мере, по понятию) является внутренней настройкой и не видимой «внешней» стороной. Таким образом, простота использования на самом деле не связана

+0

Спасибо за ваши комментарии, действительно стараюсь избегать использования портов и просто иметь все против поддомена. – LOFast

+0

Что бы вы ни делали, сервер2 нуждается в базовой информации, чтобы различать ваши различные виртуальные хосты.В противном случае они просто располагаются в единственном совпадающем элементе (например, первом). Это то, что вы наблюдаете ... – rpy

+0

Итак, моя проблема связана с брандмауэром/портами. Первый выпуск - ProxyPass, а ProxyPassReverse - «/ http: // server2», который должен быть «/ http: // server2 /», поэтому отсутствует последний тире. В дополнение к этому, я переводил с 81 по 80 для этого сервера. Таким образом, ProxyPass и ProxyPassReverse выглядели как «/ http: // server2: 81 /» – LOFast

Смежные вопросы