我们有一个有时会挂起的应用程序服务器。我们怀疑这是由于来自客户的错误请求。
nginx 能否将完整的请求/响应(如 fiddler 捕获)记录到文件中,以便我们可以看到挂起之前发送的请求?
(我们可能需要避免 pcap 和这种方法,并在 nginx 中完成所有操作)
如果 nginx 不是用于此的正确工具,那么可能是什么(除了网络分析器)?
Xav*_*cas 53
要获取访问者发送的请求正文,请使用client_body_in_file_only on;并记录写入日志的“临时”文件,方法是将 var 附加$request_body_file到日志格式。默认情况下,“临时”文件将位于 client_temp 目录中。
您也可以记录请求标头$http_<header>并使用$sent_http_<header>.
如果您有请求正文和标题,您应该能够重播它并获得访问者的响应。
也应该高度考虑像gor这样的东西,这样你就可以在其他环境中重放流量,在那里你可以让 nginx 写入这些临时文件而不会在生产中导致 IO 问题(nginx 不会用on值清除它们,这就是为什么它不是“临时”在这种情况下)。
Viv*_*mas 18
mitmproxy似乎是完成您所要求的正确工具。
mitmproxy 是一个交互式的、支持 SSL 的、具有控制台界面的 HTTP 中间人代理。
mitmdump 是 mitmproxy 的命令行版本。想想 HTTP 的 tcpdump。
特征
- 拦截 HTTP 请求和响应并动态修改它们。
- 保存完整的 HTTP 对话以供以后重放和分析。
- 重放 HTTP 对话的客户端。重放先前记录的服务器的 HTTP 响应。
- 反向代理模式将流量转发到指定的服务器。
- OSX 和 Linux 上的透明代理模式。
- 使用 Python 对 HTTP 流量进行脚本化更改。
- 用于拦截的 SSL 证书是即时生成的。
反向代理模式可以让您像 Fiddler 一样捕获请求和响应。
| 归档时间: |
|
| 查看次数: |
139903 次 |
| 最近记录: |