温馨提示×

linux nginx怎样配置负载

小樊
36
2026-10-10 20:55:36
栏目: 智能运维

在 Linux 上使用 Nginx 配置负载均衡(反向代理 + upstream) 是非常常见的做法。下面从基础到常用配置一步步说明。


一、基本架构说明

客户端 → Nginx(负载均衡) → 后端服务(多个)

例如:

  • Nginx:192.168.1.10
  • 后端服务:
    • 192.168.1.20:8080
    • 192.168.1.21:8080
    • 192.168.1.22:8080

二、安装 Nginx(如已安装可跳过)

# Ubuntu / Debian
apt update
apt install nginx -y

# CentOS / Rocky / Alma
yum install nginx -y
# 或
dnf install nginx -y

三、配置负载均衡(核心)

1️⃣ 编辑 Nginx 配置文件

推荐新建一个配置文件:

vim /etc/nginx/conf.d/load_balance.conf

2️⃣ 定义 upstream(后端服务器池)

upstream backend_server {
    server 192.168.1.20:8080;
    server 192.168.1.21:8080;
    server 192.168.1.22:8080;
}

✅ 默认是 轮询(round-robin)


3️⃣ 配置 server 反向代理

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;
    }
}

4️⃣ 检查并重载 Nginx

nginx -t
systemctl reload nginx

四、常用负载均衡策略

✅ 1. 轮询(默认)

upstream backend {
    server 192.168.1.20:8080;
    server 192.168.1.21:8080;
}

✅ 2. 加权轮询(性能不均时)

upstream backend {
    server 192.168.1.20:8080 weight=3;
    server 192.168.1.21:8080 weight=1;
}

✅ 3. IP Hash(同一 IP 固定后端,适合 session)

upstream backend {
    ip_hash;
    server 192.168.1.20:8080;
    server 192.168.1.21:8080;
}

✅ 4. 最少连接(推荐高并发)

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;

含义:

  • 30 秒内失败 3 次
  • 暂时剔除该节点 30 秒

六、HTTPS 负载均衡(示例)

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;
    }
}

如果你愿意,可以告诉我:

  • 后端是 Java / Node / Python / Docker?
  • 是否需要 HTTPS / WebSocket / 高可用?

我可以直接给你一份完全可用的配置。

0 踩