У меня есть случай, когда мне нужно прокси передать домен (domain1. com)в другой домен (domain2.com), размещенный на общем IP-адресе (192.168.168.168), но DNS domain2.com указывает не на общий IP-адрес, поэтому domain2. com нельзя использовать в качестве прокси-прохода, только общий IP-адрес.
Поскольку общий IP-адрес имеет несколько имен хостов, существует ли параметр конфигурации домена или имени хоста, который можно использовать с proxypass для принудительного поиска виртуального хоста на другой стороне? Например, используя этот файл конфигурации apache для прокси-сервера domain1.com на 192.168.168.168.
#Apache Reverse Proxy
SSLProxyEngine on
<Location />
ProxyPass http://192.168.168.168/
ProxyPassReverse http://192.168.168.168/
</Location>
Можно ли внести какие-либо изменения, чтобы определить, в каком домене искать этот IP-адрес?
Веб-сервер с общим IP-адресом (192.168.168.168) использует заголовок узла с известным именем узла/домена для отображения правильного содержимого.
Обычно вы можете легко добиться этого, фактически используя это имя хоста/домена в директиве ProxyPass
:
<Location />
ProxyPass http://domain2.com/
ProxyPassReverse http://domain2.com/
</Location>
Поскольку вы заявляете, что фактическая запись DNS для domain2.com неверна, вы переопределяете это, добавление domain2.com с IP-адресом 192.168.168.168 в ваш файл hosts веб-серверов
# /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# added for Apache reverse proxy
192.168.168.168 domain2.com
Альтернативой является явная настройка Apache для установки правильного заголовка Host с помощью директивыRequestHeader
, что-то по строкам:
<Location />
RequestHeader set Host "domain2.com"
ProxyPass http://192.168.168.168/
ProxyPassReverse http://domain2.com/
</Location>