5

我已经构建并配置了Nginx反向代理服务器。

我已经将日志记录设置为包括$upstream_http_location和其他各种变量。

我代理的服务器不返回位置标头,这意味着我的$upstream_http_location不返回任何内容。

我想记录我的上游请求,以便能够在日志中看到我向上游服务器发出的请求。

我想知道是否有一种简单的方法可以在不创建 lua 脚本的情况下记录Nginx发出的出站请求,或者 lua 脚本是否是解决此问题的最佳方法,有人可以在我的搜索中提供方向吗?

4

2 回答 2

0

5年后我有同样的问题如果不能在nginx中完成,我建议使用mitmproxy,但由于nginx不处理传出代理,我将不得不使用另一个隧道二进制文件来完成。

我用过socat,但我认为stunnel也可以。这是我的 nginx 配置示例

proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host-Real-IP  $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-Pcol http;

        proxy_intercept_errors on;
        proxy_pass https://127.0.0.1:9090/;
        #127.0.0.1:9090 is the adress on which socat is listening
        #
        proxy_set_header Host [remote_host];
        proxy_redirect https://[remote_host]/ https://[nginx_hostname]/;

这是我的 socat 脚本,在我的示例中,它必须在 nginx 服务器上运行。

proxy=mitmproxy_address
proxyport=mitmproxy_port
forwarded_ip=your_server_address
forwarded_port=your_server_address_port

socat TCP4-LISTEN:9090,reuseaddr,fork PROXY:$proxy:$forwarded_ip:$forwarded_port,proxyport=$proxyport

至于 mitmproxy,您应该查看教程以了解它是如何工作的。您可以从以下内容开始:

mitmproxy -p 8888

如果您的服务器是自签名的,您可以使用 --insecure 选项

于 2018-12-11T14:50:34.677 回答
-1

在 Windows 上,迄今为止我发现的最佳方法是使用 Wireshark,它可以捕获接口上的所有流量。

如果服务器只监听环回地址,Wireshark 将无济于事(这适用于 ASP.NET 开发服务器)。在这种情况下,TcpTrace通过将所有 TCP 流量从一个端口传送到另一个端口来提供帮助。

(TcpTrace 也可以记录所有的流量,并且它自己可能就足够了,没有 Wireshark)。

不确定这是否有帮助,因为您没有指定操作系统。

于 2013-07-22T16:41:23.290 回答