从Apache负载均衡器重定向的请求中获取原始远程主机

时间:2015-10-02 08:51:28

标签: apache load-balancing

我有2个Apache Http服务器2.4作为我的应用程序的负载平衡器。我遇到的问题是我的应用程序选择远程主机作为负载均衡器之一,但我实际上想要请求的真正来源,如在发起呼叫的客户端中。 有人知道如何真正获得真正的远程主机吗?

1 个答案:

答案 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地址。