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

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

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

  1. map $COOKIE_abcdexpid $group {
  2. ~*1$ apache001;
  3. ~*2$ apache002;
  4. default root;
  5. }
  6.  
  7. upstream apache001 {
  8. server 192.168.1.1:8080 weight=1 max_fails=1 fail_timeout=30s;
  9. }
  10.  
  11. upstream apache002 {
  12. server 192.168.1.2:8080 weight=1 max_fails=1 fail_timeout=30s;
  13. }
  14.  
  15. upstream root {
  16. server 192.168.1.0:8080 weight=1 max_fails=1 fail_timeout=30s;
  17. }
  18.  
  19. server {
  20. listen 8080;
  21. server_name neoremind.net;
  22.  
  23. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  24. '$status $body_bytes_sent "$http_referer" "group=$group"'
  25. '"$http_user_agent" $gzip_ratio $request_time "$http_x_forwarded_for"';
  26.  
  27. access_log logs/access_log main;
  28. error_log logs/error_log;
  29.  
  30. location / {
  31. proxy_pass http://$group;
  32. proxy_set_header X-Forwarded-For $remote_addr;
  33. }
  34. }

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

  1. upstream apache001 {
  2. server 192.168.1.1:8080 weight=1 max_fails=1 fail_timeout=30s;
  3. }
  4.  
  5. upstream apache002 {
  6. server 192.168.1.2:8080 weight=1 max_fails=1 fail_timeout=30s;
  7. }
  8.  
  9. upstream root {
  10. server 192.168.1.0:8080 weight=1 max_fails=1 fail_timeout=30s;
  11. }
  12.  
  13. server {
  14. listen 8080;
  15. server_name beidoutest.baidu.com;
  16.  
  17. #match cookie
  18. set $group "root";
  19. if ($http_cookie ~* "abcdexpid=([^;]+)(1$)"){
  20. set $group apache001;
  21. }
  22. if ($http_cookie ~* "abcdexpid=([^;]+)(2$)"){
  23. set $group apache002;
  24. }
  25.  
  26. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  27. '$status $body_bytes_sent "$http_referer" "group=$group"'
  28. '"$http_user_agent" $gzip_ratio $request_time "$http_x_forwarded_for"';
  29.  
  30. access_log logs/access_log main;
  31. error_log logs/error_log;
  32.  
  33. location / {
  34. proxy_pass http://$group;
  35. proxy_set_header X-Forwarded-For $remote_addr;
  36. }
  37.  
  38. }

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

  1. # http context
  2. upstream backend_hosts {
  3. hash $cookie_jsessionid consistent;
  4. server host1.example.com;
  5. server host2.example.com;
  6. server host3.example.com;

}

Nginx负载均衡服务器实现会话粘贴的几种方式的更多相关文章

  1. Nginx(七):keepalived实现Nginx负载均衡服务器的双机高可用

    前言 之前咱们通过 Nginx(六):Nginx HTTP负载均衡和反向代理的配置与优化 和 Nginx+tomcat组合实现高并发场景的动静分离和负载均衡方案 这两篇文章了解了Nginx对高并发应用 ...

  2. LNMP 之 Nginx负载均衡服务器

    Nginx负载均衡服务器 参考教程:[千峰教育] 准备工作: 三台服务器,每台服务器都需要安装nginx. 1.关闭防火墙 service iptables stop2.关闭Selinux seten ...

  3. nginx 负载均衡服务器的双机搞可用

    摘自书籍:<实战Nginx取代Apache高性能Web服务器>一书 P94 两种方式实现 一种方式是公司里的一台web服务器作为主服务器,另一台服务器作为热备服务器 主服务器绑定一个虚拟I ...

  4. Nginx 负载均衡服务器的下载与安装 【window10】

    1.前言 Nginx是什么? 找了下资料,解释 : Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器, ...

  5. nginx作为负载均衡服务器——测试

    i. 需求 nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器. nginx负载均衡服务器:192.168.101.3 tomcat1服 ...

  6. Nginx+Keepalived主主负载均衡服务器

    Nginx+keepalived主主负载均衡服务器测试实验环境: 主Nginx之一:192.168.11.27主Nginx之二:192.168.11.28Web服务器一:192.168.11.37We ...

  7. 浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)

    1.概要 从用户在浏览器输入域名开始,到web页面加载完毕,这是一个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程称作网页加载过程.下面我将依靠自己的经验,总结一下整个过程.如有错漏,欢迎指正. ...

  8. 【转】浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)

    1.概要 从用户在浏览器输入域名开始,到web页面加载完毕,这是一个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程称作网页加载过程.下面我将依靠自己的经验,总结一下整个过程.如有错漏,欢迎指正. ...

  9. 012.Nginx负载均衡

    一 负载均衡概述 1.1 负载均衡介绍 负载均衡是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验.对于Web应用,通过负载均衡,可以将一台服务器的工作扩展到多台服务 ...

随机推荐

  1. glsl:error C1105: cannot call a non-function

    今天写的shader编译过程中报了这个错误,而且错误行数是0.原因怎么找也找不到.后来发现原来是normalize方法写成了了normal正好和函数的形参名字一样. 特地记录一下.

  2. jvm中的新生代Eden和survivor区

    1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  3. JS 深拷贝/合并

    var mix = function(r, s, ov) { if (!s || !r) return r; if (ov === undefined) ov = true; for (var p i ...

  4. 优秀.NET界面控件DevExpress v19.1.6全新来袭!新改进抢“鲜”看

    DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...

  5. beanFactory & FactoryBean区别

    FactoryBean Spring内部实现的一种规范& 开头作为beanName Spring中所有的容器都是FactoryBean 因为容器本身也由容器管理, root来创建 都是单列在I ...

  6. 01-01 Web应用

    一 Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览 ...

  7. Vue学习搭建(基础)

    空项目:https://github.com/ElementUI/element-starter.git 参考教程:https://blog.csdn.net/xuehu837769474/artic ...

  8. 修改 Linux 服务器时间

    1.当前时间 [app@127-0-0-1 shine]$ date Wed Oct 23 11:44:30 CST 2019 2.修改时间 [app@127-0-0-1 shine]$ date - ...

  9. 报错:没有与参数列表匹配的构造函数 "CFileDialog::CFileDialog" 实例

    如果是在解决方案管理器窗口内,右击你的项目“项目”,然后选“属性”(最后一项),再点“配置属性”,是个“+”号,把它展开,然后选“常规”选项卡,倒数第三项“字符集”,选择“使用多字节字符集”.再编译应 ...

  10. linux中的selinux到底是什么

    一文彻底明白linux中的selinux到底是什么 2018年06月29日 14:17:30 yanjun821126 阅读数 58877 标签: SElinux 更多 个人分类: Linux   一 ...