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