User Tools

Site Tools


registrar_cabeceras_http_en_logs_de_nginx

Registrar cabeceras HTTP en los logs de Nginx

Registrar en los logs del servidor web Nginx las cabeceras enviadas por los clientes puede resultar muy útil, sobre todo usando servicios estilo Akamai, Imperva, Radware, etc que funcionan como un proxy reverso para mitigar ataques DOS o balancear carga. Estos envían información extra sobre la petición original en forma de cabeceras HTTP a los servidores destinos que han contratado sus servicios. Recordemos que este tipo de servicios hacen de intermediarios entre las consultas de los visitante y el servidor del contenido.

Por ejemplo los clientes de Imperva pueden utilizar estas cabeceras para registrar información extra sobre las peticiones que los visitantes han realizado.

  • INCAP-TLS-Version: Versión de TLS utilizada durante la sesión entre los usuarios finales y el proxy de Incapsula.
  • NCAP-Req-ID: ID que Imperva asigna a la query.
  • Incap-Client-IP: IP Real del cliente que hizo la solicitud web original.

Para registrarla en los logs de Nginx simplemente usaremos la sintaxis “$http_nombre_cabecera”. Siempre en minúsculas y usando guiones bajos. Vamos a agregar esas tres cabeceras a la configuración estándar de los logs de nginx y llamaremos al formato de logs “imperva_custom”.

log_format imperva_custom '$remote_addr - $remote_user [$time_local] '
                          '"$request" $status $body_bytes_sent '
                          '"$http_referer" "$http_user_agent"'
                          '"$http_incap_tls_version" "$http_ncap_req_id" "$http_incap_client_ip"';

Indicar al fichero access.log que use el formato definido en “log_format”.

access_log /var/log/nginx/XXX/access.log imperva_custom;

Si se desea probar con el comando curl la nueva configuración del formato de logs se podrían usar estos comandos. Veamos un ejemplo para las cabeceras “X-Forwarded-For” y “X-Real-IP”.

# Sin usar proxy.
curl --header "X-Forwarded-For: X.X.X.X" http://www.dominio.com
curl --header "X-Real-IP: X.X.X.X" http://www.dominio.com
 
# Usando Proxy Socks5 (ej. www.XXX.com:1234).
curl --header "X-Forwarded-For: X.X.X.X" --socks5 www.XXX.com:1234 http://www.dominio.com
curl --header "X-Real-IP: X.X.X.X" --socks5 www.XXX.com:1234 http://www.dominio.com
registrar_cabeceras_http_en_logs_de_nginx.txt · Last modified: 2020/12/25 22:57 by 127.0.0.1