1、基础概览
Nginx支持多种负载均衡算法,你可以在配置文件中选择适合你需求的算法。下面是一些常见的负载均衡算法以及如何在Nginx中进行配置:
1、轮询(Round Robin):
- 这是默认的负载均衡算法,Nginx按照每个后端服务器的顺序逐个分配请求。
- 配置示例:
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
轮询实例
当访问该nginx代理的前端服务时,会轮询分配到 backend 中的后端服务
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 定义一个 upstream 块,用于负载均衡
upstream backend {
server localhost:8080; # 原有的服务器
server 10.11.80.33:8081; # 新增的服务器
}
server {
listen 9528;
server_name localhost;
location / {
root /home/web/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
error_page 405 =200 $request_uri;
}
location /prod/{
client_max_body_size 2G;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend/; # 使用负载均衡的 upstream
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2、IP哈希(IP Hash):
修改为其他均衡方法,只需要backend 里面增加说明即可
- 根据客户端的IP地址,将同一客户端的请求发送到同一台后端服务器。
- 配置示例:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
3、最小连接数(Least Connections):
- 将请求发送到当前连接数最少的后端服务器。
- 配置示例:
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
4、权重轮询(Weighted Round Robin):
- 分配权重给不同的后端服务器,根据权重比例分配请求。
- 配置示例:
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com weight=2;
server backend3.example.com weight=1;
}
server {
location / {
proxy_pass http://backend;
}
}
5、最快响应时间(Least Time):
- 将请求发送到具有最快响应时间的后端服务器。
- 配置示例:
upstream backend {
least_time header;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
修改完配置,记得重启
2、Nginx重启
Nginx停止
ps -ef|grep nginx
kill -quit XXXX
Nginx启动
nginx -c /etc/nginx/nginx.conf