2013-09-05 7 views
11

Usiamo Nginx come reverse proxy con questa configurazione:Come registrare la richiesta server upstream reverse serving nel log 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; 
    [...] 
    } 
    [...] 
} 

Come parte del log di accesso, vorrei registrare il server upstream che ha servito la richiesta, che nel nostro caso significa semplicemente localhost associato porta.

Le variabili nella documentazione (http://wiki.nginx.org/HttpProxyModule#Variables) menzionano $ proxy_host e $ proxy_port ma nel registro si trovano sempre con i valori "frontend" e "80".

risposta

14

Usa $upstream_addr e si otterrà, ad esempio, 127.0.0.1:8000 o unix:/home/my_user/www/my_site/tmp/.unicorn.sock

24

Prima aggiungere nuovo formato di registrazione

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'; 

e quindi ridefinire AccessLog come

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

log_format va a http { } section, access_log può essere all'interno della posizione.

+0

Grazie per questo! Ora abbiamo una chiara immagine dei tempi di richiesta. –