如果 nginx 中没有设置 cookie

如果 nginx 中没有设置 cookie

我想限制对我们下载部分的访问。如果用户/机器人想要在未登录的情况下下载文件,他们将看到 403 错误。逻辑很棒,但结果却是非常丑陋的代码

location /downloads/ {
 set $banforcookienotset 1;
 if ($cookie_PHPSESSID) {
    set $banforcookienotset 0;
 }
 if ($banforcookienotset = 1){
    return   403;}
}

有一个更好的方法吗?

答案1

是的,但是在我的例子中你仍然需要 IF。

https://nginx.ru/en/docs/http/ngx_http_map_module.html

http {
    ...........
    map $cookie_PHPSESSID $ban {
    default '';
    ''  1;
    ...........
    }
    server {
    server_name example.com;
    if($ban) {return 403;}
        location / {
        ..........
        }
    .........
    }
}

相关内容