• 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; 

    }

  • 相关阅读:
    iOS之在AppDelegate中push到指定页面
    iOS之iOS中的(null)、<null>、 nil 的问题
    HTML表格属性及简单实例
    iOS多语言设置
    HTML简单介绍
    iOS-WebView(WKWebView)进度条
    OC 中property的使用
    Memory map of an object array
    2018-10-15 21:07:38 c language
    2018-10-15 00:41:45 c language
  • 原文地址:https://www.cnblogs.com/bokejiayuan/p/4233382.html
Copyright © 2020-2023  润新知