logging - 记录上游请求 Nginx 反向代理

标签 logging nginx proxy lua

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

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

我代理的服务器没有返回位置 header ,这意味着我的 $upstream_http_location不返回任何东西。

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

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

最佳答案

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 选项

关于logging - 记录上游请求 Nginx 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701609/

相关文章:

java - Log4j 识别 logj4.debug,但不尊重 log4j.properties 设置?

python - 修改Python记录器的输出格式

nginx - Capistrano 3 无权查询此 Phusion Passenger 实例的状态

amazon-web-services - Cloudformation DynamoDB-API 网关代理

ubuntu - 如何在 Ubuntu 上设置系统范围的代理?

go - 如何将日志写入多个文件?

node.js - Azure 诊断日志大小限制

ssl - Nginx 重定向到 SSL,特定 URL 除外

ruby-on-rails - 如何正确诊断 500 错误(Rails、Passenger、Nginx、Postgres)

java - Beta 程序站点分离