83

ngx_http_upstream_module 默认编译进Nginx

Syntax: upstream name { ... } 这里定义一个名字 这个名字会由反向代理模块使用
Default:
Context: http

 

 

 

Nginx upstream模块

Nginx upstream模块

Nginx upstream模块

Nginx upstream模块

 Nginx upstream模块

Nginx upstream模块

 代码示列:

upstream test {
                server 116.196.123.9:8011 weight=2 max_conns=2 max_fails=2 fail_timeout=5; #权重配了2
                server 116.196.123.9:8012 weight=1; #权重配了1
                keepalive 32;
        }

 server {
        listen    80;
        server_name  shop.com.cn

        location /{
                proxy_pass http://test;
                proxy_http_version 1.1; #http 1.0不支持长链接 为了限制1.0请求 这里做了指定
                proxy_set_header Connection "";
        }    
}

上游服务器代码示列:

server {
                listen 8011;
                default_type text/plain;
                return 200 '8011 server respons\n';
        }
        server {
                listen 8012;
                default_type text/plain;
                return 200 '8012 server response\n';
        }

 然后在上游服务器上 启动转包看 下 >> tcpdump -vvv port 8011

 

二、用HASH算法实现负载均衡

Nginx upstream模块

 

 Nginx upstream模块

 首先 我们来看下 ip_hash指令 

        upstream test {
                ip_hash; #当这里添加了ip_hash  weight权重将失效
                
                server 192.168.0.49:8011 ;
                server 192.168.0.49:8012 ;
                keepalive 32;
        }

请求将根据用户的IP地址负载均衡

访问示列:curl -H 'X-Forwarded-For:116.196.123.9' http://116.196.115.53 

hash指令 (hash指令不能和ip_hash指令同时使用)

upstream test {
          
                hash user_$arg_username;#自定义参数用 
                server 192.168.0.49:8011 ;
                server 192.168.0.49:8012 ;
                keepalive 32;
        }

请求将根据用户的自定义username参数负载均衡

访问示列: curl http://116.196.115.53?username=e12312