我们有一个 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。