发布于 2年前

Nginx获取cookie值的两种方法

有以下两种方法可以在Nginx中获取cookie某个key的值。

方法一:直接使用前缀$cookie_变量

获取值的变量格式:

$cookie_{keyname}

其中{keyname}表示cookie要获取值的键。如cookie中的key是uid,在Nginx里对应cookie里的变量是$cookie_uid。

使用前缀$cookie_获取值的限制

需要说明的是要通过$cookie_{keyname}的方式获取,keyname需要满足nginx对变量的规范。如点号“.”user.name是不能用于nginx的变量。

方法二:使用正则表达式匹配$http_cookie

如果key的命名不符合nginx定义变量的规范,那么就不能使用$cookie_{keyname}变量的方式获取cookie的值。所以就有了使用正则表达式匹配的方式。

示例:

set $username "";
if ( $http_cookie ~* "user.name=(.+?)(?=;|$)" ) {
  set $username $1;
}

$username变量就获取到了cookie里key为“user.name”的值。

缺点:效率性能要比$cookie_{keyname}变量差。

总结

如果keyname命名符合Nginx变量命名规范,推荐使用方法一,简单效率高。

©2020 edoou.com   京ICP备16001874号-3