在 NGINX 中重定向时添加自定义 header

Add a custom header while redirecting in NGINX

我正在尝试使用 nginx 将所有 API 调用重定向到授权服务端点。我将需要传递一个自定义 header,我打算在其中传递原始 uri 或 $request_uri。 尝试以下操作:

location /api/other {`
    add_header X-Original_URI $request_uri
    return 308 https://example.com/myauthservice/api/authorize
}

不幸的是,header 没有被添加,需要一些帮助,看看这是否是正确的方法。

我尝试了 auth_request 模块,proxy_pass。 auth_request 我无法使用,因为它无法发送 $request_body。跟随 ,但无法存储或捕获 $request_body.

proxy_pass 我无法使用,因为它最终是这样的:

https://myauthservice/api/authorize/createuser 其中 createuser 来自 https://example.com/api/other/createuser

您可以阻止将 /createuser 后缀附加到代理请求。作为 proxy_pass 文档 states:

In some cases, the part of a request URI to be replaced cannot be determined:

...

  • When the URI is changed inside a proxied location using the rewrite directive, and this same configuration will be used to process a request (break):

    location /name/ {
        rewrite    /name/([^/]+) /users?name= break;
        proxy_pass http://127.0.0.1;
    }
    

    In this case, the URI specified in the directive is ignored and the full changed request URI is passed to the server.

尝试以下 location 块:

location /api/other {
    rewrite ^ /myauthservice/api/authorize break;
    proxy_set_header X-Original_URI $request_uri;
    proxy_pass https://example.com;
}