如何实现Nginx首次访问跳转?

Nginx

1 前言

一个问题,一篇文章,一出故事。
笔者在NextCloud生产环境中需要实现首次登录显示公告页,由于用户首次登录会默认进入“/index.php/apps/dashboard”页面面,因此笔者希望首次进入dashboard页面后自动跳转到公告页(“/index.php/apps/announcementcenter”),而后面再次进入保留在“dashboard”页面,因此整理此文。

2 最佳实践

2.1 增加配置

vim /etc/nginx/conf.d/nextcloud.cmdschool.org_443.conf

加入如下配置,

map $http_cookie $first_visit {
        default 0;
        "~*my_cookie=([^;]+)" $1;
}

server {
    #...
    add_header Set-Cookie "my_cookie=$first_visit; Path=/; HttpOnly";
    location /index.php/apps/dashboard {
        if ($first_visit = 0) {
            add_header Set-Cookie "my_cookie=1; Path=/; HttpOnly";
            return 302 /index.php/apps/announcementcenter/;
        }
        #...
    }
}

2.2 测试并重载使配置生效

nginx -t
systemctl reload nginx.serice
没有评论

发表回复

Nginx
如何设服务器名为Nginx虚拟机名称?

1 前言 一个问题,一篇文章,一出故事。 笔者今天需要Nginx的虚拟主机名称为服务器名称,即虚拟主 …

Nginx
如何Nginx拒绝非正常浏览器UA?

1 前言 一个问题,一篇文章,一出故事。 笔者昨天发现服务器被CC攻击导致宕机,然后笔者已经在Ngi …

Nginx
如何配置Nginx防止CC攻击?

1 前言 一个问题,一篇文章,一出故事。 笔者今天早上发现站点无法打开,经查Nginx有大量的如下日 …