我的用例是,我有一封电子邮件,其中包含“验证您的电子邮件地址”链接。当用户单击此链接时,用户代理将执行GET请求,例如:
GET http://widgetwerkz.example.com/confirm_email?challenge=LSXGMRUQMEBO
服务器将作为POST执行此操作(因为这是副作用操作)。我根本无法访问服务器代码。目的地请求应为:
POST http://widgetwerkz.example.com/rpc/verify
{ "challenge": "LSXGMRUQMEBO" }
我可以执行什么Nginx重写来实现这一目标?
编辑:上下文中的解决方案
http {
server {
# ...
location /confirm_email {
set $temp $arg_challenge;
proxy_method POST;
proxy_set_body '{ "challenge": "$temp" }';
proxy_pass http://127.0.0.1/rpc/verify;
set $args '';
}
}
}
这一起做所有这些:
/confirm_email
重写为/rpc/verify
/rpc/verify
,而没有?challenge=LSXGMRUQMEBO
){ "challenge": "LSXGMRUQMEBO" }
感谢伊万(Ivan)将我带入正确的轨道!
答案 0 :(得分:1)
您需要这样的东西:
location /confirm_email {
proxy_method POST;
proxy_set_body '{ "challenge": "$arg_challenge" }';
# your proxy_set_headers and other parameters here
proxy_pass <your_backend>/rpc/verify;
}