如何在apache中打印x-forwared-for的值?

我们有一个aws负载平衡器。 负载均衡器使用TCP连接443来encryption数据。

由于负载均衡器对客户端的IP进行了encryption,所以在我们的apache日志文件中,我们只能看到负载均衡器的IP,而不是客户端的IP。 尽pipe我们在日志格式中使用了%{X-Forwarded-For} i。

有什么办法来解决这个问题?

是的, ELB支持解密SSL请求并发送纯粹的http请求回到您的Apache后端服务器。

ELB将添加X-Forwarded-ForX-Forwarded-Proto标题,以便您可以区分SSL请求和普通http请求。 非SSL请求可能只有X-Forwarded-For头,或者可能会将X-Forwarded-Proto头设置为http

如果您的Apache正在接收端口443上的请求,则ELB不能注入任何标头,而您的日志将只包含负载平衡器本身的IP地址。 您必须在ELB中执行SSL终止才能获得X-Forwarded-For标头。

这里有一个体面的教程 。 这里还有一个专门针对Thawte的答案 。

你需要Apache的mod_rpaf 。 它将把X-FORWARDED-FOR打包的IP代替负载平衡器的IP。