我有服务器前端服务器:Apple 和后端服务器 Orange
为了在第一行中明确说明,我不想将用户 IP 地址通过 Apple 传递到 Orange,因为我已经通过使用
proxy_set_header X-Real-IP $remote_addr;
我的问题是我想将前端服务器 IP 地址传递到后端服务器,因为我们有太多前端服务器,所以我会知道从哪个前端服务器发送。有什么想法或例子吗?我不能使用 REMOTE_ADDR,因为它是通过用户 IP 地址传递的。
谢谢。
答案1
我不知道有什么自动方法可以做到这一点。您可以使用proxy_set_header frontend_ip <ipaddress>
。
可以<ipaddress>
手动添加到配置中,也可以在生成配置时由配置管理系统添加。
然后您可以在后端对标题值执行任何操作。
问题澄清之前的旧答案
您的后端 Web 服务器可能已配置为用标头中的地址替换连接主机 IP 地址X-Real-IP
。
您需要修改后端服务器配置,以便它们不使用X-Real-IP
。
例如,在 nginx 中,从配置中删除real_ip_header
和set_real_ip_from
行。
还要确保您的后端应用程序没有使用REMOTE_ADDR
实际的标题。
答案2
我找到了解决方案,您只需要在后端服务器上使用 HTTP_X_FORWARDED_FROM,然后您就可以使用它来查看前端 IP 地址。完美运行。