Nginx 负载均衡配置实战
在真实的企业级项目中,只部署一个后端服务几乎是不可接受的:
解决这些问题的核心技术之一,就是 负载均衡。
而在 Web 架构中,Nginx + 负载均衡 = 最经典、最稳定、最成熟的方案。
本文将从 原理、配置方式、调度策略、实战案例、生产注意事项 五个方面,完整讲清楚:
❝如何使用 Nginx 实现负载均衡,并真正用在企业项目中
一、什么是负载均衡
1. 负载均衡解决什么问题
负载均衡的本质是:
❝将大量请求,合理分发到多台后端服务器上处理
它主要解决四个核心问题:
2. 没有负载均衡的架构
问题非常明显:
3. 引入 Nginx 负载均衡后的架构
Nginx 成为统一入口:
二、Nginx 负载均衡的核心概念
1. upstream 模块
在 Nginx 中,负载均衡的核心是 upstream。
upstream backend_server {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
upstream 的作用是:
2. proxy_pass 与 upstream 的配合
location /api/ {
proxy_pass http://backend_server;
}
这里要注意:
proxy_pass 指向的是 upstream 名称- Nginx 会在 upstream 中选择一台服务器
三、最基础的负载均衡实战配置
1. 后端服务准备
假设你有三个后端服务:
2. 最简单的负载均衡配置
http {
upstream api_backend {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
server {
listen 80;
server_name localhost;
location /api/ {
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;
}
}
}
此时:
3. 默认负载均衡策略
如果你什么都不配置,Nginx 默认使用轮询(Round Robin):
请求 1 -> 8081
请求 2 -> 8082
请求 3 -> 8083
请求 4 -> 8081
这是最常见、最稳定的策略。
四、Nginx 常见负载均衡策略详解
1. 轮询(默认)
upstream api_backend {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
特点:
2. 权重(weight)
upstream api_backend {
server 127.0.0.1:8081 weight=3;
server 127.0.0.1:8082 weight=1;
}
分配规则:
4 次请求中:
3 次 -> 8081
1 次 -> 8082
适合场景:
3. IP 哈希(ip_hash)
upstream api_backend {
ip_hash;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
特点:
缺点:
4. 最少连接(least_conn)
upstream api_backend {
least_conn;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
特点:
五、负载均衡 + 前后端分离实战
1. 实际项目架构
flowchart LR
Browser[浏览器] --> Nginx[Nginx]
Nginx --> Frontend[前端静态资源]
Nginx --> API1[后端 API 1]
Nginx --> API2[后端 API 2]
2. 完整配置示例
http {
upstream api_backend {
least_conn;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
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;
}
}
}
前端代码中只需请求:
axios.get('/api/user/list')
六、后端宕机与健康检查
1. Nginx 的被动健康检查
upstream api_backend {
server 127.0.0.1:8081 max_fails=3 fail_timeout=30s;
server 127.0.0.1:8082 max_fails=3 fail_timeout=30s;
}
含义:
2. 生产环境建议
七、负载均衡常见问题
1. Session 丢失问题
原因:
解决方案:
2. 请求分配不均
排查方向:
八、企业级负载均衡实践建议
九、总结
负载均衡不是“高并发才需要”,而是:
❝任何一个认真做架构的项目,从一开始就应该考虑的问题
Nginx 负载均衡的优势在于:
只要你做的是 Web 项目,Nginx 负载均衡几乎是绕不开的一环。
该文章在 2026/2/13 18:20:55 编辑过