nginx中处理cookie
2019-06-03 本文已影响3人
山东大葱哥
背景
项目中根据人群做了不同的个性化版面(老年版、正常版),为减少代码侵入性,新的版面采用新建文件的形式进行开发部署,经过山东大葱哥思考决定采用cookie+nginx的方式进行个性化重定向。
实现思路一
笨方法,变相if嵌套
set $isOld "false";
set $isOldRewrite "0";
if ( $http_cookie ~* "isOld=(.+)(?:;|$)" ) {
$isOld $1; #获取cookie的值并赋给变量,前提该cookie存在
}
if ( $isOld = "true" ){
set $isOldRewrite "1";
}
if ( $request_uri ~ ^/index.html) {
set $isOldRewrite "${isOldRewrite}1";
//根据页面url给 变量赋予不同的值,形如 11 12 13 01等等,以0开头的不进行重写
}
if ( $isOldRewrite = "11"){
rewrite ^\/index.html /oldIndex.html;
}
实现思路二
优雅解决方案,使用正则表达式判断
if ( $http_cookie ~* "isOld=true(?:;|$)" ) {
rewrite ^\/index\.html /oldIndex.html last;
}