使用NGINX作为API负载均衡时如何为upstream节点追加指定路径
解决方案
NGINX的upstream块仅用于定义后端服务节点的IP+端口信息,路径拼接逻辑不需要写在upstream中,直接在location块的proxy_pass配置中补全即可。
适配原有场景的配置
如果你需要和之前单后端配置效果一致,所有请求都直接转发到后端的固定路径/api/darkshield/searchContext.mask,不需要保留客户端请求路径,直接修改proxy_pass配置即可,完整可运行配置如下:
upstream backend{ server localhost:8080; server localhost:8081; } server { listen 80; server_name localhost; location / { # 直接在upstream名称后补全需要的固定路径即可 proxy_pass http://backend/api/darkshield/searchContext.mask; # 可选补充代理头配置,避免后端服务获取异常 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
保留客户端请求路径的配置
如果你的场景需要将客户端请求的URI追加到固定路径之后,比如客户端请求/query?kw=test需要转发到http://backend/api/darkshield/searchContext.mask/query?kw=test,可以用rewrite规则实现:
upstream backend{ server localhost:8080; server localhost:8081; } server { listen 80; server_name localhost; location / { # 重写路径,将请求URI追加到固定路径后 rewrite ^/(.*)$ /api/darkshield/searchContext.mask/$1 break; proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
内容的提问来源于stack exchange,提问作者Kevin Roldos
相关产品推荐
相关产品推荐

