Два сервера с mod_proxy, второй хост-сервер имеет локальный IP-адрес и показывает /proxy/ в URL-адресе?

У меня возникли некоторые проблемы с сеансами со вторым сервером, который я запускаю в своей домашней сети. Я делаю это в качестве хобби и для разработки новых приложений до того, как они будут официально запущены.

У меня есть домен, указывающий на мой IP-адрес, и он успешно разрешается на сервер 1, но после настройки mod_proxy для отправки определенных доменов на сервер 2 я получаю некоторые нежелательные ошибки и результаты. Я хочу, чтобы второй сервер действовал как обычный сервер и просто проходил через первый сервер, поскольку мой текущий маршрутизатор может отправлять порт 80 только на один локальный IP-адрес и не фильтровать его.

У меня есть a.mydomain.com для моего второго сервера, и он отлично разрешается, но когда я пытаюсь использовать веб-приложение на этом втором сервере, я получаю следующую ошибку.

Warning: You are now accessing Mydomain from http://10.0.1.38/, but Mydomain has been configured to run at this address: http://a.mydomain.com/

Могу ли я исправить это?

Также при попытке доступа к phpmyadmin через a.mydomain.com/phpmyadmin после входа в систему он изменится на a.mydomain.com/proxy/phpmyadmin, могу ли я изменить это так, чтобы он был в основном бесшовным и не добавлял /proxy.

Вот моя конфигурация vhost для сервера 1

<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName www.server1domain.net
</VirtualHost>

<VirtualHost *:80>
ProxyPreserveHost On
ServerName a.mydomain.com
       <Proxy *>
        Order deny,allow
        Allow from all
       </Proxy>
ProxyPass / http://10.0.1.38/
ProxyPassReverse / http://10.0.1.38/
</VirtualHost> 

Вот конфигурация vhost для сервера 2

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/mydomaincom
    ServerName a.mydomain.com
</VirtualHost>

Я использую Centos 6.4


person Markus Tenghamn    schedule 17.03.2013    source источник


Ответы (1)


Хорошо, я наконец понял это, некоторые вещи теперь немного очевидны, но это работает для всех, кто находится в подобной ситуации.

Итак, ранее в моем http.conf у меня было это

<IfModule mod_proxy.c>
   ProxyRequests Off
   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>

# destination directory

   ProxyPass /proxy http://10.0.1.38
   ProxyPassReverse /proxy http://10.0.1.38
</IfModule> 

Кажется, есть две проблемы с этим: кажется, что добавляется каталог /proxy/, а также это неправильно, так как ip не имеет завершающей косой черты, поэтому я изменил его на это

<IfModule mod_proxy.c>
   ProxyRequests Off
   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>
</IfModule>

И мой конфиг vhost http.conf для первого сервера теперь выглядит так

<VirtualHost *:80>

ProxyPreserveHost On

ProxyPass / http://10.0.1.38/

ServerName a.mydomain.com
</VirtualHost> 

Если вы забудете косую черту после IP-адреса, вы, скорее всего, получите ошибку 502: Не удалось разрешить DNS.

Конфигурация vhost второго сервера выглядит так

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/mydomain
    ServerName a.mydomain.com
</VirtualHost>

Надеюсь, это поможет кому-то еще с похожими проблемами.

person Markus Tenghamn    schedule 25.03.2013
comment
Я потратил почти день, пытаясь заставить этот сценарий работать. Пробовал много конфигураций в исходном файле 000-default.conf. Все казалось правильным, но не работало. Я включил модуль proxy на Apache2, но не включил модуль proxy_http apache2. Итак, когда я a2enmod proxy_http, сценарий начал работать. Надеюсь, это может помочь любому. - person alexscmar; 13.12.2015