另一个 nginx 网络服务器前面的 nginx 代理 > 获取正确的 IP

另一个 nginx 网络服务器前面的 nginx 代理 > 获取正确的 IP

我有一个 nginx 反向代理(服务器 A)在另一个 nginx 服务器(B)前面运行。

然而,A 似乎没有正确地将 IP 传递给服务器 B。

尽管我已经

    proxy_set_header   X-Real-IP  $remote_addr;
    proxy_set_header   Host $host;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

我的配置中的这些行。

我知道对于 Apache 来说,只需加载 RPAF 模块。

nginx 有类似的东西吗?

干杯

答案1

这里有一个很好的模块概述:http://wiki.nginx.org/Modules 具体来说,你需要这个:http://wiki.nginx.org/HttpRealIpModule

答案2

对于您所说的“未传递 IP”的含义(您看到的是错误的 IP 以及您期望的结果),提供更多细节会很有帮助。

我要冒险说一下,您可能在日志中看到的是反向代理的地址而不是客户端的地址 - 您可以更改日志格式以显示标题的内容X-Forwarded-For(下面的示例是对默认组合格式的调整):

log_format proxied_combined '$http_x_forwarded_for - $remote_user [$time_local]  '
                            '"$request" $status $body_bytes_sent '
                            '"$http_referer" "$http_user_agent"';
access_log logdir/access.log proxied_combined;

相关内容