Nginx upstream模块
83
ngx_http_upstream_module 默认编译进Nginx
Syntax: | upstream |
---|---|
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