NGINX:仅根据特定 URL 的 cookie 重定向用户

NGINX: Redirect a user based on cookie for a specific URL only

我正在构建一个封闭的社交网络,目前当用户未登录时,他们将始终被重定向到我域的主页。

我想做的是执行以下操作:

  1. 使用 NGINX 检查用户是否登录(通过检查 cookie),然后当他们访问主页时 (mydomain.com) 重定向到 mydomain。com/newsfeed.

  2. 此检查仅应在用户浏览主页时应用,不应在任何其他 url 上工作(否则他们将始终被重定向)。

我是 NGINX 的新手,查看了各种使用 cookie 进行重定向的教程,但没有得到答案(最值得注意的是将重定向限制为仅主页)。

提前致谢!

让我们假设我有一个像这样的 cookie:name=value

server {
    listen 80;
    server_name mydomain.com;

    location ~* ^/$ {
        if ($cookie_name = "value") {
            return 301 http://example.com/newsfeed/;
        }
    }
}

location 块将只匹配主页,检查 cookie 是否存在(您也可以只使用 if ($cookie_name)),如果存在,将用户重定向到 http://example.com/newsfeed/

最终正确解法:

location ~* ^/$ {
 if ($http_cookie ~* "wordpress_logged_in") {
    return 301 http://example.com/newsfeed/;
 }
}