ngnginx二进制包下载地址 :nginx: download
nginx功能模块帮助文档 :nginx documentation
nginx yum源配置地址: nginx: Linux packages

在功能方面,Nginx具有 :
ngx_http_upstream_module:用于定义负载均衡策略和后端服务器组的模块。upstream指令用于定义后端服务器组,这些服务器组会被Nginx用来进行负载均衡。
ngx_http_proxy_module:负责将客户端的请求转发到upstream模块定义的后端服务器组。通过proxy_pass指令,Nginx可以将请求发送到指定的服务器组,从而实现负载均衡。
第一台机器:负载均衡
# upstream 配置与http块下,和server块同级。
http {
upstream test {
server 192.168.137.30;
server 192.168.137.40;
}
server {
listen 80;
server_name 192.168.137.10;
location / {
proxy_pass http://test;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
其他两台机器:后台真实服务器
server{
listen 80;
server_name localhost;
location / {
root /test;
index t1.txt;
}
}
#
nginx -t
systemctl reload nginx
访问代理服务器
默认的负载均衡策略。在这种策略下,每个请求会按时间顺序逐一分配到不同的后端服务器节点,确保每个节点平均处理请求。
优点:
缺点:
upstream test {
server 192.168.137.21:80;
server 192.168.137.22:80;
}
负载均衡状态配置参数:
down; 表示不在将用户的请求转发到此主机中:即下线虚拟机
backup; 预留的备份机器。当其他所有的非backup机器出现故障时,才会请求backup机器,因此这台机器的压力最轻。
max_fails:表示允许的最大失败次数。当一个后端服务器在 fail_timeout 时间内连续失败这么多次后,Nginx 会将该服务器标记为不可用,不再向其转发请求。默认值为 1。
fail_timeout:表示失败检查的时间间隔。在这个时间段内,如果一个后端服务器的失败次数达到了 max_fails,那么 Nginx 会将其标记为不可用。默认值为 10s。
# down
http {
upstream test {
server 192.168.174.21 down;
server 192.168.174.22;
}
}
# backup;
http {
upstream test {
server 192.168.174.21 backup;
server 192.168.174.22;
}
}
# max_fails fail_timeout
http {
upstream test {
server 192.168.174.21 max_fails=3 fail_timeout=30s;
server 192.168.174.22 max_fails=3 fail_timeout=30s;
}
}
根据服务器的性能为其分配权重,性能更好的服务器可以处理更多的请求。
优点:
缺点:
# weight:设置权重
http {
upstream test {
server 192.168.174.21 weight=2;
server 192.168.174.22 weight=1;
}
}
Nginx会将新请求分配给当前连接数最少的服务器,这样可以保证服务器间的负载更加均衡。
优点:
缺点:
http {
upstream test{
least_conn;
server 192.168.137.21;
server 192.168.137.22;
}
}
根据客户端IP地址的哈希值来选择服务器,这样可以确保同一用户的请求总是被发送到同一台服务器,有助于实现会话保持。
优点:
缺点:
# ip_hash; 声明IP Hash
http {
upstream test {
ip_hash;
server 192.168.174.21;
server 192.168.174.22;
}
}
优点:
缺点:
# hash $request_uri; 声明URL Hash
http {
upstream test {
hash $request_uri;
server 192.168.174.21;
server 192.168.174.22;
}
}
根据后端服务器的响应时间进行动态分配请求,实现更合理的负载均衡。nginx本身不支持fair,需要独立安装upstream_fair模块
优点:
缺点:
# fair; 声明fair
http {
upstream test {
fair;
server 192.168.174.21;
server 192.168.174.21;
}
}
参考链接:GitHub - gnosek/nginx-upstream-fair: The fair load balancer module for nginx

