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

blu*_*ice 7 configuration config nginx vhosts

在这种情况下,有无数的教程可以检查cookie是否存在并包含我的内容foobar.

我如何做以下假设mycookie是我想要设置的cookie.

if ($cookie_mycookie does not equal "foobar") {
  return 401;
}
Run Code Online (Sandbox Code Playgroud)

我试过以下无济于事.

if (!$http_mycookie ~* "foorbar" ) {
  return 401;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Mar*_*555 14

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

if ($cookie_mycookie != "foobar") {
  return 401;
}
Run Code Online (Sandbox Code Playgroud)

从nginx 手册中获取if命令:

条件可能(其中包括):

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

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

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

  • 负运营商!~!~*也可提供.如果正则表达式包含}或者;字符,则整个表达式应该用单引号或双引号括起来.