Nginx 如何根据IP地址采取不同的行动?

Nginx 如何根据IP地址采取不同的行动?

我目前有一个应用程序,希望来自 2 个特定 IP 地址的每个人都可以访问它,并通过相同的 URL 保护同一个应用程序,以防止来自另一个 IP 的用户访问。

例如,我允许用户拥有190.190.190.110190.190.190.112。而对于其他人,我希望 Nginx 引用 htpassword 文件。

有人知道怎么做吗?

編輯:快速上升

答案1

尝试这个:

   location / {
        satisfy any;

        allow 82.242.75.92;
        allow 82.242.75.98;
        deny all;

        auth_basic            "Restricted";
        auth_basic_user_file  /home/password_manager/passwords;
    }

答案2

这尚未测试过..但类似这样的操作可能在你的服务器块中起作用

server  {
  if ($remote_addr !~* "190.190.190.[110|112]") {
     auth_basic            "Restricted";
     auth_basic_user_file  /path/to/htpasswd.file;
  }
}

我的正则表达式可能是错误的,但这就是操作方法的要点。

答案3

我认为您不能直接根据 IP 来限制基本身份验证,但您可以强制重定向到单独的站点(即新的服务器块)。

看一下这个:

使用 Nginx 根据 IP 地址/子网提供不同的页面

(我需要自己运行并实现这个......)

相关内容