在 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;
}
我正在尝试使用 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。跟随
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;
}