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

如何在Nginx同一location下访问多台后端服务器

问题分析与解决方案

你当前的核心问题是**proxy_pass直接硬编码了第一台服务器的地址**,完全没有用到定义好的upstream块,所以所有请求都会固定指向192.168.12.38:3004。按以下步骤修改即可实现两台服务器的负载均衡访问:

1. 修正upstream的合法命名

Nginx的upstream名称不允许包含斜杠,把你原有的my/api/call改为合法名称(比如my_api_call):

upstream my_api_call {
    server 192.168.12.38:3004;   
    server 192.168.12.38:3500;  
}

2. 修改proxy_pass指向upstream

将location块中的proxy_pass目标改为刚才定义的upstream名称,同时保留原有的路径拼接逻辑:

location ~ ^/my/api/call(/?)(.*) {
    proxy_pass http://my_api_call/my/api/call$2?$args;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

额外优化(可选)

Nginx默认使用轮询策略自动分配请求到两台服务器,如果需要更定制化的负载规则,可以给server添加参数:

  • 权重分配:让某台服务器接受更多请求
    upstream my_api_call {
        server 192.168.12.38:3004 weight=2;   # 接受2倍于另一台的请求量
        server 192.168.12.38:3500;  
    }
    
  • IP哈希:绑定用户IP到固定服务器,解决会话保持问题
    upstream my_api_call {
        ip_hash;
        server 192.168.12.38:3004;   
        server 192.168.12.38:3500;  
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:43:13