Как записать запрос на обслуживание обратного прокси-сервера в журнале Nginx?

Мы используем 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) упоминают $proxy_host и $proxy_port, но в журнале они всегда заканчиваются значениями "frontends" и "80".

2 ответа

Решение

Использование $upstream_addr и вы получите, например, 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  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 может быть внутри локации.

Другие вопросы по тегам