我有2个Apache Http服务器2.4作为我的应用程序的负载平衡器。我遇到的问题是我的应用程序选择远程主机作为负载均衡器之一,但我实际上想要请求的真正来源,如在发起呼叫的客户端中。 有人知道如何真正获得真正的远程主机吗?
答案 0 :(得分:3)
来自Apache 2.4 mod_proxy documentation:
在反向代理模式下运行时(使用ProxyPass指令, 例如),mod_proxy_http为了添加几个请求头 将信息传递给原始服务器。这些标题是:
X-Forwarded-For 客户端的IP地址。
X-Forwarded-Host 客户端在Host HTTP请求标头中请求的原始主机。
X-Forwarded-Server 代理服务器的主机名。
在原始服务器上使用这些标题时要小心,因为它们包含更多 如果原始请求已经存在,则不是一个(逗号分隔)值 包含其中一个标题。例如,您可以使用 %{X-Forwarded-For} i在源服务器的日志格式字符串中 记录原始客户端的IP地址,但您可能会获得多个IP地址 请求通过多个代理的地址。
因此,您实际上需要从最终应用程序中捕获 X-Forwarded-For HTTP标头。但要小心,正如文档所说,它可能包含Apache代理前面的所有中间代理的IP地址。