如何将 Nginx GET 请求重写为 POST?

How to rewrite an Nginx GET request into POST?

我的用例是我有一封包含 "verify your email address" link 的电子邮件。当用户单击此 link 时,用户代理会执行 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 '';
        }
    }
}

所有这些一起完成:

感谢 Ivan 让我走上正轨!

你需要这样的东西:

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?;
}