Nous utilisons Nginx comme proxy inverse avec cette configuration:
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;
[...]
}
[...]
}
Dans le cadre du journal d'accès, je voudrais enregistrer le serveur en amont qui a servi la demande, ce qui dans notre cas signifie simplement le port localhost associé.
Les variables dans la documentation ( http://wiki.nginx.org/HttpProxyModule#Variables ) mentionnent $ proxy_Host et $ proxy_port mais dans le journal elles se retrouvent toujours avec les valeurs "frontends" et "80 ".
Utilisation $upstream_addr
et vous obtiendrez, par exemple, 127.0.0.1:8000
ou unix:/home/my_user/www/my_site/tmp/.Unicorn.sock
Ajoutez d'abord un nouveau format d'enregistrement
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';
puis redéfinissez accesslog comme
access_log /var/log/nginx/access.log upstreamlog;
log_format va à la section http {}, access_log peut être à l'intérieur de l'emplacement.