May 22

Logs en proxy-backends

Darrerament m'ha tocat instal·lar uns quants reverse proxies al davant de servidors web. En alguns casos ens ha simplificat l'administració (totes les aplicacions web que tenim escampades en uns quants servidors es poden veure sota la mateixa URL). I en altres casos ha alleugerit espectacularment l'Apache de darrera simplement per estalviar-li el "spoon feeding" de clients amb poc ample de banda.

Darrerament m'ha tocat instal·lar uns quants reverse proxies al davant de servidors web. En alguns casos ens ha simplificat l'administració (totes les aplicacions web que tenim escampades en uns quants servidors es poden veure sota la mateixa URL). I en altres casos ha alleugerit espectacularment l'Apache de darrera simplement per estalviar-li el "spoon feeding" de clients amb poc ample de banda.

Un cop està tot funcionant el servidor del backend ens mostrarà les IPs de les quals li arriben les peticions: és a dir, la del nostre reverse proxy. Generalment ens interessa més registrar la IP del client. Depenent de quin servidor web tinguem al backend aquests són els formats de log que necessitem:

Lighttpd:

accesslog.format = "%{X-Forwarded-For}i %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

Nginx:

log_format main '$remote_addr - $remote_user [$time_local] '
    '"$request" $status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"' ;
access_log /var/log/nginx/access.log main;

Apache:

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Google Analytics: no cal patir-hi; les estadístiques es generen gràcies a codi JavaScript que s'executa al navegador.

Tags: accesslog, apache, codi-lliure, lighttpd, log, logformat, nginx, proxy, proxy-backend, reverse-proxy, spoon-feeding, x-forwarded-for