我有一个带有 Mod_Proxy 的 Apache2 来访问后端(带有一些网站的 IIS,所有网站都在单个 IP 上配置了主机名)。
我想添加主机头以使用代理的 IP(而不是主机名)来访问域。
<VirtualHost MYPROXYIP>
ProxyPreserveHost On
ProxyRequests Off
ProxyVia On
ProxyTimeout 300
<Proxy *>
Allow from all
</Proxy>
ServerName www.mywebsite.com
ProxyPassReverse / http://MYBACKENDIP/
ProxyPass / http://MYBACKENDIP/
</VirtualHost>
现在,MYBACKENDIP 需要一个主机名。我该如何传递它?
答案1
如果您设置 ProxyPreserveHost On,此选项将把传入请求中的 Host: 行传递到代理主机,而不是 ProxyPass 行中指定的主机名。
因此,如果您希望将 ServerName www.mywebsite.com 转发到代理,请使用“ProxyPreserveHost On”。如果您要设置其他主机名,请删除此指令,然后使用 ProxyPass 指令中的主机名。
答案2
使用解决
在 /etc/hosts 中,我添加了真实的后端 IP,并在 PROXYIP XXXX DNSTOREACH 上配置了 DNS
<VirtualHost PROXYIP>
ProxyRequests Off
ProxyVia On
ProxyTimeout 300
<Proxy *>
Allow from all
</Proxy>
ServerName DNSTOREACH
ProxyPassReverse / http://DNSTOREACH/
ProxyPass / http://DNSTOREACH/
</VirtualHost>
因此,PROXYIP 具有 A 记录,并且在代理服务器上在 /etc/hosts 中使用后端 IP 进行配置。