温馨提示×

linux lnmp如何负载均衡

小樊
39
2026-09-24 23:58:39
栏目: 云计算

在 LNMP(Linux + Nginx + MySQL + PHP) 环境下做负载均衡,通常做法是 Nginx 作为反向代理 / 负载均衡器,后端部署多个 Nginx + PHP-FPM 应用节点。

下面从 架构 → 实现 → 常见方案 系统讲一下。


一、常见 LNMP 负载均衡架构

1️⃣ 基础架构(最常用)

            ┌────────────┐
            │  用户请求  │
            └─────┬──────┘
                  │
            ┌─────▼─────┐
            │  Nginx LB  │  (负载均衡)
            └─────┬─────┘
      ┌──────────┼──────────┐
      │          │          │
┌─────▼────┐ ┌───▼────┐ ┌───▼────┐
│LNMP Node1│ │Node2   │ │Node3   │
│Nginx+PHP │ │Nginx+PHP│ │Nginx+PHP│
└──────────┘ └────────┘ └────────┘
      共享 MySQL / Redis

二、Nginx 负载均衡配置(核心)

1️⃣ 在 LB 节点配置 upstream

http {
    upstream lnmp_backend {
        server 192.168.1.11:80 weight=1;
        server 192.168.1.12:80 weight=1;
        server 192.168.1.13:80 weight=2;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://lnmp_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;
        }
    }
}

✅ 支持:

  • 轮询(默认)
  • 加权轮询(weight)
  • IP Hash(会话保持)

2️⃣ 负载均衡策略

策略 说明
轮询 默认
weight 权重
ip_hash 同一 IP 固定后端
least_conn 最少连接
fair(第三方) 按响应时间

示例(ip_hash):

upstream lnmp_backend {
    ip_hash;
    server 192.168.1.11;
    server 192.168.1.12;
}

三、PHP 会话(Session)问题

负载均衡后,Session 不能存本地文件

✅ 推荐方案

  1. Redis 存 Session
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
  1. 或 ip_hash
  2. 或 JWT(无状态)

四、文件 / 图片一致性

多个 LNMP 节点时:

  • 代码:Git / Rsync / NFS
  • 上传文件:
    • NFS
    • 对象存储(OSS / S3)
    • 单独文件服务器

五、MySQL 负载(可选)

  • 主从复制(读从库)
  • ProxySQL / MyCat
  • 或直接使用云数据库

六、HTTPS 处理位置

✅ 推荐:LB 上做 HTTPS

listen 443 ssl;
ssl_certificate /path/cert.pem;
ssl_certificate_key /path/key.pem;

后端节点可用 HTTP(内网安全)


七、高可用(进阶)

防止 LB 单点:

  • Keepalived + VIP
  • HAProxy + Nginx
  • LVS + Nginx

八、简单总结

✅ LNMP 负载均衡核心

  • Nginx 做反向代理
  • 多台 LNMP 节点
  • Session / 文件 / 数据库共享
  • 可选 Keepalived 高可用

如果你愿意,我可以:

  • 给你一套 完整可复制的配置
  • 或按 单机 → 多机 → 高可用 一步步教你
  • 或针对 WordPress / Laravel / ThinkPHP 场景优化

你现在的环境是?

0 踩