如何用Nginx实现help.mycompany.com的路径分流至第三方应用与前端?
Nginx 路径分流配置方案
以下是满足需求的完整Nginx配置,实现自研前端与第三方应用的路径分流:
# 精确匹配自研前端路径:/app/test1 location = /app/test1 { proxy_pass http://localhost:500; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; } # 精确匹配自研前端路径:/app/test2/test3 location = /app/test2/test3 { proxy_pass http://localhost:500; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; } # 匹配自研前端路径:/app/parameter(含带参数的请求) location ^~ /app/parameter { proxy_pass http://localhost:500; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; } # 精确匹配第三方应用路径:/app/partner1 location = /app/partner1 { proxy_pass https://mycompany.partner.com; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host mycompany.partner.com; proxy_redirect off; } # 精确匹配第三方应用路径:/app/discuss/check location = /app/discuss/check { proxy_pass https://mycompany.partner.com; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host mycompany.partner.com; proxy_redirect off; } # 兜底规则:所有未匹配的请求转发至第三方应用 location / { proxy_pass https://mycompany.partner.com; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host mycompany.partner.com; proxy_redirect off; }
配置关键点说明
- 精确匹配优先级:使用
location =语法处理完全固定的路径(如/app/test1),确保请求不会被其他前缀规则误拦截。 - 带参数路径处理:
location ^~ /app/parameter采用前缀匹配且优先于正则匹配,无论该路径后携带什么查询参数,都会正确转发到自研前端。 - 第三方请求适配:转发到第三方应用时,将
Host头设置为mycompany.partner.com,保证第三方应用能正确识别请求来源。 - 兜底逻辑:最后一个
location /覆盖所有未被前面规则匹配的请求,实现“其他所有路径转发至第三方”的要求。
内容的提问来源于stack exchange,提问作者uberrebu
相关产品推荐
相关产品推荐

