2011-12-08 43 views
47

Nginx, Passenger y Rails funcionan perfectamente en mi Linode. Antes de lanzar, me gustaría restringir el acceso para que solo mi IP pueda ver el sitio.¿Cómo puedo permitir el acceso a una sola dirección IP a través de Nginx.conf?

He intentado denegar el acceso a todos y permitir el acceso solo a mi IP en Nginx. Niega el acceso a todos, pero no puedo permitir que funcione. He verificado que la dirección IP que especifico en nginx.conf es mi IP pública correcta.

Aquí está mi nginx.conf. He reiniciado nginx después de editar el archivo y he probado algunos otros cambios que funcionaron como se esperaba (por ejemplo, eliminé denegar todo y pude acceder al sitio, como era de esperar).

¿Qué estoy haciendo mal?

http { 
     passenger_root /path/to/passenger-3.0.11; 
     passenger_ruby /path/to/ruby; 
     include  mime.types; 
     default_type application/octet-stream; 
     sendfile  on; 
     keepalive_timeout 65; 
     gzip on; 
     server { 
     listen 80; 
     server_name www.foo.bar; 
     root /path/to/rails/public/; 
     passenger_enabled on; 
     location/{ 
      allow my.public.ip.here; 
      deny all; 
     } 
     } 
    } 
+0

todo lo que conoce de configuración de nginx, pero ¿ha intentado cambiar el orden? Me imagino lo que está haciendo es otorgar acceso a su ip, y luego negar el acceso a todos. Su IP está incluida en todo, por lo que está borrando el permiso. – Corbin

+0

Lamentablemente no funcionó. De la [documentación de nginx] (http://wiki.nginx.org/HttpAccessModule): "Tenga en cuenta que el orden de denegar/permitir es de suma importancia. Si vienes del mundo Apache, es posible que tengas la tentación de piense que puede cambiar el orden de las directivas de acceso y que todo funcionará. De hecho, no. Cambiar el orden en el ejemplo anterior tiene el resultado de negar el acceso a todas las direcciones ". – MrDerp

Respuesta

102

modificar su nginx.conf

server { 
    listen 80; 
    server_name www.foo.bar; 

    location/{ 
     root /path/to/rails/public/; 
     passenger_enabled on; 

     allow my.public.ip.here; 
     deny all; 
    } 
    } 
No
+7

Aparentemente es importante permitir es el primero, negar es el segundo, de lo contrario, negar es "más fuerte". –

+0

Cada vez que agrego esto arriba a mi archivo nginx.conf ya no puedo reiniciar nginx. Me sale este error: [....] Reiniciando nginx (a través de systemctl): nginx.serviceJob para nginx.service falló porque el proceso de control salió con el código de error. Consulte "estado del sistema nginx.service" y "journalctl -xe" para más detalles. ¡falló! <<<<< ¿Alguna idea de lo que está pasando con mi construcción? @erkasraim – Supplement

+0

@Supplement intente y vea si omitió una coma al final del permiso, o cualquier otra regla – William

Cuestiones relacionadas