verificar e ler cookies com nginx

1

Não consigo encontrar muito recursos sobre como gerenciar cookies com o nginx…

Eu vi que duas variáveis são parentes dos cookies, ou seja, $ http_cookies e $ cookie_COOKIENAME.

De qualquer forma, eu absolutamente não sei ler um cookie com o nginx.

Por exemplo, eu gostaria de retornar um 403 se um cookie com um valor especial existir, eu tentei isso, mas parece que não funciona:

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

também tentou com $ http_cookie

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

Eu realmente não entendo como o nginx lida com cookies ...

EDIT aqui está minha configuração completa do 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; }

}

}
    
por Buzut 27.12.2012 / 14:46

1 resposta

2

Por favor, esteja ciente de que usar if dentro de um location pode não funcionar como esperado, especialmente quando usado junto com try_files . Consulte: link

Por favor, tente isto:

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; }
    }

}
    
por 24.06.2015 / 13:45