Nginx反向代理、域名映射、负载均衡

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模块定义了一组后端服务器,并可以设置不同的负载均衡策略来实现请求转发。

具体的流程如下:

  1. 定义了一个upstream模块,名为localserver,其中包含了3个后端服务器,它们的IP地址和端口号分别为192.168.1.18:7122、192.168.1.115:7123和192.168.1.17:7124。

  2. 当客户端发送请求到Nginx服务器时,Nginx会根据请求的URL路径进行匹配,找到匹配的location模块。

  3. 在location模块中,使用proxy_pass指令将请求转发给upstream模块中定义的后端服务器组localserver。

  4. 在localserver组中,Nginx会按照预设的负载均衡策略(如轮询、加权轮询、IP哈希等)选取一台后端服务器,将请求转发给它。

  5. 后端服务器收到请求并处理完毕后,将响应返回给Nginx服务器。

  6. Nginx服务器将响应返回给客户端,完成整个请求过程。

需要注意的是,在这个Nginx配置中,upstream模块定义了3台后端服务器,使用轮询策略进行负载均衡。这意味着每个请求都会依次被转发给这3台服务器中的一台,循环执行,实现负载均衡效果。同时,还可以使用其他的负载均衡策略,如加权轮询、IP哈希等,以适应不同的负载情况。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值