![如何在 apache 中打印 x-forwared-for 值?](https://linux22.com/image/796043/%E5%A6%82%E4%BD%95%E5%9C%A8%20apache%20%E4%B8%AD%E6%89%93%E5%8D%B0%20x-forwared-for%20%E5%80%BC%EF%BC%9F.png)
我们有一个 aws 负载均衡器。负载均衡器使用 TCP 连接 443 来加密数据。
由于负载均衡器加密了客户端的 IP,因此在我们的 apache 日志文件中,我们只能看到负载均衡器的 IP,而看不到客户端的 IP。尽管我们在日志格式中使用了 %{X-Forwarded-For}i。
有什么办法可以解决这个问题吗?
答案1
是的,ELB 支持解密 SSL 请求并将普通的 http 请求发送回您的 Apache 后端服务器。
ELB 将添加X-Forwarded-For
和X-Forwarded-Proto
标头,以便您区分 SSL 请求和纯 http 请求。非 SSL 请求可能只有标X-Forwarded-For
头,也可能将X-Forwarded-Proto
标头设置为http
。
如果您的 Apache 在端口 443 上接收请求,ELB 就无法注入任何标头,并且您的日志将只包含负载均衡器本身的 IP 地址。您必须在 ELB 中执行 SSL 终止才能获取标头X-Forwarded-For
。
有一个这里有不错的教程. 还有一个此处专门针对 Thawte 进行回答。
答案2
你需要mod_rpaf对于 Apache 来说,它将用 X-FORWARDED-FOR 打包的 IP 代替负载均衡器的 IP。