将请求移动到我的内部 nginx 服务器,我添加到调用中:
proxy_set_header X-Real-IP $remote_addr;
当我尝试在日志中打印此值时,内部 nginx 容器崩溃:
log_format verbose ' Real: $X-Real-IP ';
我做错了什么?(我也尝试在变量周围使用“”,但没有帮助。)
答案1
服务器接收X-Real-IP
HTTP 请求中的标头之一。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地址。