我们的团队开发了一款分析应用程序,用于记录和分析所有传入(未丢弃)请求。为此,我必须将所有请求的副本发送到我的反向代理解决方案中的另一个上游。
仅使用 NGINX 可以实现吗?或者是否有其他对当前反向代理结构影响最小的解决方案?
最好在 NGINX 内部执行此操作,以便 NGINX 对请求的处理已经完成,并且请求将与发送到上游目标的请求相同。
PS: 分析应用程序没有返回任何响应
答案1
在 nginx 文档中搜索后,我找到了一个目录镜像nginx.org。想想,这就是你所需要的。
我们使用 Kubernetes 和 nginx 作为入口,因此我们的配置是
location /api/what-i-want-to-mirror {
set $proxy_upstream_name "gateway-api-service-svc-80";
proxy_pass http://upstream_balancer;
mirror /mirror;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location = /mirror {
set $proxy_upstream_name "integration-gateway-api-service-svc-80";
proxy_pass http://upstream_balancer;
internal;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Original-URI $request_uri;
}
我们已经尽快完成了这项工作,但效果非常好。