Hotlink et nginx

Nouveau WRInaute
Bonjour,

J'ai un serveur dédié avec nginx, mon problème j'arrive pas a bloquer les autres sites d'utiliser mes fichiers SWF sur leurs sites, cela me coute une énorme consommation de bande passante.


J'ai passé le nuit de hier a tester des codes que j'ai trouvé sur le net, et si ca marche cela bloque l'accès au fichier SWF depuis mon site aussi.

Code:
location ~* (\.swf|\.mp3)$ {
    valid_referers none blocked mydomain.com www.mydomain.com;
    if ($invalid_referer) {
        return 444;
    }
}


Avez vous une idée pour ce problème ?


Merci pour votre aide
 
WRInaute passionné
Tu dis "valid_referer" mais après tu dis "invalid_referer".
Je ne connais pas trop nginx mais ça devrait être :
Code:
valid_referers none blocked *.mydomain.com
if (!$valid_referers) {
return 403;
}

Attention aussi si tu te sers d'nginx en proxy car là ton referer sera localhost, il faudra donc jouer sur les requêtes HEAD du proxy
 
WRInaute passionné
J'ai peut-être dit des bétises je ne pensais pas que "valid_referer" était une option.

Par contre je trouve ton location un peu bizarre car bon, il permet de "hotlinker" les pages entière (et donc d'afficher le contenu en iframe je pense).
 
Nouveau WRInaute
voila pour hotlinké que les fichiers swf

Code:
location ~* (\.swf|\.SWF)$ {
    valid_referers none blocked mydomain.com www.mydomain.com;
    if ($invalid_referer) {
        return 444;
    }
}

Mais cela me bloque tous les sites, même le mien mydomain.com :? :? :?

NB : J'ai fais une erreur sur le code du 1ier poste.
 
WRInaute passionné
Je te dirais bien de mettre le "blocked" à la fin (ou pas du tout) je n'ai pas trop bien compris la doc sur ce point.
Par contre tu pourrais utiliser la "vraie" condition "referer" (je connais pas la syntaxe mais : if ($referer != tonsite) { return 403.

Pourquoi un code 444 en passant, 403 veut dire interdit, le 444 n'existe pas, mais sous nginx clos la connexion. C'est peut-être mieux mais ça ne respecte pas les RFC.
 
Discussions similaires
Haut