Я не могу найти много ресурсов о том, как управлять файлами 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; }
}
}