events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#实现负载均衡
#1、Round Robin(轮询):默认的负载均衡策略,将请求按顺序分配给后端服务器。
upstream localserver {
server 192.168.1.18:7122 max_fails=2 fail_timeout=30s;
# max_fails=2表示在fail_timeout时间范围内,如果连续两次请求失败(HTTP状态码为500以上或者超
时),则认为这台服务器暂时不可用。
fail_timeout=30s表示当后端服务器被标记为失败后,在经过30秒
的时间后(fail_timeout指定的时间)才会重新允许向这台服务器发送请求。也就是说,在这30秒的时间
内,Nginx会将请求转发给其他可用的服务器,避免向不可用的服务器发送请求
这样的设置可以提高系统的稳定性和容错能力,当后端服务器出现故障或者负载过高时,Nginx能够及时发现并暂时屏蔽故障服务器,
保证服务的可用性。
server 192.168.1.115:7123 max_fails=2 fail_timeout=30s;
server 192.168.1.17:7124 max_fails=2 fail_timeout=30s;
}
#2、IP Hash(IP哈希):根据客户端IP地址进行哈希计算,将同一客户端的请求转发到同一台后端服务器
upstream localserver {
ip_hash;
server 192.168.1.18:7122;
server 192.168.1.115:7123;
server 192.168.1.17:7124;
}
#3、Weighted Round Robin(加权轮询):根据后端服务器的权重值分配请求,权重值越高的服务器获得更多的请求。
upstream localserver {
server 192.168.1.18:7122 weight=5;
server 192.168.1.115:7123 weight=3;
server 192.168.1.17:7124 weight=2;
}
server {
listen 8082;
server_name localhost;
location /ceshi {
root html;
index index.html index.htm;
#limit_req zone=one burst=30;
proxy_pass http://localserver; #使用proxy_pass指令将请求转发给upstream模块中定义的后端服务器组localserver
#proxy_cookie_path http://localserver /;
#proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:60090;
proxy_connect_timeout 10;#2000
proxy_send_timeout 200;
proxy_read_timeout 200;
client_max_body_size 100m;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
}
#映射前端代码
location / {
root D:/zsgj/dist;
index /index.html /index.htm;
try_files $uri $uri/ /index.html;
add_header X-Frame-Options "DENY";
add_header Content-Security-Policy "frame-ancestors 'self' or 'none'";
}
#下载文件
location /apk/{
alias D:/apkcopy/;
}
#代理后端接口
location /captcha-api/ {
access_log logs/app-services.log;
proxy_read_timeout 3600;
proxy_pass http://localhost:8080/captcha-api/;
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 443 ssl;
server_name hwyapp.weixin4bus.com; #域名
# 证书位置
ssl_certificate /usr/local/nginx/conf/ssl/9809274_hwyapp.weixin4bus.com.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl/9809274_hwyapp.weixin4bus.com.key;
ssl_session_timeout 5m;
#协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://121.37.176.142:8026;
}
location /tcps/ {
proxy_pass http://ic.tcps.com.cn:14280/;
}
}
}
注:负责均衡执行流程
在这个Nginx配置中,负载均衡是通过upstream模块实现的。upstream模块定义了一组后端服务器,并可以设置不同的负载均衡策略来实现请求转发。
具体的流程如下:
-
定义了一个upstream模块,名为localserver,其中包含了3个后端服务器,它们的IP地址和端口号分别为192.168.1.18:7122、192.168.1.115:7123和192.168.1.17:7124。
-
当客户端发送请求到Nginx服务器时,Nginx会根据请求的URL路径进行匹配,找到匹配的location模块。
-
在location模块中,使用proxy_pass指令将请求转发给upstream模块中定义的后端服务器组localserver。
-
在localserver组中,Nginx会按照预设的负载均衡策略(如轮询、加权轮询、IP哈希等)选取一台后端服务器,将请求转发给它。
-
后端服务器收到请求并处理完毕后,将响应返回给Nginx服务器。
-
Nginx服务器将响应返回给客户端,完成整个请求过程。
需要注意的是,在这个Nginx配置中,upstream模块定义了3台后端服务器,使用轮询策略进行负载均衡。这意味着每个请求都会依次被转发给这3台服务器中的一台,循环执行,实现负载均衡效果。同时,还可以使用其他的负载均衡策略,如加权轮询、IP哈希等,以适应不同的负载情况。