在 LNMP(Linux + Nginx + MySQL + PHP) 环境下做负载均衡,通常做法是 Nginx 作为反向代理 / 负载均衡器,后端部署多个 Nginx + PHP-FPM 应用节点。
下面从 架构 → 实现 → 常见方案 系统讲一下。
┌────────────┐
│ 用户请求 │
└─────┬──────┘
│
┌─────▼─────┐
│ Nginx LB │ (负载均衡)
└─────┬─────┘
┌──────────┼──────────┐
│ │ │
┌─────▼────┐ ┌───▼────┐ ┌───▼────┐
│LNMP Node1│ │Node2 │ │Node3 │
│Nginx+PHP │ │Nginx+PHP│ │Nginx+PHP│
└──────────┘ └────────┘ └────────┘
共享 MySQL / Redis
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 | 同一 IP 固定后端 |
| least_conn | 最少连接 |
| fair(第三方) | 按响应时间 |
示例(ip_hash):
upstream lnmp_backend {
ip_hash;
server 192.168.1.11;
server 192.168.1.12;
}
负载均衡后,Session 不能存本地文件
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
多个 LNMP 节点时:
listen 443 ssl;
ssl_certificate /path/cert.pem;
ssl_certificate_key /path/key.pem;
后端节点可用 HTTP(内网安全)
防止 LB 单点:
✅ LNMP 负载均衡核心
如果你愿意,我可以:
你现在的环境是?