负载均衡接入的核心是通过upstream定义后端集群,再用location+proxy_pass按路径或域名精准分发请求;支持路径区分(如/api、/static)、子域名隔离(如admin.example.com)及rewrite重写适配,并需配置健康检查、容错与真实ip透传。

负载均衡接入时,反向代理与 URL 转发规则的配置核心在于:用 upstream 定义后端服务集群,再通过 location + proxy_pass 按路径、域名或 URL 特征把请求精准分发到不同业务系统。这不是简单转发,而是多业务复用同一入口的关键设计。
按 URL 路径区分业务(动静分离/模块拆分)
适用于同一域名下多个子系统共存,比如 /api 走 Java 后端、/static 走 CDN 或静态服务器、/upload 专供文件服务:
- 在
http块中定义多个 upstream,例如:
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
upstream static_backend {
server 192.168.1.20:80;
}
upstream upload_backend {
server 192.168.1.30:3000;
}
- 在
server块中按location匹配路径并转发:
proxy_pass http://api_backend/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static/ {
proxy_pass http://static_backend/;
}
location /upload/ {
proxy_pass http://upload_backend/;
}
注意:proxy_pass 末尾加不加 / 决定路径是否被截断——加斜杠会剥离匹配前缀,不加则原样透传。
按子域名区分业务(多租户/多环境)
适合不同业务使用独立子域,如 admin.example.com、api.example.com、docs.example.com,共享同一套 Nginx 入口:
- 为每个子域单独写一个
server块,避免 location 冲突:
listen 80;
server_name admin.example.com;
location / {
proxy_pass http://192.168.1.40:9000/;
}
}
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://api_backend/;
}
}
这种方式天然隔离,便于权限控制、SSL 证书绑定和日志归类。
结合 rewrite 实现路径重写与兼容适配
当后端服务接口路径与对外暴露路径不一致时(如旧版 API 需兼容迁移),可用 rewrite 预处理 URL:
- 将
/v1/user重写为/backend/user再转发:
rewrite ^/v1/(.*)$ /backend/$1 break;
proxy_pass http://legacy_backend;
}
- 对外隐藏内部版本号,统一走
/user,但根据 header 或参数路由到不同后端:
if ($http_x_version = "v2") {
proxy_pass http://v2_backend/user;
break;
}
proxy_pass http://v1_backend/user;
}
注意:if 在 location 中慎用,优先考虑 map 指令做变量映射更稳定。
健康检查与容错保障多业务连续性
多业务复用意味着任一后端故障不能影响其他业务,需启用基础健康检测:
- 在 upstream 中配置失败重试机制:
server 192.168.1.10:8080 max_fails=2 fail_timeout=10s;
server 192.168.1.11:8080 max_fails=2 fail_timeout=10s;
keepalive 32;
}
- 搭配
proxy_next_upstream error timeout http_500 http_502,让 Nginx 自动尝试下一个节点; - 关键业务可加
backup节点兜底,或用ip_hash保证登录态一致性(如管理后台)。
配置完成后执行 nginx -t 校验语法,再 nginx -s reload 生效。所有转发都应保留原始客户端 IP(X-Real-IP)和协议信息(X-Forwarded-Proto),方便后端做风控与日志溯源。










