Nginx 代理后面的 Apache 访问日志中的 IP 重复

Nginx 代理后面的 Apache 访问日志中的 IP 重复

我最近继承了一个基础设施,其中所有用户都经过 AWS ELB -> nginx 代理 -> AWS ELB -> Apache。我看到的问题是客户端的 IP 在 Apache 中显示两次,类似于以下行:

"x.x.x.x, x.x.x.x" - - [26/Oct/2016:18:59:10 +0000] "GET /....

nginx 对该虚拟主机的访问日志非常正常:

x.x.x.x - - [26/Oct/2016:18:59:10 +0000] "GET /

问题是我不太清楚如何调试丢失的位置。我猜想这要么是 nginx 发送的标头,要么是 Apache 中出现了一些奇怪的东西,尽管我怀疑是 nginx 传递的 X-Forwarded-For 标头。以下是受影响域的相关虚拟主机配置:

location / { if ($xxx-example-com-maintenance) { return 503; } if ($http_origin ~* (https?://xxx\.example\.com)) { add_header 'Access-Control-Allow-Origin' "$http_origin"; } proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass $upstream;

现在,Apache 的日志格式如下所示:

LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" SESSION-%{frontend}C %h" forwarded

后者是从以前的 Web 堆栈复制而来,工作得很好。有点停留在这里,因为从我的角度来看一切都很好。我确实发现nginx real_ip_header 和 X-Forwarded-For 似乎错误但是我运行的是 nginx 1.10。Apache 版本是 2.4.23。如果您能提供进一步排除故障的见解,我将不胜感激。提前致谢。

答案1

事实证明,X-Forwarded-For 标头的行为就是这样的,解决方案是使用 ELB 未使用的其他标头 - 在我的情况下是 X-Real-IP。我现在可以在日志中看到单个 IP。

相关内容