Apache ProxyPass 到域的共享 IP 地址

Apache ProxyPass 到域的共享 IP 地址

我遇到过需要将一个域(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 上查找哪个域?

答案1

共享 IP 地址 (192.168.168.168) 上的网络服务器依赖具有已知主机/域名的 Host 标头来显示正确的内容。

您通常可以通过在指令中实际使用该主机/域名来轻松实现这一点ProxyPass

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

由于您声明 domain2.com 的实际 DNS 条目不正确,您可以通过在 Web 服务器中添加具有 192.168.168.168 IP 地址的 domain2.com 来覆盖该条目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>

相关内容