Nginx upstream模块

Posted Jee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx upstream模块相关的知识,希望对你有一定的参考价值。

83

ngx_http_upstream_module 默认编译进nginx

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

 

 

 

 

 代码示列:

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算法实现负载均衡

 

 

 首先 我们来看下 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

以上是关于Nginx upstream模块的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]nginx upstream模块--负载均衡

nginx upstream 模块

nginx安装nginx_upstream_check_module模块

Nginx upstream模块

Nginx中upstream模块实现PHP服务器的负载均衡

Nginx Upstream模块