Temos um servidor de aplicativos que às vezes trava. Suspeitamos que seja devido a uma solicitação incorreta de um cliente.
O nginx pode registrar a solicitação / resposta completa (como capturas de violinistas) em arquivos, para que possamos ver as solicitações que foram enviadas antes do travamento?
(Nós provavelmente precisamos evitar o pcap e essa abordagem e fazer tudo no nginx)
Se o nginx não for a ferramenta certa para isso, o que (exceto um analisador de rede) pode ser?
Respostas:
Para obter o corpo da solicitação enviado pelos visitantes, use
client_body_in_file_only on;
e registre o arquivo "temporário" no qual ele é gravado nos logs, anexando var$request_body_file
ao formato de log. Arquivos "temporários" estarão localizados no diretório client_temp por padrão.Você também pode registrar cabeçalhos de solicitação
$http_<header>
e enviar cabeçalhos com$sent_http_<header>
.Se você tiver um corpo e cabeçalhos de solicitação, poderá reproduzi-lo e obter a resposta que seu visitante teve.
Além disso, algo como gor deve ser altamente considerado para que você possa reproduzir o tráfego em outro ambiente em que possa deixar o nginx gravar esses arquivos temporários sem causar problemas de IO na produção (o nginx não os purificará com
on
valor, é por isso que não é tão "temporário" nesse caso).fonte
client_body_in_file_only
e$http_<header>
seria necessário. Eu entendo isso agora.O mitmproxy parece ser a ferramenta certa para fazer o que você está pedindo.
O modo de proxy reverso permite capturar a solicitação e a resposta, assim como o Fiddler.
fonte