3 votes

Nginx : Toutes les adresses IP locales redirigent vers Nginx

Pour une raison quelconque, toute adresse IP locale située dans la plage 127.xxx.xxx.xxx est redirigée vers la page par défaut "Welcome to nginx !

D'après mon expérience avec Apache, seule l'adresse IP 127.0.0.1 renvoie au serveur web Apache.

Comment faire pour que Nginx n'agisse que sur l'adresse 127.0.0.1 ?

Merci,

Ben

2voto

cyberx86 Points 20450

Vous avez deux problèmes distincts : tout d'abord, plusieurs adresses (127.0.0.1/8) sont réservées au bouclage, mais cela explique seulement pourquoi une adresse telle que 127.0.0.2 pointe toujours vers votre ordinateur.

Le deuxième problème est que NginX, par défaut, se lie à toutes les adresses disponibles. Ce paramètre est défini par l'option listen directive.

Vous pouvez vérifier que NginX a, en fait, lié toutes les adresses en regardant dans netstat -pant | grep nginx qui peut montrer quelque chose comme :

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      12534/nginx

Notez le 0.0.0.0:80 sous l'adresse locale, ce qui signifie lier à toutes les adresses.

Si vous modifiez TOUS vos blocs de serveur pour qu'ils aient une directive listen qui spécifie explicitement l'adresse à laquelle se lier (par ex. listen 127.0.0.1:80 ), vous devriez obtenir ce qui suit :

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:81                0.0.0.0:*                   LISTEN      12536/nginx

(Testé avec CentOS 6.2, Nginx 1.2, en utilisant curl - Après avoir effectué la modification, si l'on essaie de se connecter à 127.0.0.2 (ou à toute autre adresse autre que 127.0.0.1), on obtient le résultat suivant : curl: (7) couldn't connect to host )

Remarque : vous devez définir explicitement la directive listen sur tous les blocs serveur, sinon, NginX écoutera toujours sur toutes les adresses. La directive listen par défaut (c'est-à-dire lorsqu'elle est omise) est la suivante listen *:80 et NginX essaiera chaque bloc de serveurs disponibles et utilisera la "meilleure correspondance", même si le serveur server_name ne correspond pas (si vous spécifiez un listen ... default alors il utilisera celui-là).

0voto

Falcon Momot Points 24815

Conformément à la section 1.3.2.3 (Adressage) de la RFC 1122, le bloc entier 127.0.0.0/8 est réservé au bouclage ; vous devez éviter d'utiliser des adresses IP fictives, en particulier celles à usage spécial définies dans la RFC 5735 dans un but autre que l'adressage privé, car les résultats peuvent être indéfinis.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X