有没有支持这种功能的代理或者自己实现有什么好的方法?

2021-05-18 18:42:54 +08:00
 zhoudaiyu


比如有一个代理 117.114.58.53 ,它反向代理后一些后端服务,且只能启动一个端口 80,后端服务有 4 层的有 7 层的,但是就 7 层代理而言,需要后端 url 不同,这样才能区分,比如有两个被代理服务 A 和 B 文根都是 /api/nginx,这样代理就没法区分到底转发给谁了,我想了一个思路,就是在文根前加一个标识,比如 A 的变为 /A/api/nginx,/B/api/nginx,这样 nginx 就可以区分了,但是后端服务很多不支持这样修改 url 会返回 404 或者 301 302 这种,而且还有很多重定向什么的也会修改 url 。

所以想代理这块有没有能支持这种需求的,在不修改后端配置或者代码情况下,能处理这种自定义文根映射和处理重定向的。如果没有的话自己实现有什么可以借鉴的吗?

1454 次点击
所在节点    NGINX
3 条回复
ch2
2021-05-18 18:48:56 +08:00
"但是后端服务很多不支持这样修改 url"
nginx 可以 rewrite 那个 url,在转发的时候把 /A/跟 /B/给去掉
keyword233
2021-05-18 21:43:05 +08:00
nginx 就可以做到
举个例子

```
server
{
listen 80;
location /A/example_api/ {
http://10.0.0.1:80/example_api/;
proxy_set_header Host $host:$server_port;
}
location /B/example_api/ {
http://10.0.0.2:80/example_api/;
proxy_set_header Host $host:$server_port;
}
}
```
oneisall8955
2021-05-18 21:48:37 +08:00
看着像网关,springcloud-gateway 的感觉

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/777751

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX