【发布时间】:2012-01-16 08:30:30
【问题描述】:
Nginx、Passenger 和 Rails 在我的 Linode 上运行良好。在启动之前,我想限制访问,以便只有我的 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 包含在所有内容中,因此它正在清除允许。
-
不幸的是它没有用。来自nginx documentation:“请注意,拒绝/允许的顺序至关重要。如果您来自 Apache 世界,您可能会认为您可以切换访问指令顺序,一切都会正常工作。实际上并没有。上例中切换顺序的结果是拒绝访问所有地址。”
标签: nginx