将真实 IP 地址从一个 nginx 实例传递到另一个 nginx 实例并将其写入日志中

将真实 IP 地址从一个 nginx 实例传递到另一个 nginx 实例并将其写入日志中

将请求移动到我的内部 nginx 服务器,我添加到调用中:

proxy_set_header X-Real-IP $remote_addr;

当我尝试在日志中打印此值时,内部 nginx 容器崩溃:

log_format verbose ' Real: $X-Real-IP ';

我做错了什么?(我也尝试在变量周围使用“”,但没有帮助。)

答案1

服务器接收X-Real-IPHTTP 请求中的标头之一。Nginx 将每个请求标头值作为变量提供。

http 请求标头值的变量名称以 开头$http_。标头名称将转换为小写,并且每个连字符将替换为下划线。

例如X-Real-IP$http_x_real_ip

这个文件了解详情。

答案2

可以ngx_http_realip_module使 nginx 在 nginx 内部的任何地方使用标头中的 IP 地址作为源 IP。

其配置如下:

set_real_ip_from 192.168.1.1 # IP address of the external nginx
real_ip_header X-Real-IP;

通过该模块,不需要定义自己的日志格式,nginx 会在日志文件和所有其他地方输出真实的客户端IP作为源IP地址。

相关内容