如何使用nginx读取和操作POST请求变量?
我正在使用nginx(v1.4.1)代理外部服务,但希望能够在代理前检查并可能修改如何使用nginx读取和操作POST请求变量?,nginx,Nginx,我正在使用nginx(v1.4.1)代理外部服务,但希望能够在代理前检查并可能修改POST请求的主体。问题是,在处理请求时,我当前无法访问POST请求正文,无论是通过$request\u body变量还是其他方式 我已经阅读了许多帖子和问题,并且已经实现了,这是为了允许记录POST主体(当使用proxy\u pass指令时)。然而,虽然这对我有效,但在处理请求期间,我仍然无法从$request\u body读取任何内容 为清楚起见,以下是我的配置的相关部分: location /proxy-th
POST
请求的主体。问题是,在处理请求时,我当前无法访问POST
请求正文,无论是通过$request\u body
变量还是其他方式
我已经阅读了许多帖子和问题,并且已经实现了,这是为了允许记录POST
主体(当使用proxy\u pass
指令时)。然而,虽然这对我有效,但在处理请求期间,我仍然无法从$request\u body
读取任何内容
为清楚起见,以下是我的配置的相关部分:
location /proxy-this/ {
client_max_body_size 8k;
client_body_buffer_size 16k;
client_body_in_single_buffer on;
proxy_pass https://example.com/external-endpoint/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Content-Length '';
}
我希望能够做到:
location /proxy-this/ {
... (same configuration as above) ...
set $request_body $request_body&extra_param=1;
}
我知道使用
nginx\u lua
模块可以实现这一点,并且已经研究了HttpFormInputModule
,但是第一个似乎有些过分,后者已经有一段时间没有更新了。试图修改POST数据听起来不明智。我建议在代理传递查询字符串并将其作为GET变量读取时,在查询字符串中设置额外的参数
proxy_pass https://example.com/external-endpoint/?extra_param=1;
你试过使用吗
那就像
location /proxy-this/ {
... (same configuration as above) ...
proxy_set_body $request_body&extra_param=1;
}
这可能不明智,但这正是我想做的:)。我无法控制我要代理的服务,因此这不是一个选项。很抱歉我在谷歌遇到过这个问题,这是没有用的,试图通过代理添加API机密/客户端,即编辑帖子正文是非常有效和合理的要求。