不幸的是,我不了解 Web 服务器,但我正在尝试帮助同事。我们有一个 Apache Web 服务器设置,我们需要它将收到的请求重定向到应用程序服务器,同时保持源 IP 与 Apache 收到请求时的 IP 相同。
发生的事情是:
- 客户端(IP:1.1.1.1)向 Apache Web 服务器发送请求
- Apache Web 服务器(IP:2.2.2.2)将其请求重定向到应用服务器
- 应用服务器将源 IP 视为(2.2.2.2) 是 Apache 的!
如何配置 Apache 以让其将请求重定向到应用程序服务器而不改变源 IP,因此在提到的示例中,应用程序服务器将接收 1.1.1.1 作为源 IP 地址。
遗憾的是,使用标题是我们最后的选择,因为它将迫使我们在应用程序中进行大规模的改变。
答案1
如果您想保留 IP 地址,这样就不必进行您提到的大规模应用程序更改,您可以启用 IP 转发,然后在 IP 级别转发流量,而不是通过代理(请参阅http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/例如)。
如果使用 Windows,请查看netsh interface portproxy add v4tov4
(参见https://technet.microsoft.com/en-us/library/cc731068(v=ws.10).aspx#BKMK_1)。
答案2
您应该使用反向代理而不是 Web 服务器来执行此操作,尝试安装 nginx(它同时执行反向代理和 Web 服务器)。
它将允许您做您想做的事情,基本上,您不需要配置文件系统路径,而是配置网络路径(您的应用程序服务器)。