1 votes

Si aucun cookie n'est défini dans nginx

J'ai voulu limiter l'accès à notre section de téléchargement. Si les utilisateurs/robots veulent télécharger un fichier sans se connecter, ils verront une erreur 403. La logique est merveilleuse mais le code s'est avéré très laid.

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

Y a-t-il une meilleure façon de faire cela?

1voto

Tobias Weibel Points 211

Oui, mais dans mon exemple, vous avez toujours besoin de IF.

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

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X