2011-12-08 21 views
47

Nginx, Yolcu ve Raylar benim Linode üzerinde güzelce çalışıyor. Lansmandan önce erişimi kısıtlamak istiyorum, bu yüzden sadece IP'm siteyi görüntüleyebilir.Nginx.conf aracılığıyla tek bir IP adresine nasıl erişebilirim?

tüm erişimi reddetmek ve Nginx sadece benim IP erişim izni vermek için çalıştık. Herkese erişimi reddediyor, ancak izin veremiyorum. Nginx.conf dosyasında belirttiğim IP adresinin doğru ipucum olduğunu kontrol ettim.

İşte benim nginx.conf bu. Dosyayı düzenledikten sonra nginx'i yeniden başlattım ve beklendiği gibi çalışan diğer bazı değişiklikleri test ettim (örneğin, her şeyi reddetmiştim ve beklendiği gibi siteye erişebildim).

Neyi yanlış yapıyorum?

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

Değil nginx yapılandırma ile tanıdık değiştirmek, ancak düzeni değiştirme denedi? Yaptığınız şeyin ipinize erişim izni vereceğini ve sonra da herkese erişimi reddettiğini düşünürdüm. IP'niz herkese dahildir, bu yüzden izinleri siler. – Corbin

+0

Maalesef işe yaramadı. [Nginx belgelerine] Gönderen (http://wiki.nginx.org/HttpAccessModule): "Not/izin inkar sırası çok önemli olduğunu Apache dünyadan geliyor ediyorsanız için cazip olabilir. Eğer direktifler sipariş erişimini geçiş yapabilirsiniz ve her şeyi çalışacağını düşünüyorum. Aslında. yukarıdaki örnekteki düzeni Switching tüm adreslere erişimi engellenirken sonucunu mevcut değil." – MrDerp

cevap

102

sizin nginx.conf tüm

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

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

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

Görünüşe göre, izin ilk, inkar ikinci, aksi takdirde inkar 'güçlü' önemlidir. –

+0

Bunu yukarıdaki nginx.conf dosyasına eklediğimde, artık nginx'i yeniden başlatamıyorum. Bu hatayı alıyorum: [....] nginx (systemctl aracılığıyla): nginx.serviceJob için nginx.service başarısız oldu, çünkü denetim işlemi hata koduyla çıktı. Ayrıntılar için "systemctl status nginx.service" ve "journalctl -xe" konusuna bakın. başarısız! <<<<< Yapımla ilgili neler oluyor? deneyin ve izin sonunda bir virgül veya başka herhangi bir kural cevapsız görmek @Supplement – Supplement

+0

@erkasraim – William

İlgili konular