---
title : Nginx : protection des hotlinks par rewrite - isla Studio
url : https://isla-stud.io/howtos-anleitungen/nginx-hotlink-schutz/
date : 2016-01-31
---

# Nginx : protection des hotlinks par rewrite

Il n'y a même pas de backlink vers son propre site web, à moins que le voleur de contenu n'ait simplement copié-collé le contenu complet du texte source dans son site web. Il peut alors arriver que l'on ait créé quelque part un lien vers une autre contribution personnelle avec l'URL complète. Et ce lien est alors encore contenu dans le texte. Mais d'abord, respirez et first things first :



Qu'est-ce qu'un hotlink ?



Un hotlink est par exemple l'intégration d'une image par un lien direct vers l'URL existante. Il n'est pas nécessaire de télécharger l'image au préalable, de la charger sur son propre espace web ou serveur et de la relier ensuite à partir de là.



Les hotlinks ne sont pas mauvais en général. Du moins pas si le hotlinking a été convenu ensemble ou si l'on est un service de téléchargement d'images, mais dans la plupart des cas, on n'est pas un service de téléchargement d'images, mais simplement quelqu'un qui paie sagement son hébergement web chaque mois et qui a une certaine limite de trafic. Et c'est là que nous entrons dans le vif du sujet : si quelqu'un d'autre affiche sur sa page d'accueil des fichiers multimédias qui se trouvent sur votre serveur web, votre serveur répond à chacune de ces requêtes étrangères, car c'est ce que font les serveurs. Ils servent.



Le voleur de contenu a maintenant une image gratuite sur son site web, pour laquelle aucun trafic n'est généré/facturé sur son propre serveur. Ce trafic (charge du serveur) est facturé à la personne volée, c'est-à-dire vous, et coûte des ressources de serveur : et ce à chaque fois qu'un visiteur surfe sur la page du voleur de contenu et que l'image s'affiche dans son navigateur Web. Dans certaines circonstances, cela peut entraîner un trafic tiers incroyable. Ce n'est vraiment pas drôle.



Je voudrais vous montrer aujourd'hui comment configurer votre propre serveur web NGINX de manière à ce qu'il ne traite pas ces demandes étrangères comme prévu, mais qu'il serve à la place une autre image aux visiteurs du site web du voleur de contenu.Vous pouvez ainsi inverser le dommage supposé et en tirer profit, et si vous êtes vraiment en colère, vous pouvez encore donner une bonne leçon au voleur : faites venir les visiteurs sur votre propre site web !



Comment faire de NGINX un adversaire final invincible pour les hotlinks !



Voici le plan :



 Nous voulons une solution globale qui fonctionne pour tous les domaines. De manière à ne pas devoir adapter chaque configuration vHost (sites-available). Le lien de demande doit être réécrit (rewrite) et une autre image doit être servie à la place sur le site du voleur. Cela doit fonctionner avec Google Recherche d'images et d'autres moteurs de recherche avec fonction de recherche d'images, au lieu d'interdire globalement le hotlinking. Sinon, la recherche d'images de Google n'affichera plus vos véritables images, mais uniquement l'image d'échange.



Solution au vol d'images



Ces quelques lignes de code sont en fin de compte la solution au problème du vol d'images. Vous apprendrez dans la section suivante comment et où placer le code.



location ~* \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|swf)$ {
  add_header "Access-Control-Allow-Origin" "*" ;
  access_log off ;
  log_not_found off ;
  expires max ;
  valid_referers none bloqué ~.google. ~.bing. ~.yahoo. ~.yandex. server_names ~($host) ;
    if ($invalid_referer) {
      rewrite (.*) /hotlink/achtung-inhalt-und-bilderklau.png redirect ;
      }
}
#hotlink terminer la boucle de redirection
location = /hotlink/achtung-inhalts-und-bilderklau.png { }



Que fait le code ?



~ est utilisé pour tenir compte des majuscules et des minuscules, tandis que ~* ignore les majuscules.



NGINX vérifie la règle de localisation dans l'ordre dans lequel les expressions régulières sont insérées. Cela signifie que les instructions de l'en-tête de mise en cache des fichiers multimédias et les instructions de notre protection des hotlinks doivent se trouver dans le même bloc !



location = /hotlink/achtung-inhalt-und-bilderklau.png { } est nécessaire pour éviter une boucle de transmission infinie lors de la nouvelle demande de l'image d'échange :
Le site de vol d'images envoie une demande pour l'imageA → notre NGINX redirige la demande vers l'image d'échange → Le site de vol d'images envoie une demande pour l'image d'échange → notre NGINX redirige la demande vers l'image d'échange, mais ne sert pas → et ainsi de suite...







$host est une variable qui rend cette instruction utilisable globalement et fonctionne sous tous les domaines vHost sur le serveur web. L'URL suivante est émise valablement pour chaque domaine : http://$host/hotlink/achtung-inhalts-und-bilderklau.png



Il suffit de créer le répertoire /hotlink sous chaque domaine et de placer dans ce répertoire un fichier image nommé : achtung-inhalt-und-bilderklau.png. Vous pouvez nommer le fichier et le répertoire différemment si vous le souhaitez. Il suffit d'adapter le code en conséquence.



Pour intégrer la règle de localisation





Voici comment procéder pour équiper votre serveur web NGINX de cette protection spéciale des hotlinks contre le vol d'images.


Temps total : 30 minutes


Faire les préparatifs nécessaires : Créer et télécharger un graphique d'échange
Créez d'abord un graphique que les visiteurs du site des voleurs doivent voir et téléchargez-le dans le répertoire souhaité sur votre serveur web. Notez l'URL du graphique.



Adapter la configuration de NGINX Webserser locations
Sur votre serveur, naviguez maintenant dans le répertoire /etc/nginx/common/ et trouvez la configuration locations intégrée dans le bloc serveur de votre vhost, dans laquelle des règles sont disponibles pour la location définie dans le code ci-dessus. En règle générale, il y aura déjà un bloc de règles existant pour la location mentionnée. Si ce n'est pas le cas, insérez simplement le code ci-dessus dans le bon fichier en tant que nouveau bloc de règles.



Enregistrer la configuration du serveur Web NGINX et la recharger
Ensuite, enregistrez le fichier de configuration avec le bloc locations étendu sur le serveur et testez d'abord la nouvelle configuration via le terminal SSH avec nginx -tSi le test s'est déroulé sans problème, redémarrez votre NGINX avec la commande service nginx restart.










Testez votre protection Hotlink !



J'ai écrit ici un outil qui vous permet de tester votre configuration de protection des hotlinks. Saisissez dans le champ de saisie l'URL directe d'une image sur votre serveur nginx. Dans le champ de sortie en dessous, votre image d'échange devrait alors s'afficher dans le meilleur des cas. Si l'image de l'URL saisie apparaît, vous devez contrôler à nouveau votre protection hotlink.



Si vous souhaitez effectuer le test plusieurs fois de suite pour la même URL d'image, vous devez effacer le cache de votre navigateur après chaque test et recharger cette page.



 Vérifier l'URL de l'image







Vous avez encore des questions ? Alors n'hésitez pas à utiliser la fonction de commentaire en dessous de cet article !



N'hésitez pas à partager cet article sur votre page Facebook, via Twitter, Google+ ou toute autre plateforme sociale de votre choix. Vous trouverez les boutons de partage plus bas. Le partage est simple et rapide et cela me ferait très plaisir.