我建立了一个类似这样的网络农场:
|-------------------> Apache1
|
HAProxy -|
|
|-------------------> Apache2
HAproxy 有外部 IP xxxx
Apache1 有 2 个接口:内部 yyyy(用于来自 HAProxy 的请求)和外部 IP zzzz
Apache2 有 2 个接口:内部 yy.yy.yy.yy(用于来自 HAProxy 的请求)和外部 IP zz.zz.zz.zz
任何时候我从其中一个 apache 服务器向服务器场外发出请求(例如,使用 php 发出 curl 请求到 google.com)时,REMOTE_ADDR 标头就是发出调用的 apache 服务器的外部 IP(yy.yy.yy.yy 或 zz.zz.zz.zz)。
问题是,我向某些服务器发出此类请求以限制来自 IP 的请求。理想情况下,我希望向他们提供 HAProxy 服务器 (xxxx) 的 IP,而不是向他们提供 2 个后端服务器的 IP。
有没有办法通过配置 apache 或 haproxy 来实现这一点?
答案1
您必须配置 apache 通过代理服务器发送请求。最简单的设置是在 haproxy 机器上安装 squid 并在路由器/防火墙上实现透明代理。
假设它是 Linux,你可以使用它
http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html
如果是其他东西(cisco、checkpoint),它们都应该支持类似的设置。
如果您无权访问防火墙/路由器,您可以在实际的 apache 机器上实现透明代理。