【问题标题】:How can I allow access to a single IP address via Nginx.conf?如何允许通过 Nginx.conf 访问单个 IP 地址?
【发布时间】: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


【解决方案1】:

修改你的 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;
    }
  }

【讨论】:

  • 显然重要的是allow是第一个,deny是第二个,否则deny是'更强'。
  • 每当我将上面的内容添加到我的 nginx.conf 文件中时,我不再能够重新启动 nginx。我收到此错误:[....] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service 失败,因为控制进程以错误代码退出。有关详细信息,请参阅“systemctl status nginx.service”和“journalctl -xe”。失败的!
  • @Supplement 试试看你是否错过了允许末尾的逗号或任何其他规则
  • 嗨,我只有一个疑问,因为我们的公共 ip 会随着连接更改/位置更改而更改,每次 ip 更改时更改 nginx conf 中的 ip 会不会很头疼?我有点困惑。
  • @AniketSingla 在这种情况下,如果您在专用网络上,则可以指定专用网络的 CIDR 块而不是特定的公共 IP 地址。否则,您可以查看 ssl_verify_client 指令或基本 HTTP 身份验证。
【解决方案2】:

我知道这是一个旧踏板,但您总是使用 sudo nginx -t 来获取更具体的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多