zoukankan      html  css  js  c++  java
  • 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; 

    }

  • 相关阅读:
    git 远程仓库 and 分支管理
    oracle 导入导出dmp
    sql if else 用法
    设置session超时的三种方式
    eclipse定制工具栏,修改工具栏
    cxf实例异常
    js 表格插入指定行
    iframe 调用父页面元素
    iframe页面刷新
    frame 和 iframe
  • 原文地址:https://www.cnblogs.com/bokejiayuan/p/4233382.html
Copyright © 2011-2022 走看看