Проверка и чтение файлов 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}