如何配置Nginx实现多反向代理,根路径与子路径映射不同容器端口
问题核心原因
- 端口映射配置完全反向:你当前配置里
/LLS/路径绑定的是8000端口,根路径绑定的是8080端口,和你要实现的需求正好相反 proxy_pass的路径规则问题:如果proxy_pass末尾不带斜杠,Nginx会把完整的请求路径(包括/LLS/前缀)直接转发给上游服务,如果8080端口的服务是部署在根路径下,会出现404错误
修正后的配置
server { listen 80; server_name IP; #return 301 https://$host$request_uri; # nginx/sites-available/fdp.conf location /LLS/ { proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass_request_headers on; # 端口修改为目标8080,末尾斜杠会自动剔除请求路径中的/LLS/前缀 proxy_pass http://IP:8080/; } location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass_request_headers on; # 根路径转发到目标8000端口 proxy_pass http://IP:8000; } }
配置说明
- 如果你8080端口的服务本身需要接收带
/LLS/前缀的请求,不需要剔除前缀,把proxy_pass http://IP:8080/末尾的斜杠删除即可 - Nginx的前缀匹配优先级高于通用根路径匹配,只要配置正确不会出现
/LLS/请求被转发到根路径对应端口的问题
内容的提问来源于stack exchange,提问作者Moopsish
相关产品推荐
相关产品推荐

