首页 > 代码库 > Nginx负载均衡服务器实现会话粘贴的几种方式

Nginx负载均衡服务器实现会话粘贴的几种方式

1、 使用Nginx 的ip_hash作为负载均衡服务并支持Session sticky  

2、 使用nginx sticky第三方模块实现基于cookie的负载均衡

3、使用nginx的map指令根据cookie分流:

map $COOKIE_abcdexpid $group {  ~*1$	apache001;  ~*2$	apache002;  default	root;} upstream apache001 {  server 192.168.1.1:8080 weight=1 max_fails=1 fail_timeout=30s;} upstream apache002 {  server 192.168.1.2:8080 weight=1 max_fails=1 fail_timeout=30s;} upstream root {  server 192.168.1.0:8080 weight=1 max_fails=1 fail_timeout=30s;} server {  listen       8080;  server_name  neoremind.net;   log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘            ‘$status $body_bytes_sent "$http_referer" "group=$group"‘            ‘"$http_user_agent" $gzip_ratio $request_time "$http_x_forwarded_for"‘;   access_log  logs/access_log main;  error_log   logs/error_log;   location / {        proxy_pass http://$group;    proxy_set_header X-Forwarded-For $remote_addr;    }	}

4、 利用set和if…else…   根据cookie分流

upstream apache001 {  server 192.168.1.1:8080 weight=1 max_fails=1 fail_timeout=30s;} upstream apache002 {  server 192.168.1.2:8080 weight=1 max_fails=1 fail_timeout=30s;} upstream root {  server 192.168.1.0:8080 weight=1 max_fails=1 fail_timeout=30s;} server {  listen       8080;  server_name  beidoutest.baidu.com;   #match cookie  set $group "root";  if ($http_cookie ~* "abcdexpid=([^;]+)(1$)"){    set $group apache001;  }  if ($http_cookie ~* "abcdexpid=([^;]+)(2$)"){    set $group apache002;  }   log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘            ‘$status $body_bytes_sent "$http_referer" "group=$group"‘            ‘"$http_user_agent" $gzip_ratio $request_time "$http_x_forwarded_for"‘;   access_log  logs/access_log main;  error_log   logs/error_log;   location / {    proxy_pass http://$group;    proxy_set_header X-Forwarded-For $remote_addr;  } }

5、nginx1.7.2版本后提供的hash方法:

# http context  upstream backend_hosts {      hash $cookie_jsessionid consistent;      server host1.example.com;     server host2.example.com;     server host3.example.com; 

}

  • 本文来自:Linux学习网

Nginx负载均衡服务器实现会话粘贴的几种方式