设置 nginx 规则以根据 IP 地址限制访问

设置 nginx 规则以根据 IP 地址限制访问

我有一个 URL,可以根据下面给出的 IP 地址对其进行限制。但是,我想做的是将规则应用于所有 URL(未包含在下面的规则中),这样如果 URL 请求与这些 URL 不匹配,则应用 whitelist.conf 中的允许/拒绝。

**Current rule in default file in sites-available:**
 ##  restrict admin access to IP address in whitelist.conf file
  location ^~ /admin {
    proxy_pass        http://127.0.0.1:9000;
    proxy_redirect    off;
    proxy_set_header  Host             $host;
    proxy_set_header  X-Real_IP        $remote_addr;
    proxy_set_header  X-Forwarded_For  $proxy_add_x_forwarded_for;
    proxy_read_timeout                 240;
    proxy_connect_timeout              120;
   include whitelist.conf;  
}

白名单配置文件

##assuming 127.0.0.1 is the only ip address I want with access to the url '/admin' 
       allow 127.0.0.1;
       deny all;

我想改变这一点,如果 URL 不是“/admin”,那么我“允许”流量,但如果不是,那么我限制对我想要访问的 IP 地址的访问。提前致谢

答案1

您可以根据目录编写限制。使用类似下面的内容来管理它。如果您使用 php,则可能需要嵌套块。并且 /admin 不应该只是出现在 uri 中的任何地方:

# everything that starts with /admin is handled,
# and regex location will not override it
location ^~ /admin {
  allow 1.2.3.4;
  deny all;

  # Inherits the allow/deny from the outer location
  location ~ \.php$ {
    include fastcgi.conf;
    fastcgi_pass backend;
  }
}

相关内容