You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx upstream配置不同路径:本地服务异常时如何调整备份节点路由路径?

Nginx 配置调整方案

你需要放弃原有共用同一个upstream的写法,因为统一的proxy_pass路径处理规则无法适配两个后端节点的不同路径映射要求,改用「优先代理本地+错误触发 fallback 到测试环境」的方案即可实现需求,完整配置如下:

server {
  listen 80;

  location /approot/ {
    # 本地服务转发规则:末尾带/会自动去除URI前缀的/approot/
    proxy_pass http://127.0.0.1:8082/;
    # 开启上游错误拦截,触发自定义fallback逻辑
    proxy_intercept_errors on;
    # 匹配本地服务不可用的典型状态码,跳转到备份处理节点
    error_page 502 503 504 = @fallback_to_test_env;

    # 基础代理参数,可根据实际需求调整
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 缩短本地超时时间,加快故障切换速度,单位秒
    proxy_connect_timeout 2s;
    proxy_send_timeout 2s;
    proxy_read_timeout 2s;
  }

  # 备份节点专用处理逻辑
  location @fallback_to_test_env {
    # 末尾不带/,会完整保留原始请求的/approot/前缀
    proxy_pass http://172.26.1.1:80;
    # 如果备份节点需要校验域名,可指定Host为正式测试域名
    # proxy_set_header Host test.mycompany.com;
  }
}

方案逻辑说明

  • 本地服务正常运行时,请求路径处理逻辑和原有配置完全一致:http://test.mycompany.com/approot/home 会被转发到 http://127.0.0.1:8082/home,符合第一个要求。
  • 当本地服务未启动、连接超时或返回不可用状态时,Nginx会自动触发内部重定向到备份逻辑,此时原始请求的完整URI会直接拼到备份节点地址后,http://test.mycompany.com/approot/home 会被转发到 http://172.26.1.1:80/approot/home,符合第二个要求。
  • 该方案可直接复用扩展到你其他9个服务的配置,只需要对应修改端口、路径前缀即可。

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:07