在LNMP(Linux + Nginx + MySQL + PHP)环境中配置Nginx负载均衡,可以通过Nginx的upstream
模块实现。以下是详细配置步骤和说明:
在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;
}
}
}
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;
}
Nginx默认会检测后端服务器状态,自动跳过不可用节点。可手动配置超时和重试:
upstream backend {
server 192.168.1.101 max_fails=3 fail_timeout=30s; # 30秒内失败3次标记为不可用
server 192.168.1.102;
}
长连接优化:复用连接减少开销。
upstream backend {
keepalive 32; # 保持的连接数
server 192.168.1.101;
}
HTTPS负载均衡:后端服务器启用HTTPS时:
proxy_pass https://backend;
proxy_ssl_verify off; # 可选:跳过证书验证
bash
sudo nginx -t
bash
sudo systemctl reload nginx
查看负载均衡请求分发情况:
tail -f /var/log/nginx/access.log
weight
或改用least_conn
策略。ip_hash
或通过应用层(如Redis)共享Session。通过以上配置,Nginx可以实现高效的负载均衡,提升LNMP架构的可用性和性能。