Tenemos un servidor de aplicaciones que a veces se bloquea. Sospechamos que se debe a una mala solicitud de un cliente.
¿Puede nginx registrar la solicitud / respuesta completa (como las capturas de fiddler) en los archivos, para que podamos ver las solicitudes que se enviaron antes del bloqueo?
(Probablemente necesitemos evitar pcap y ese enfoque y hacerlo todo en nginx)
Si nginx no es la herramienta adecuada para esto, ¿qué (además de un analizador de red) podría ser?
Respuestas:
Para que los visitantes envíen el cuerpo de la solicitud, use
client_body_in_file_only on;
y registre el archivo "temporal" en el que está escrito en los registros agregando var$request_body_file
al formato de registro. Los archivos "temporales" se ubicarán en el directorio client_temp de manera predeterminada.También puede registrar encabezados de solicitud
$http_<header>
y encabezados enviados con$sent_http_<header>
.Si ha solicitado el cuerpo y los encabezados, debería poder reproducirlo y obtener la respuesta que tuvo su visitante.
También se debe considerar algo como gor para que pueda reproducir el tráfico en otro entorno en el que puede dejar que nginx escriba estos archivos temporales sin causar problemas de E / S en producción (nginx no los purgará con
on
valor, por eso no es tan "temporal" en este caso).fuente
client_body_in_file_only
y$http_<header>
que sería necesario. Lo entiendo ahora.mitmproxy parece ser la herramienta adecuada para hacer lo que está pidiendo.
El modo proxy inverso le permitiría capturar la solicitud y la respuesta al igual que lo hace Fiddler.
fuente