Назад | Перейти на главную страницу

если не установлен cookie в nginx

Я хотел ограничить доступ к нашему разделу загрузок. Если пользователи / боты хотят загрузить файл без входа в систему, они увидят ошибку 403. Логика замечательная, но код получился очень некрасивый

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

Есть лучший способ сделать это?

Да, но в моем примере вам все еще нужен 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 / {
        ..........
        }
    .........
    }
}