Je souhaite restreindre l'accès à certains VHosts afin que seul 127.0.0.1 puisse y accéder. J'ai toujours utilisé quelque chose comme ça pour lier le VHost à l'hôte local et non à l'IP externe:
server {
listen 127.0.0.1;
server_name myvhost.local;
location / {
....
}
}
Mais j'ai remarqué que certains didacticiels incluent également des allow
directives explicites pour le localhost et refusent expressément tous les autres:
server {
listen 127.0.0.1;
server_name myvhost.local;
location / {
allow 127.0.0.1;
deny all;
...
}
}
Ces directives allow
/ sont-elles deny
vraiment nécessaires lorsque j'écoute déjà uniquement à la 127.0.0.1?
allow 127.0.0.1/32;
allow
parce que je me suis mislisten
à127.0.0.1
.Réponses:
La
listen
directive indique au système d'exploitation sur quelle interface le serveur Web se lie. Ainsi, lorsque vous regardeznetstat -a
après le démarrage de nginx, vous verrez que nginx écoute uniquement sur le port IP 127.0.0.1 80, ce qui signifie que le serveur nginx ne peut être atteint via aucune autre interface.La liaison à une adresse IP spécifique fonctionne à un niveau inférieur dans la pile réseau réelle par rapport aux directives
allow
/deny
dans la configuration nginx.Cela signifie que vous n'avez pas besoin de directives
allow
/ séparéesdeny
dans votre configuration avec votre cas d'utilisation, car les connexions sont limitées plus bas dans la pile réseau.Si vous spécifiez
listen 80;
uniquement et utilisez les directivesallow
/deny
, nginx enverra un code d'erreur HTTP au client, indiquant que l'accès est refusé.Dans ce
listen 127.0.0.1;
cas, le navigateur ne peut pas du tout se connecter au serveur, car il n'y a pas de port TCP ouvert pour que le navigateur puisse se connecter.la source
netstat
une adresse locale de0.0.0.0:80
(toutes les interfaces). Puis-je alors omettredeny
/allow
sur les serveurs locaux uniquement?listen 80 default_server;
directive lorsqu'un client demande un vhost lié à127.0.0.1:80
. Si vous n'avez pasdefault_server
défini, alors il affichera un serveur qui alisten 80;
défini.listen 127.0.0.1
serveurs et je n'en ai même pas besoinallow/deny
sur ces serveurs?Supposons que votre ID réseau soit
192.168.1.0
, modifiez votre fichier conf comme ceci:Veuillez me faire savoir comment cela fonctionne pour vous.
Édition n ° 1:
Oui, la directive allow est un must selon le wiki officiel de Nginx . Leur exemple est:
la source
127.0.0.1
;) Ma question est de savoir si je dois queallow
du tout parce que je l' ai déjà mislisten
à127.0.0.1
.Je voulais obtenir la même fonctionnalité (autoriser uniquement les utilisateurs locaux dans nginx) et j'ai compris que je pouvais faire quelque chose de simple comme ceci:
Ce fichier de configuration fonctionne très bien pour moi, je n'utilise aucune
allow
directive, mais seulement127.0.0.1:80
, et avec cela je suis en mesure de restreindre l'accès nginx aux utilisateurs locaux uniquement!la source