Quiero restringir el acceso a algunos VHosts para que solo 127.0.0.1 pueda acceder a él. Siempre usé algo como esto para vincular el VHost al localhost y no a la IP externa:
server {
listen 127.0.0.1;
server_name myvhost.local;
location / {
....
}
}
Pero noté que algunos tutoriales también incluyen allow
directivas explícitas para el host local y niegan explícitamente a todos los demás:
server {
listen 127.0.0.1;
server_name myvhost.local;
location / {
allow 127.0.0.1;
deny all;
...
}
}
Son estos allow
/ deny
directivas realmente necesarios cuando ya escuchar sólo a 127.0.0.1?
allow 127.0.0.1/32;
allow
porque me puse alisten
hacerlo127.0.0.1
.Respuestas:
La
listen
directiva le dice al sistema operativo en qué interfaz se une el servidor web. Entonces, cuando observanetstat -a
después de iniciar nginx, verá que nginx solo escucha en el puerto IP 127.0.0.1 80, lo que significa que no se puede acceder al servidor nginx a través de ninguna otra interfaz.El enlace a una dirección IP específica funciona en un nivel inferior en la pila de red real que las directivas
allow
/deny
dentro de la configuración de nginx.Esto significa que no necesita directivas
allow
/ separacionesdeny
dentro de su configuración con su caso de uso, porque las conexiones están limitadas en la pila de red.Si
listen 80;
solo especifica , y usaallow
/deny
directivas, nginx enviará un código de error HTTP al cliente, indicando que el acceso es denegado.Con el
listen 127.0.0.1;
caso, el navegador no puede conectarse al servidor en absoluto, porque no hay un puerto TCP abierto para que el navegador se conecte.fuente
netstat
muestra una dirección local de0.0.0.0:80
(todas las interfaces). ¿Puedo entonces omitirdeny
/allow
en los servidores solo locales?listen 80 default_server;
directiva cuando un cliente solicita un vhost vinculado127.0.0.1:80
. Si no tiene undefault_server
definido, mostrará un servidor que lo halisten 80;
definido.listen 127.0.0.1
servidores y yo ni siquiera los necesitoallow/deny
en estos servidores?Digamos que su ID de red es
192.168.1.0
, edite su archivo conf de esta manera:Por favor déjame saber como funciona esto para ti.
Editar # 1:
Sí, la directiva de permiso es imprescindible según el wiki oficial de Nginx . Su ejemplo es:
fuente
127.0.0.1
;) Mi pregunta es si lo necesitoallow
en absoluto, porque yo ya puselisten
a127.0.0.1
.Quería lograr la misma funcionalidad (permitir solo usuarios locales en nginx) y descubrí que puedo hacer algo simple como esto:
Este archivo de configuración funciona bien para mí, no estoy usando ninguna
allow
directiva, sino solo127.0.0.1:80
, ¡y con eso puedo restringir el acceso nginx solo a usuarios locales!fuente