`

nginx根据cookie实现重定向式灰度(AB)发布需求

 
阅读更多

 大家知道,一般情况下,灰度(AB)发布需求设置nginx都只到/,但如果有

/xxx要重定向到/yyy/xxx呢,这种我们知道用 rewrite,但是注意rewrite后面一定要跟break,官方文档解释如下:

  • When the URI is changed inside a proxied location using the rewrite directive, and this same configuration will be used to process a request (break):
  • location /name/ {
        rewrite    /name/([^/]+) /users?name=$1 break;
        proxy_pass http://127.0.0.1;
    }

所以我们参考这个,给出了如下重定向式灰度(AB)发布需求的代码,仅供参考:

原理是:根据不同的cookie值跳转到不同组的机器,我们采用cookie关联upstream方式实现。其中upstream配置如下:

upstream  stg-hhplus-default-back-platform-web{

 server 192.168.1.1:8080;

}

upstream  stg-hhplus-test-back-platform-web{

 server 192.168.1.2:8080;

}

 

cookie abc=test时,将走灰度组,其他情况走default组。上面这段配置套路比较固定,如果你有发布系统,可以使用发布系统在发布灰度时生成。

(注:如果在测试时想在一进入主站即开启灰度,可以在发任意POOL时,将其他POOL也设置一个灰度UPSTREAM,不过内容和DEFAULT UPSTREAM一样,这样访问时非灰度项目访问的是DEFAULT机器,而灰度项目走灰度机器,方便测试。

如果遇多次发布灰度组,可能组名不同,那每次都生成一个新的灰度UPSTREAM就好了,或者已经存在的就覆盖内容,再三强调,内容和DEFAULT UPSTREAM一样。那么,久而久之,UPSTREAM是不是过多,再做一个清理的功能,让操作人员自行清理

历史UPSTREAM)

配置参考:

第一步,先在 server{

 ...

}

中增加如下配置,其中abc为你的cookie id

set $group $cookie_abc;
if ($group = ""){
	set $group "default";
}

 

 

第二步,在你要重写的location段中,如plugins段,按如下规则编写

location /plugins{
   #此处如果你还有变量需要增加,比如扩充$group,记得要在rewrite语句之前写,否则无效。如下所示
   set $last_cookie "stg-hhplus-$group-back-platform-web";
    rewrite /(.*) /back-platform-web/$1 break;
    proxy_pass http://$last_cookie;
    proxy_set_header Host $host:80;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For  $remote_addr;
    break;
}

 

 

分享到:
评论

相关推荐

    使用Nginx实现灰度发布1

    通过以上配置,Nginx可以根据用户携带的不同版本cookie值,将请求分别路由到不同的服务器组,从而实现灰度发布。这种部署方式使得开发者能够在不影响大部分用户的情况下,逐步推出新版本,降低了系统风险。

    nginx 伪静态 重定向

    ### Nginx 伪静态与重定向:深入解析与应用实例 #### 1. 引言 在现代网站开发与维护中,面对网页目录结构变动、网页重命名、扩展名改变或是网站域名变更等场景,如何高效处理这些变化,确保用户体验不受影响,同时...

    nginx+lua+redis通过匹配客户端ip进行灰度发布

    本文将讲述如何使用nginx、lua和redis来实现灰度发布,通过匹配客户端IP来实现灰度发布。灰度发布是一种常见的软件发布方式,它允许开发者在生产环境中发布新的版本,同时仍然保留旧版本,以便在出现问题时快速回退...

    Nginx配置实现统一重定向到404页面(免费下载)

    本文将详细讲解如何通过Nginx配置实现统一重定向到404页面,以提升用户体验并优化网站错误处理。 首先,我们要了解404错误的本质。404 Not Found是HTTP状态码之一,表示用户请求的资源无法被服务器找到。当用户访问...

    Nginx 实现灰度发布的三种方法总结

    以上三种方法都可以实现Nginx的灰度发布功能,具体选择哪种方法取决于项目需求、团队技术栈以及对精细控制程度的要求。通过灵活运用这些方法,可以有效地在生产环境中实施灰度发布策略,降低新版本上线的风险。

    Nginx下Frp强制重定向为https配置详解

    本文将详细介绍如何在Nginx下使用Frp进行强制重定向为https的配置。Frp(Fast Reverse Proxy)是一个高性能的内网穿透应用,常用于将内网服务通过NAT或防火墙映射到公网。而Nginx是一个高性能的HTTP和反向代理服务器...

    基于 Nginx 的 Java Web 项目灰度发布框架.zip

    7. **持续集成/持续部署(CI/CD)**:为了快速响应灰度发布的需求,通常会结合Jenkins、GitLab CI/CD等工具实现自动化构建和部署,使得新版本的发布和回滚更加高效。 综上所述,基于Nginx的Java Web项目灰度发布框架...

    Nginx与Lua灰度发布的实现

    Nginx与Lua结合进行灰度发布的实现是一种高级的服务器端技术,用于在不中断服务的情况下,对新功能或更新进行逐步推广。这种方式允许开发者针对特定用户群体进行测试,从而在更大范围内部署前确保系统的稳定性和性能...

    301重定向(nginx和Apache)

    通过以上示例可以看出,在Nginx和Apache两种不同的Web服务器环境下,都可以通过简单的配置实现301重定向功能。这些重定向规则不仅有助于提高用户体验,还可以帮助维护良好的网站结构和SEO效果。开发者可以根据自己...

    cpp-Nginx静态资源重定向模块

    总之,cpp-Nginx静态资源重定向模块是一个高效地管理和分发静态资源的工具,通过C++编程实现对Nginx功能的扩展。它可以帮助优化网站性能,提高可用性,减轻主服务器的负载,并可能结合CDN服务提供更快的全球访问速度...

    nginx反向代理、均衡负载、缓存静态资源、URL重定向、读写分离.zip

    nginx反向代理、负载均衡、缓存静态资源、URL重定向、读写分离.zip

    灰度发布技术实现报告模板

    根据业务需求,设计了多种灰度策略,如用户白名单、IP地址匹配和客户端版本判断等,以实现精准的灰度发布。 七、策略技术实现接口设计 1. 用户白名单灰度策略:通过lua脚本读取预定义的白名单列表,将请求路由到...

    nginx目录路径重定向的方法

    **Nginx目录路径重定向方法详解** 在网站部署中,有时我们需要将特定的URL路径重定向到服务器上的不同目录,以实现灵活的资源管理。Nginx作为高性能的HTTP和反向代理服务器,提供了多种方式进行目录路径的重定向。...

    nginx 301 302重定向跳转配置.docx

    本文档将详细介绍 Nginx 301 302 重定向跳转配置的实现方法。 一、Nginx 301 跳转设置 Nginx 301 跳转设置是永久性重定向,它将浏览器的 URL 地址永久地重定向到新的 URL 地址。例如: ``` server { listen 80; ...

    详解Nginx中的重定向功能

    例如,可以根据客户端类型、请求方法或特定参数进行条件重定向,也可以结合其他Nginx模块(如`proxy_pass`)实现反向代理和负载均衡。 总之,Nginx的重定向功能是其强大功能的一部分,通过合理配置可以有效地管理...

    利用nginx解决cookie跨域访问的方法

    其他系统可以共享这个cookie。但是新的四台服务器中并没有申请域名,只有四个ip: 192.168.0.1 单点登录服务器 192.168.0.2 192.168.0.3 192.168.0.4 因为每台服务器有两个项目,都用到单点登录,所以通过修改新的...

Global site tag (gtag.js) - Google Analytics