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

проверка и чтение куки с помощью nginx

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

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

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

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

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

также пробовал с $ http_cookie

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

Я действительно не понимаю, как nginx обрабатывает файлы cookie ...

ИЗМЕНИТЬ, вот моя полная конфигурация 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; }

}

}

Имейте в виду, что использование 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; }
    }

}