Проверка и чтение файлов cookie с помощью nginx

Я не могу найти много ресурсов о том, как управлять файлами cookie с помощью nginx...

Я видел, что две переменные являются родственниками куки, то есть $http_cookies и $cookie_COOKIENAME.

Во всяком случае, я абсолютно не знаю, как читать куки с nginx.

Например, я хотел бы вернуть 403, если существует cookie со специальным значением, я пробовал это, но это не работает:

if ($cookie_mycookiename = "509fd1e420bba") { return 403; }

также пытался с $ http_cookie

if ($http_cookie = "509fd1e420bba") { return 403; }

Я действительно не понимаю, как nginx обращается с куки...

РЕДАКТИРОВАТЬ вот мой полный конфиг nginx

server {

listen 80;

root /home/minou/vids/;
index index.html index.htm;

#server_name localhost;


location / {

# First attempt to serve request as file, then
# as directory, then fall back to index.html

try_files $uri $uri/ /index.html;

if ($cookie_fileURI = "6509fd1e420bba") { return 403; }
}

# anti hotlinking
location ~* \.(jpg)$ {
valid_referers none blocked mywebsite.com www.mywebsite.com;
if ($invalid_referer) { return 403; }

}

}

2 ответа

Пожалуйста, помните, что используя if в пределах location может не работать должным образом, особенно при использовании вместе с try_files, См.: https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

Пожалуйста, попробуйте это:

server {

    listen 80;

    root /home/minou/vids/;
    index index.html index.htm;

    #server_name localhost;

    if ($cookie_fileURI = "6509fd1e420bba") { return 403; }

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to index.html

        try_files $uri $uri/ /index.html;
    }

    # anti hotlinking
    location ~* \.(jpg)$ {
        valid_referers none blocked mywebsite.com www.mywebsite.com;
        if ($invalid_referer) { return 403; }
    }

}

Используйте приведенный ниже код:

      if ($http_cookie ~* "cookiename=cookievalue") {return 403}
Другие вопросы по тегам