码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-01-19 12:21:11      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

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; 

}

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

标签:

原文地址:http://www.cnblogs.com/bokejiayuan/p/4233382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!