Apache-2.4

Apache ProxyPass 到域的共享 IP 地址

  • November 9, 2021

我有一個案例,我需要將域 (domain1.com) 代理傳遞到託管在共享 ip 地址 (192.168.168.168) 上的不同域 (domain2.com),但 domain2.com DNS 指向的不是共享 ip地址,所以 domain2.com 不能作為代理通行證,只能作為共享 ip 地址。

由於共享 ip 地址有多個主機名,是否有域或主機名配置選項可以與 proxypass 一起使用以強制在另一端進行虛擬主機查找?例如,使用這個 apache conf 文件將 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) 上的網路伺服器依賴具有已知主機/域名的 Host 標頭來顯示正確的內容。

ProxyPass您通常可以通過在指令中實際使用該主機/域名來輕鬆實現:

<Location />
   ProxyPass http://domain2.com/
   ProxyPassReverse http://domain2.com/
</Location>

由於您聲明 domain2.com 的實際 DNS 條目不正確,您可以通過在 web 伺服器主機文件中添加 domain2.com 和 192.168.168.168 IP 地址來覆蓋它

# /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 以使用RequestHeader指令設置正確的主機標頭,類似於以下內容:

<Location />
   RequestHeader set Host "domain2.com"
   ProxyPass http://192.168.168.168/
   ProxyPassReverse http://domain2.com/
</Location>

引用自:https://serverfault.com/questions/1082975