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变量命名规范,推荐使用方法一,简单效率高。