2011-05-03 1 views
3

Comment savoir si la variable nginx $ http_referer n'est pas définie ou vide?

Je reçois des demandes qui n'ont pas de référant http. Dans les journaux nginx $ http_referer apparaît comme ça: "-". Ce que j'essaye de faire est de "retourner 403"; si $ http_referer n'est pas défini ou vide comme dans ce cas.

Merci!

+0

J'ai essayé d'utiliser des expressions régulières, mais ne semble pas fonctionner - ou rejette tout ce avec 403. Je recherchais une méthode qui me dire si une variable nginx est définie ou non .... mais je ne le trouver encore. – Clawsy

+0

Que se passe-t-il si mon navigateur est configuré pour ne jamais envoyer d'en-têtes de referer pour un site? –

+0

Hmm ... ce dont j'ai vraiment besoin, c'est de refuser tout accès aux ressources des requêtes qui sont par exemple des GET simples et qui n'ont pas de '' personne '' les envoyant ... comme http_referer ... – Clawsy

Répondre

5

http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers

valid_referers server_names ~.; 
if ($invalid_referer) { 
    return 403; 
} 
+0

Merci .. J'ai eu une erreur: '[emerg]: les références "none" ou "blocked" sont spécifiées dans la directive "valid_referers" sans référent valide' – Clawsy

+1

Merci pour la réponse! – Clawsy

+0

@Clawsy La version Fixe bloque toutes les requêtes avec un referer vide. Tout référant non vide considéré comme correct. –

0

Comment cela?

if ($http_referer ~ /^$/) { 
    return 403; 
} 
Questions connexes