我们有一个有时会挂起的应用程序服务器。 我们怀疑这是由于客户的要求不好。
nginx可以将完整的请求/响应(如fiddler捕获)logging到文件中,所以我们可以看到挂起之前发送的请求?
(我们可能需要避免pcap和这种方法,并在nginx中完成)
如果nginx不是正确的工具,除了networking分析器以外,可能是什么?
要获取访问者发送的请求主体,请使用client_body_in_file_only on;
并通过将var $request_body_file
附加到日志格式来将其写入日志的“临时”文件logging到日志中。 “Temporary”文件将默认位于client_temp目录中。
您也可以logging请求头文件$http_<header>
并发送头文件为$sent_http_<header>
。
如果你有请求正文和标题,你应该能够重播,并得到你的访问者的回应。
还应该高度考虑像gor这样的事情,所以你可以在其他环境重播stream量,你可以让nginx写入这些临时文件,而不会导致生产中的IO问题(nginx不会清除它们的值,这就是为什么它不是“暂时的“ 在这种情况下)。
mitmproxy似乎是正确的工具来做你在问什么。
mitmproxy是一个交互式,具有SSL能力的中间代理,具有控制台界面的HTTP。
mitmdump是mitmproxy的命令行版本。 认为tcpdump的HTTP。
特征
- 拦截HTTP请求和响应并在运行中修改它们。
- 保存完整的HTTP会话以供以后重播和分析。
- 重放HTTP对话的客户端。 重播以前logging的服务器的HTTP响应。
- 反向代理模式将stream量转发到指定的服务器。
- 在OSX和Linux上的透明代理模式。
- 使用Python对HTTPstream量进行脚本化更改。
- 用于拦截的SSL证书即时生成。
反向代理模式可以让你像Fiddler一样捕获请求和响应。