首页 > 系统相关 >nginx根据cookie分流

nginx根据cookie分流

时间:2022-12-28 16:55:14浏览次数:46  
标签:8080 log 分流 http server nginx cookie group

nginx根据cookie分流
众所周知,nginx可以根据url path进行分流,殊不知对于cookie分流也很强大,同时这也是我上篇提到的小流量实验的基础。

二话不说,先看需求,两台服务器分别定义为
apache001:192.168.1.1:8080
apache002:192.168.1.2:8080

默认服务器为:
default:192.168.1.0:8080

前端nginx服务器监听端口8080,需要根据cookie转发,查询的cookie的键(key)为abcdexpid,如果该cookie值(value)以1结尾则转发到apache001,以2结尾则转发到apache002。

方案1:
用map,nginx.conf配置如下:

复制代码
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;
} 
}
复制代码

 



方案2:
利用set和if…else… ,nginx.conf配置如下:

复制代码
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;
}

}

 

map $COOKIE_id $group { 
700003508 admin; 
~*3$ admin; 
default user; 
} 

upstream backend_user { 
server 10.3.24.11:8080; 
} 

upstream backend_admin { 
server 10.3.25.21:8081; 
} 

server { 
listen 80; 
server_name photo.domain.com; 

location / { 
proxy_pass http://backend_$group; 
} 
} 
复制代码

 


首先,是在nginx里面配置一个映射,$COOKIE_id可以解析出cookie里面的id字段,$group是一个变量,{}里面是映射规则,

这样,如果一个id为700003508的人来访问,$group就等于admin。

然后在server里面使用就会代理到http://backend_admin上

标签:8080,log,分流,http,server,nginx,cookie,group
From: https://www.cnblogs.com/gaoyanbing/p/17010501.html

相关文章

  • Nginx服务器搭建
    Nginx服务器搭建Linux操作:1、下载nginx如图:复制链接,然后在Linux下进行下载​ wgethttp://nginx.org/download/nginx-1.15.3.tar.gz解压​ tarxvfnginx-1.15.3.......
  • [nginx]防范空主机头
    空主机头防范主要是防止别人恶意将域名解析到服务器IP上。配置示例方式一,增加vhost#http的空主机头防范server{ listen80default; server_name_; return404;......
  • nginx利用ctx实现数据共享、修改上下文功能
    引用自: https://www.jb51.net/article/153990.htm 这篇文章主要给大家介绍了关于nginx利用ctx实现数据共享、修改上下文功能的相关资料,文中通过示例代码介绍的非常详细......
  • Cookie
    Cookie技术核心Cookie类:用于存储会话数据1)构造Cookie对象Cookie(java.lang.Stringname,java.lang.Stringvalue)2)设置cookievoidsetPath(java.lang.Strin......
  • 在 Linux 上微调 Nginx 获得最佳性能的 8 种方法
    转载来自:Linux迷链接:https://www.linuxmi.com/linux-nginx-performance.htmlNGINX是一种流行的、免费的开源Web服务器。默认的NGINX配置足以让Web服务器正常工作。......
  • Kong是一款基于OpenResty(Nginx + Lua模块)
    Kong是一款基于OpenResty(Nginx+Lua模块)微服务系列之网关(一)kong及管理界面konga的安装部署 1.网关概述微服务架构系统少则十几,多则成百上千个服务组成,除了......
  • 如何配置Kubernetes仪表板dashboard支持http方式并使用ingress-nginx代理访问实践
    公众号关注「WeiyiGeek」本章目录:配置Kubernetes-dashboard以支持http方式访问1.配置Kubernetes-dashboard以支持http方式访问描述:当前默认安装配置的Kubernetes......
  • Nginx实现websocket代理的方式
    一个简单的实现,后续再补充。其中80端口是提供正常web访问的端口,9000是提供socket服务的端口。实际部署时出于安全考虑,可以将代理端口与后端服务器提供的端口设置为不同的值......
  • Nginx使用总结解决:NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
     如何控制CDN文件在浏览器的缓存时间?腾讯云CDN默认支持 源站的Cache-Control设置 。目前暂不支持配置Cache-Control头部,因此无法在CDN节点上配置max-age,但CDN节点会......
  • 【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!逆......