nginx反向代理与负载均衡配置需定义upstream集群(含weight、max_fails、backup)和server块,/api/v1/路径通过proxy_pass http://api_backend/末尾斜杠截断前缀,并启用proxy_next_upstream实现故障自动重试。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在5分钟内为新上线的Java微服务集群配置Nginx反向代理和负载均衡,既要让/api/v1/路径统一转发到后端集群,又要避免因单点故障导致整个接口不可用。
确认Nginx安装与配置文件位置
执行nginx -v验证已安装Nginx(要求≥1.16.0),版本过低不支持proxy_next_upstream关键指令。若未安装,请先通过包管理器或源码编译部署。
默认主配置文件路径为/usr/local/nginx/conf/nginx.conf;若使用Docker或系统包安装,常见路径还有/etc/nginx/nginx.conf或/opt/nginx/conf/nginx.conf。不确定时,运行nginx -t -c /path/to/nginx.conf可测试任意路径配置是否合法。
定义上游服务器组(upstream)
在http{}块内(位于events块之后、server块之前)添加如下配置:
upstream api_backend {
server 192.168.5.10:8080 weight=3 max_fails=3 fail_timeout=30s;
server 192.168.5.11:8080 weight=3 max_fails=3 fail_timeout=30s;
server 192.168.5.12:8080 backup;
}
【backup】标记的服务器仅在其他节点全部失效时启用,适合部署灾备实例。不要给backup节点设weight,否则权重逻辑会失效。
注意:ip_hash、least_conn等策略按需开启——若后端服务无状态且需严格轮询,保持默认即可;若需用户会话粘性,取消#ip_hash;前的注释。
配置反向代理server块
在同一个http{}块中,新增一个server{}块:
server {
listen 80;
server_name api.example.com;
location /api/v1/ {
proxy_pass http://api_backend/;
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_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 3s;
proxy_send_timeout 10s;
proxy_read_timeout 10s;
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
}
}
这里proxy_pass http://api_backend/末尾的斜杠至关重要:【必须带/】否则请求路径会重复拼接,例如访问/api/v1/users会被错误转发为http://api_backend/api/v1/users而非http://api_backend/users。
timeout值设为3–10秒是生产环境常见实践,太短易误判健康节点,太长则拖慢用户响应。其中proxy_next_upstream明确列出需触发重试的状态码,避免静默失败。
验证并热加载配置
第一步:执行nginx -t检查语法。若提示test is successful,说明配置无硬错误。
第二步:执行nginx -s reload热加载新配置。该操作不中断现有连接,毫秒级生效。
第三步:用curl验证连通性:curl -H "Host: api.example.com" http://127.0.0.1/api/v1/health。若返回后端服务的200响应,且多次执行时响应头中X-Upstream-Addr(如已配置)显示不同IP,则负载均衡已生效。











