插件窝 干货文章 LNMP中Nginx如何负载均衡

LNMP中Nginx如何负载均衡

Nginx server 负载 611    来源:    2025-05-09

在LNMP(Linux + Nginx + MySQL + PHP)环境中配置Nginx负载均衡,可以通过Nginx的upstream模块实现。以下是详细配置步骤和说明:


1. 基础负载均衡配置

在Nginx配置文件中(通常位于/etc/nginx/nginx.conf/etc/nginx/conf.d/目录下),添加upstream块定义后端服务器组,然后在server块中引用。

http {
    upstream backend {
        # 定义后端服务器列表(默认轮询策略)
        server 192.168.1.101:80 weight=1;  # weight表示权重
        server 192.168.1.102:80 weight=2;  # 权重越高,分配请求越多
        server 192.168.1.103:80 backup;    # backup表示备用服务器
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;  # 将请求转发到upstream组
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

2. 负载均衡策略

Nginx支持多种负载均衡算法,根据需求选择:

  • 轮询(默认):请求按顺序分配到各服务器。

    upstream backend {
      server 192.168.1.101;
      server 192.168.1.102;
    }
    
  • 加权轮询:通过weight分配请求比例。

    upstream backend {
      server 192.168.1.101 weight=3;  # 3/4的请求
      server 192.168.1.102 weight=1;  # 1/4的请求
    }
    
  • IP哈希:同一客户端IP固定访问同一后端(适合会话保持)。

    upstream backend {
      ip_hash;
      server 192.168.1.101;
      server 192.168.1.102;
    }
    
  • 最少连接:优先分配给当前连接数最少的服务器。

    upstream backend {
      least_conn;
      server 192.168.1.101;
      server 192.168.1.102;
    }
    

3. 健康检查

Nginx默认会检测后端服务器状态,自动跳过不可用节点。可手动配置超时和重试:

upstream backend {
    server 192.168.1.101 max_fails=3 fail_timeout=30s;  # 30秒内失败3次标记为不可用
    server 192.168.1.102;
}

4. 高级配置

  • 长连接优化:复用连接减少开销。

    upstream backend {
      keepalive 32;  # 保持的连接数
      server 192.168.1.101;
    }
    
  • HTTPS负载均衡:后端服务器启用HTTPS时:

    proxy_pass https://backend;
    proxy_ssl_verify off;  # 可选:跳过证书验证
    

5. 测试与重载配置

  1. 检查配置语法: bash sudo nginx -t
  2. 重载Nginx生效: bash sudo systemctl reload nginx

6. 日志监控

查看负载均衡请求分发情况:

tail -f /var/log/nginx/access.log

常见问题解决

  • 502 Bad Gateway:检查后端服务是否运行,防火墙是否放行端口。
  • 负载不均:调整weight或改用least_conn策略。
  • 会话保持:使用ip_hash或通过应用层(如Redis)共享Session。

通过以上配置,Nginx可以实现高效的负载均衡,提升LNMP架构的可用性和性能。