NGINX 中配置负载均衡器
Nginx 提供了多种负载均衡策略,如轮询(Round Robin)、最少连接数(Least Connections)、IP 哈希(IP Hash)等。这里以轮询策略为例进行配置。
1. 准备工作
假设你有以下几台 PHP 服务器:
192.168.1.101
(PHP Server 1)192.168.1.102
(PHP Server 2)192.168.1.103
(PHP Server 3)
NGINX 服务器会作为反向代理,负责将流量分发到这些 PHP 服务器上。
2. 配置 NGINX
-
编辑 NGINX 配置文件
打开 NGINX 配置文件进行编辑,通常是
/etc/nginx/nginx.conf
或者/etc/nginx/conf.d/default.conf
,也可能是其他配置文件。sudo nano /etc/nginx/nginx.conf
-
定义上游服务器
在配置文件中,使用
upstream
指令定义你的 PHP 服务器池。你可以在http
块中添加以下配置:http { upstream php_servers { server 192.168.1.101; server 192.168.1.102; server 192.168.1.103; } server { listen 80; server_name yourdomain.com; location / { proxy_pass http://php_servers; 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; } # 其他配置 } }
这里,
php_servers
是你定义的服务器组名称,proxy_pass
将请求转发到这个服务器组。Nginx 会默认使用轮询策略将请求分配到这些服务器上。 -
配置负载均衡策略(可选)
你可以根据需求选择不同的负载均衡策略:
-
轮询(默认):不需要额外配置,Nginx 会按顺序将请求分配到每个服务器。
-
最少连接数:将请求发送到当前连接数最少的服务器。
http { upstream php_servers { server 192.168.1.101; server 192.168.1.102; server 192.168.1.103; } server { listen 80; server_name yourdomain.com; location / { proxy_pass http://php_servers; 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; } # 其他配置 } }
-
IP 哈希:根据客户端 IP 分配请求,同一个 IP 的请求总是分配到同一台服务器。
upstream php_servers { ip_hash; server 192.168.1.101; server 192.168.1.102; server 192.168.1.103; }
-
-
配置健康检查(可选)
Nginx 还可以配置简单的健康检查,确保只向可用的服务器发送请求:
upstream php_servers { server 192.168.1.101; server 192.168.1.102; server 192.168.1.103; # 健康检查配置 check interval=5000 rise=2 fall=5 timeout=2000; }
上述配置定义了一个健康检查,每隔 5000 毫秒进行一次检查,如果服务器连续 2 次健康检查通过,则将其标记为可用;如果连续 5 次检查失败,则将其标记为不可用。
-
重新加载 NGINX 配置
保存配置文件后,重新加载 NGINX 使配置生效:
sudo nginx -t sudo systemctl reload nginx
3. 测试负载均衡
配置完成后,访问你的域名 http://yourdomain.com
,Nginx 会根据负载均衡策略将请求分发到后端的 PHP 服务器上。你可以通过不同的方式(如服务器日志、特定的响应内容等)来验证请求是否被均匀分配到各个服务器。