如果存在 cookie,Nginx 重定向
我看到了一些关于使用 Nginx 检查 cookie 的有限资源,但我真的找不到我想要的答案,希望你们中的一些 Nginx 高手可以帮助我.
I've seen some limited resources on checking for cookies with Nginx, but I couldn't really find the answer I was looking for, hopefully some of you Nginx masters can give me a hand.
基本上我有一个虚拟主机,我想重定向到不同的域,除非用户有 cookie,这是我创建的:
Essentially I have a vhost that I'd like to redirect to a different domain unless the user has a cookie, here is what I've created:
server {
listen 80;
server_name example.com;
if ($http_cookie ~* "dev_cookie" ) {
root /home/deploy/apps/example/current/public;
passenger_enabled on;
rack_env production;
break;
}
rewrite ^/(.*) http://beta.example.com/$1 permanent;
}
但它似乎不起作用,我收到错误消息:
But it doesn't seem to work, I get the error:
[emerg]: "root" directive is not allowed here in /opt/nginx/conf/nginx.conf:45
我不知道如何在这里进行,各位有什么想法吗?
I'm not sure how to proceed here, any ideas guys?
这是有道理的.我会用不同的根文件夹定义另一个虚拟主机(beta.example.com)并在遇到 cookie 时 - 重写
That makes sense. I would define another virtual host (beta.example.com) with that different root folder and upon encountering cookie - do a rewrite
你不能有条件地为一个域设置不同的根,但你可以有条件地重定向(重写)到另一个域
You can't set different roots for a domain conditionally, but you can redirect (rewrite) to another domain conditionally
这个人的例子不久前帮助了我http://nicknotfound.com/2009/01/12/iphone-带nginx的网站/
This guy's example helped me a bit ago http://nicknotfound.com/2009/01/12/iphone-website-with-nginx/