首页 文章

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

提问于
浏览
17

我们使用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;
    [...]
  }
  [...]
}

作为访问日志的一部分,我想记录为请求提供服务的上游服务器,在我们的例子中,这意味着关联的localhost端口 .

文档中的变量(http://wiki.nginx.org/HttpProxyModule#Variables)提到$ proxy_host和$ proxy_port但在日志中它们总是以值"frontends"和"80"结束 .

2 回答

  • 37

    首先添加新的日志记录格式

    log_format upstreamlog '[$time_local] $remote_addr - $remote_user - $server_name  to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time';
    

    然后将accesslog重新定义为

    access_log /var/log/nginx/access.log upstreamlog;
    

    log_format转到http {}部分,access_log可以在内部位置 .

  • 23

    使用 $upstream_addr ,您将获得,例如 127.0.0.1:8000unix:/home/my_user/www/my_site/tmp/.unicorn.sock

相关问题