如何在NGINX日志中添加proxy_pass值以调试请求转发目标?
在NGINX日志中记录proxy_pass目标地址的配置方法
NGINX没有内置变量直接获取proxy_pass的目标地址,得通过自定义变量+修改日志格式来实现,具体步骤如下:
给每个location配置自定义变量
在对应的location块里,先用set指令把proxy_pass的目标地址存到一个自定义变量里,再用这个变量作为proxy_pass的参数,比如:location /api/superadmin/ { set $proxy_target "http://127.0.0.1:9039"; proxy_pass $proxy_target; }这样每个请求进入这个location时,
$proxy_target就会被赋值为对应的转发地址。修改日志格式,加入自定义变量
找到NGINX配置文件的http块,修改或新增log_format,把$proxy_target变量添加到日志字段中。比如默认的main格式可以改成:log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$proxy_target"';然后确保你的server块里的
access_log指令使用这个格式:access_log /var/log/nginx/access.log main;重新加载NGINX配置
执行命令让配置生效:nginx -s reload
配置完成后,新的日志就会显示对应的proxy_pass值,示例如下:
119.82.108.182 - - [18/Dec/2023:09:06:37 +0000] "GET /api/superadmin/ HTTP/1.1" 200 52 "-" "PostmanRuntime/7.29.0" "http://127.0.0.1:9039"
内容的提问来源于stack exchange,提问作者Abhinav Prakash
相关产品推荐
相关产品推荐

