检查cookie是否包含指定内容NGINX

时间:2015-06-26 13:35:14

标签: nginx configuration config vhosts

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

如果假设mycookie是我想要设置的cookie,我该怎么做呢?

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

我尝试了以下内容无济于事。

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

谢谢!

1 个答案:

答案 0 :(得分:12)

在Nginx中,每个cookie都可以在嵌入变量$cookie_CookieName中使用。如果您想检查名为mycookie的Cookie,可以使用此配置代码段执行此操作:

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

if命令的nginx manual

  

条件可能(其中包括):

     
      
  • 使用=!=运算符将变量与字符串进行比较;

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

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

  •   
  • 还可以使用否定运算符!~!~*。如果正则表达式包含};个字符,则整个表达式应包含在单引号或双引号中。

  •