比如有一个代理 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 。
所以想代理这块有没有能支持这种需求的,在不修改后端配置或者代码情况下,能处理这种自定义文根映射和处理重定向的。如果没有的话自己实现有什么可以借鉴的吗?
1
ch2 2021-05-18 18:48:56 +08:00
"但是后端服务很多不支持这样修改 url"
nginx 可以 rewrite 那个 url,在转发的时候把 /A/跟 /B/给去掉 |
2
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; } } ``` |
3
oneisall8955 2021-05-18 21:48:37 +08:00 via Android
看着像网关,springcloud-gateway 的感觉
|