Nous avons un serveur d'applications qui se bloque parfois. Nous pensons que cela est dû à une mauvaise demande d'un client.
Nginx peut-il consigner la demande / réponse complète (comme les captures de fiddler) dans des fichiers afin que nous puissions voir les demandes envoyées avant le blocage?
(Nous devons probablement éviter PCAP et cette approche et tout faire avec nginx)
Si nginx n’est pas le bon outil pour cela, quel peut-être (à part un analyseur de réseau)?
Réponses:
Pour que le corps de la demande soit envoyé par les visiteurs, utilisez
client_body_in_file_only on;
et enregistrez le fichier "temporaire" dans lequel il est écrit dans les journaux en ajoutant var$request_body_file
au format de journal. Les fichiers "temporaires" seront situés par défaut dans le répertoire client_temp.Vous pouvez également enregistrer les en-têtes de requête
$http_<header>
et les en-têtes envoyés avec$sent_http_<header>
.Si vous avez un corps de requête et des en-têtes, vous devriez pouvoir le rejouer et obtenir la réponse de votre visiteur.
Vous devez également prendre en compte quelque chose comme gor pour pouvoir reproduire le trafic sur un autre environnement dans lequel vous pourriez laisser nginx écrire ces fichiers temporaires sans générer de problèmes d'E / S en production (nginx ne les purgera pas avec la
on
valeur. C'est pourquoi ce n'est pas "temporaire". dans ce cas).la source
client_body_in_file_only
et que vous en$http_<header>
auriez besoin. Je comprends ça maintenant.mitmproxy semble être le bon outil pour faire ce que vous demandez.
Le mode proxy inverse vous permettrait de capturer la demande et la réponse, comme le fait Fiddler.
la source