NGINX:检查Cookies是否不';不存在
如果使用NGINX的用户发出的请求中没有NGINX:检查Cookies是否不';不存在,nginx,Nginx,如果使用NGINX的用户发出的请求中没有authcookie,我会尝试将他们重定向到不同的虚拟主机。也就是说,当他们访问foo.com时,如果存在authcookie,那么他们应该看到foo.com;如果他们缺少authcookie,他们应该查看signup.foo.com 我已经通读了NGINX中的“If is Evil”,并且我能够成功地检查用户是否有cookie。我是这样做的: if ($cookie_auth) { redirect 301 https://signup.foo
auth
cookie,我会尝试将他们重定向到不同的虚拟主机。也就是说,当他们访问foo.com
时,如果存在auth
cookie,那么他们应该看到foo.com
;如果他们缺少auth
cookie,他们应该查看signup.foo.com
我已经通读了NGINX中的“If is Evil”,并且我能够成功地检查用户是否有cookie。我是这样做的:
if ($cookie_auth) {
redirect 301 https://signup.foo.com;
}
...
但是,当然,这与我想发生的恰恰相反。我还试着做了一张地图,如下所示:
map $cookie_auth $no_auth {
default 0;
'' 1;
}
server {
...
if ($no_auth) { return 301 https://signup.foo.com; }
...
}
但这似乎将一切都重定向到了signup.foo.com。我问题的实质是如何在NGINX中使用
NOT
操作符。类似于if(!$cookie\u auth)
,例如。您可以测试空字符串:
server {
server_name www.example.com;
if ($cookie_auth = "") {
return 200 "cookie_auth is not set
";
}
if ($cookie_auth) {
return 200 "cookie_auth is set =>$cookie_auth<=
";
}
return 200 "no match
";
}
服务器{
服务器名称www.example.com;
如果($cookie_auth=”“){
return 200“cookie\u未设置身份验证
";
}
如果($cookie\u auth){
return 200“cookie\u auth设置=>$cookie\u auth
curl --cookie auth=123 www.example.com
cookie_auth is set =>123<=
curl --cookie auth= www.example.com
cookie_auth is not set
curl www.example.com
cookie_auth is not set