Préparation
Dans le segment de préparation, les instructions générales pour les deux méthodes dites ultérieures sont prises en note. Évidemment, il est important d'avoir une console pour accéder au serveur via SSH, et un éditeur de texte approprié comme nano pour ouvrir le fichier de configuration Nginx. Une fois les deux acquis, utilisez les commandes suivantes pour ouvrir, enregistrer et appliquer les modifications. Les étapes suivantes supposent que l'utilisateur a déjà accédé au serveur via SSH.
- Tapez la commande suivante pour ouvrir le fichier de configuration par défaut de Nginx. Si chaque domaine a un fichier de configuration distinct, utilisez son nom au lieu de celui par défaut.
- Dans le fichier par défaut ou dans le fichier de configuration, tapez les codes indiqués dans l'une des méthodes suivantes. Assurez-vous d'utiliser un seul d'entre eux.
- Utilisez la commande suivante pour tester le fichier de configuration avant de le pousser en mode direct.
- Si tout est dans le bon ordre, allez-y et tapez la commande suivante pour appliquer les modifications afin qu'elles prennent effet.
Méthode 1 : Méthode générale
La méthode générale est très facile à mettre en œuvre et à comprendre car elle ne contient qu'un bloc de localisation. De plus, il bloque les requêtes vers certains formats de fichiers uniquement au lieu de bloquer toutes les requêtes des référents non valides vers le serveur.
- Copiez l'extrait de code suivant.
- Ouvrez le fichier par défaut de nginx comme vu dans la phase "Préparation".
- Collez l'extrait de code copié sous le premier bloc d'emplacement trouvé dans le fichier par défaut. Dans nginx, l'expression régulière insensible à la casse (~*) est toujours prioritaire avant la barre oblique (/), et donc l'extrait de code suivant est exécuté avant le bloc d'emplacement de la barre oblique.
- Enregistrez et fermez le fichier par défaut, puis suivez les étapes 3, 4 de la phase « Préparation » pour que les modifications prennent effet.
Dans l'exemple suivant, il bloque les demandes de fichiers css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf et eot. Il y a 10 instructions conditionnelles sous le bloc d'emplacement. La première instruction conditionnelle permet de visualiser directement les ressources via le navigateur Web, 2sd et 3rd les blocs permettent de visualiser les ressources via le site d'origine (à la fois nu et les sous-domaines www), le reste des blocs à l'exception de la recherche?q et le dernier bloc permettent aux robots des moteurs de recherche d'accéder et d'indexer les ressources, ce qui est très important pour indexer les images dans les images google et les images bing. La recherche?q permet au service de cache google d'accéder et d'économiser les ressources avec la page, et ainsi la page est accessible directement via les résultats de recherche google lorsque le site est hors ligne.
emplacement ~* \.(css|gif|ico|jpeg|jpg|js|png|woff|woff2|ttf|ttc|otf|eot)$si ($http_referer !~ "^$")
définir $rule_0 1$rule_0;
si ($http_referer !~ "^ http://nucuta.com/.*$")
définir $rule_0 2$rule_0;
si ($http_referer !~ "^ http://nucuta.com$")
définir $rule_0 3$rule_0;
si ($http_referer !~* "google.")
définir $rule_0 4$rule_0;
si ($http_referer !~* "recherche?q=cache")
définir $rule_0 5$rule_0;
si ($http_referer !~* "msn.")
définir $rule_0 6$rule_0;
si ($http_referer !~* "yahoo.")
définir $rule_0 7$rule_0;
si ($http_user_agent !~* "googlebot")
définir $rule_0 8$rule_0;
si ($http_user_agent !~* "msnbot")
définir $rule_0 9$rule_0;
si ($http_user_agent !~* "slurp")
définir $rule_0 10$rule_0;
si ($règle_0 = "10987654321")
retour 403;
Pause;
Méthode 2 : Méthode Valid_Referers
Les référents valides sont la méthode la plus pratique et largement reconnue pour bloquer facilement les référents invalides. Elle ne contient que deux lignes par rapport à la méthode précédente et est très flexible. Cependant, c'est un peu difficile à digérer car il s'agit d'expressions régulières et d'un mécanisme différent pour bloquer les demandes des référents invalides.
- Copiez l'extrait de code suivant entre les deux et au tout début du bloc d'emplacement principal.
- Remplacez la liste des noms de domaine par les noms de domaine autorisés, par exemple google, bing, ou vos propres domaines, etc.
- Enregistrez et fermez le fichier par défaut, puis suivez les étapes 3, 4 de la phase « Préparation » pour que les modifications prennent effet.
valid_referers aucun bloqué server_names
*.linux.avec Linux.* www.linux.com/à propos/~\.linux\.;
si ($invalid_referer)
retour 403;
Il a principalement deux blocs de code, valid_referers et l'expression conditionnelle if avec la variable invalid_referer. Par défaut, ce bloc de code est utilisé entre et au tout début du bloc de localisation avant l'exécution de tout autre code, mais il peut également être utilisé à n'importe quel autre endroit, comme entre un bloc de code de localisation avec des expressions régulières pour détecter des formats de fichiers spécifiques pour rendre le blocage pertinent pour les formats de fichiers susmentionnés, comme dans la méthode 1. Comme expliqué précédemment, la méthode ne contient que deux blocs de code, le premier bloc de code contient 3 mots-clés, le premier est « aucun » lorsque le champ référent est manquant dans la requête HTTP, le second est « bloqué » lorsque le champ référent est supprimé par n'importe quel intermédiaire, tel qu'un proxy, un pare-feu, etc., le troisième mot-clé sert à spécifier les noms de domaine valides.
Lorsque le nom de domaine commence par le symbole "~", il est considéré comme une expression régulière, et donc des modèles très complexes peuvent être utilisés, mais il peut être difficile à comprendre si les expressions régulières ne sont pas bien connues. Si aucune des conditions n'est remplie dans l'instruction valid_referers, la variable invalid_referer est définie sur une chaîne vide, sinon elle est définie sur 1, ce que cela signifie si la demande à venir ne contient aucun champ de référence, ou si nginx a identifié ce champ de référence est supprimé par un pare-feu ou un proxy, ou si le champ de référence est défini sur les domaines spécifiés (liste de noms de domaine valide), alors la variable de référence invalide est définie sur une chaîne vide, et ainsi sa condition if n'est pas exécutée. Cependant, si la demande provient d'un domaine qui n'est pas spécifié dans l'expression valid_referers en tant que domaine valide, alors il est bloqué.
CONCLUSION
Assurez-vous de prendre en compte ce contenu et d'éviter les hotlinks sur vos sites hébergés par Nginx.