检查 cookie 是不是不包含指定的内容 NGINX

Posted

技术标签:

【中文标题】检查 cookie 是不是不包含指定的内容 NGINX【英文标题】:Check if cookie does NOT contain specified content NGINX检查 cookie 是否不包含指定的内容 NGINX 【发布时间】:2015-09-13 11:49:20 【问题描述】:

有无数关于检查 cookie 是否存在并包含我的内容的教程,在本例中为 foobar

假设 mycookie 是我想要设置的 cookie,我该如何执行以下操作。

if ($cookie_mycookie does not equal "foobar") 
  return 401;

我尝试了以下方法无济于事。

if (!$http_mycookie ~* "foorbar" ) 
  return 401;

谢谢!

【问题讨论】:

【参考方案1】:

nginx 中,每个 cookie 都在嵌入变量 $cookie_CookieName 中可用。如果你想检查名称为mycookie 的cookie,你可以使用这个配置sn-p:

if ($cookie_mycookie != "foobar") 
  return 401;

来自 nginx manual 的 if 命令:

一个条件可能(等等):

使用=!= 运算符比较变量与字符串;

使用~(用于区分大小写的匹配)和~*(用于不区分大小写的匹配)运算符将变量与正则表达式匹配。

正则表达式可以包含可供以后在 $1..$9 变量中重用的捕获。

也可以使用负运算符 !~!~*。如果正则表达式包含; 字符,则整个表达式应该用单引号或双引号括起来。

【讨论】:

以上是关于检查 cookie 是不是不包含指定的内容 NGINX的主要内容,如果未能解决你的问题,请参考以下文章