我正在使用nginx(v1.4.1)代理外部服务,但希望能够POST
在代理之前检查并可能修改请求的主体.问题是,我无法POST
通过$request_body
变量或其他方式在处理请求时访问请求体.
我已经阅读了很多帖子和SO问题,并且已经实现了这个建议的策略,该策略旨在允许记录POST
正文(当使用proxy_pass
指令时).然而,虽然这对我有用,但我仍然无法$request_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 '';
}
Run Code Online (Sandbox Code Playgroud)
而我希望能够做到的:
location /proxy-this/ {
... (same configuration as above) ...
set $request_body $request_body&extra_param=1;
}
Run Code Online (Sandbox Code Playgroud)
我知道这可能是使用nginx_lua
模块,并看了看HttpFormInputModule
,但第一个似乎矫枉过正,后者一段时间没有更新.
您是否尝试过使用proxy_set_body?
那就像
location /proxy-this/ {
... (same configuration as above) ...
proxy_set_body $request_body&extra_param=1;
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*ack -3
尝试修改 POST 数据听起来并不明智。我建议在 proxy_pass 时在查询字符串中设置额外的参数,然后将其作为 GET 变量读取。
proxy_pass https://example.com/external-endpoint/?extra_param=1;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5311 次 |
最近记录: |