在 Linux 上使用 Nginx 配置负载均衡(反向代理 + upstream) 是非常常见的做法。下面从基础到常用配置一步步说明。
客户端 → Nginx(负载均衡) → 后端服务(多个)
例如:
# Ubuntu / Debian
apt update
apt install nginx -y
# CentOS / Rocky / Alma
yum install nginx -y
# 或
dnf install nginx -y
推荐新建一个配置文件:
vim /etc/nginx/conf.d/load_balance.conf
upstream backend_server {
server 192.168.1.20:8080;
server 192.168.1.21:8080;
server 192.168.1.22:8080;
}
✅ 默认是 轮询(round-robin)
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
# 常用代理头
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;
}
}
nginx -t
systemctl reload nginx
upstream backend {
server 192.168.1.20:8080;
server 192.168.1.21:8080;
}
upstream backend {
server 192.168.1.20:8080 weight=3;
server 192.168.1.21:8080 weight=1;
}
upstream backend {
ip_hash;
server 192.168.1.20:8080;
server 192.168.1.21:8080;
}
upstream backend {
least_conn;
server 192.168.1.20:8080;
server 192.168.1.21:8080;
}
server 192.168.1.20:8080 max_fails=3 fail_timeout=30s;
含义:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
location / {
proxy_pass http://backend_server;
}
}
✅ 后端服务要能直接访问
✅ 防火墙放行端口(80 / 443 / 后端端口)
✅ session 问题用 ip_hash 或 Redis 解决
✅ Nginx 本身也要做高可用(keepalived)
upstream backend {
least_conn;
server 192.168.1.20:8080;
server 192.168.1.21:8080;
server 192.168.1.22:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
如果你愿意,可以告诉我:
我可以直接给你一份完全可用的配置。