如何在Nginx日志中记录反向代理上游服务器服务请求?

如何在Nginx日志中记录反向代理上游服务器服务请求?,nginx,reverse-proxy,Nginx,Reverse Proxy,我们将Nginx用作此设置的反向代理: upstream frontends { server 127.0.0.1:8000; server 127.0.0.1:8001; server 127.0.0.1:8002; [...] } server { location / { proxy_pass http://frontends; [...] } [...] } 作为访问日志的一部分,我想记录为请求提供服务的上游服务器,在我们的例子中,它只是指

我们将Nginx用作此设置的反向代理:

upstream frontends {
  server 127.0.0.1:8000;
  server 127.0.0.1:8001;
  server 127.0.0.1:8002;
  [...]
}

server {
  location / {
    proxy_pass http://frontends;
    [...]
  }
  [...]
}
作为访问日志的一部分,我想记录为请求提供服务的上游服务器,在我们的例子中,它只是指关联的本地主机端口


文档()中的变量提到$proxy_host和$proxy_port,但在日志中,它们总是以值“frontends”和“80”结尾。

使用
$上游地址
,您将得到,例如,
127.0.0.1:8000
unix:/home/my_user/www/my_site/tmp/.unicorn.sock
首先添加新的日志格式

log_format upstreamlog '[$time_local] $remote_addr - $remote_user - $server_name $host to: $upstream_addr: $request $status upstream_response_time $upstream_response_time msec $msec request_time $request_time';
示例输出:

[18/Nov/2019:10:08:15 -0700] <request IP> - - - <config host> <request host> to: 127.0.0.1:8000: GET /path/requested HTTP/1.1 200 upstream_response_time 0.000 msec 1574096895.474 request_time 0.001

日志格式转到http{}部分,访问日志可以在位置内。

谢谢!现在我们对请求时间有了清晰的了解。
access_log /var/log/nginx/access.log upstreamlog;