gpt4 book ai didi

nginx proxy_pass 删除基本路径

转载 作者:行者123 更新时间:2023-12-05 07:44:16 28 4
gpt4 key购买 nike

所以我目前在 http://www.example.com 有一个网站我希望来自

的所有请求
http://www.example.com/api/v2/<anything>

被代理到

http://api.v2.com/<anything>

请注意 http://api.v2.com没有基本路径。我的配置:

server {
listen 80;
server_name www.example.com;

location /api/v2/ {
proxy_pass http://api.v2.com;
}

location / {
index index.html;
root /var/www/example.com/htdocs;
}
}

然而,通过这种方式,请求被代理到 http://api.v2.com/api/v2/<anything>保留原始路径,而不是 http://api.v2.com/<anything> .

我已经注意到了:

location /api/v2 {
proxy_pass http://api.v2.com/api;

按需工作 - http://api.v2.com/api/v2/<anything> http://api.v2.com/api/<anything> 的代理.

有没有办法实现第一个行为(即 http://api.v2.com/api/v2/<anything>http://api.v2.com/<anything> )?我必须使用重写吗?我知道它与规范化 URI 相关,这是预期的,只是想知道是否有办法做到这一点。

最佳答案

如果您想从结果 url 中删除到服务器的代理路径,您应该在代理 url 中包含 uri 部分,或者您应该指定重写部分。

在这种特定情况下,它应该如下所示,

location /api/v2/ {
rewrite /api/v2/(.*) /$1 break;
proxy_pass http://api.v2.com/;

}

有关更多信息,请访问 nginx 文档 https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

关于nginx proxy_pass 删除基本路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42990046/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com