Nginx,Passenger和Rails在我的Linode上運行得非常漂亮。在我啓動之前,我想限制訪問權限,以便只有我的IP才能查看該網站。如何允許通過Nginx.conf訪問單個IP地址?
我試圖拒絕所有人的訪問,並允許只訪問我在Nginx中的IP。它拒絕所有人的訪問,但我無法獲得允許工作。我已經檢查過,以確保我在nginx.conf中指定的IP地址是我正確的公共IP地址。
這是我的nginx.conf。編輯完文件後,我重新啓動了nginx,並測試了一些按預期工作的其他更改(例如,我刪除了全部拒絕,並且能夠按預期訪問該網站)。
我在做什麼錯?
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;
}
}
}
並非所有熟悉nginx的配置,但是你試過切換順序?我會想象它正在做什麼是授予訪問你的IP,然後拒絕所有訪問。你的IP包含在所有內容中,因此它正在擦除允許的內容。 – Corbin
不幸的是,它沒有奏效。從[nginx文檔](http://wiki.nginx.org/HttpAccessModule):「請注意,拒絕/允許的順序是最重要的。如果你來自Apache世界,你可能會被誘惑認爲你可以切換訪問指令的順序,一切都會工作,事實上並不是這樣,切換上例中的順序是拒絕訪問所有地址的結果。 – MrDerp