设为首页 收藏本站
查看: 576|回复: 0

[经验分享] Nginx高效分发之cookie篇

[复制链接]

尚未签到

发表于 2018-11-14 11:43:06 | 显示全部楼层 |阅读模式
  Nginx在做http代理转发的角色时,我们可能有需要针对不同用户请求的header,分布到不同的上游upstream服务器组。这里使用Cookie对用户进行分类,然后配置Nginx实现上游服务器的分发。
  业务场景:
  一、 根据用户所在城市分发,这里使用了map模块对匹配内容进行分发
  1. upstream模块配置:
  upstream sh {
  server sh.domain.com;
  }
  upstream nj {
  server nj.domain.com;
  }
  upstream web {
  server web.domain.com;
  }
  2. map模块配置:
  map $cookie_user_city $upst {
  default web;
  ~shsh;
  ~njnj;
  }
  3. server模块配置:
  server {
  listen 80;
  server_name www.domain.com;
  location / {
  proxy_pass http://$upst;
  }
  }
  4. 访问测试:
  curl -i -b 'user_city=sh' http://www.domain.com
  二、根据用户请求ip进行分发,这里使用了geo模块对匹配内容进行分发
  1. upstream模块配置:
  upstream test {
  server test.domain.com;
  }
  upstream nj_test {
  server nj.test.domain.com;
  }
  upstream sh_pro {
  server sh.domain.com;
  }
  2. geo模块配置
  geo $remote_addr $ip_list {
  192.168.0.0/24test;
  10.0.0.0/8test;
  172.16.0.0/16test;
  211.156.181.25nj_test;
  }
  3. server模块配置:
  server {
  listen 80;
  server_name www.domain.com;
  location / {
  if ($ip_list = 'test'){
  proxy_pass http://test;
  }
  if ($ip_list = 'nj_test'){
  proxy_pass http://nj_test;
  }
  proxy_pass http://sh_pro;
  }
  }
  这里来简单介绍一下map模块和geo模块。
  map模块是由ngx_http_map_module提供的,默认安装,除非使用--without-http_map_module指令。map模块可以创建变量进行关联,可以整合多个不同的值到map模块是由ngx_http_map_module提供的,默认安装,除非使用--without-http_map_module指令。map模块可以创建变量进行关联,可以整合多个不同的值到一个或多个相同的值并存储到变量当中,它维护的是一个映射关系。
  geo模块是由ngx_http_geo_module提供的,默认安装,除非使用--without-http_geo_module。它是专门用来对IP进行分类的,可以将多个来源IP进行分组,用以实现让不同来源的IP访问不同的上游服务器。注意,geo模块非geoip模块。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-634963-1-1.html 上篇帖子: linux下怎么安装nginx 下篇帖子: nginx的upstream模块安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表