IP 白名单列表存储为变量吗?

IP 白名单列表存储为变量吗?

我们的 Nginx 配置中有相当多的serverlocation声明。我正在使用deny allallow x.x.x.x指令添加一些白名单。我想知道如何定义一个全局 IP 列表,然后允许多个站点使用它们,而无需在每个服务器和位置下明确列出它们。

经过一番研究,似乎由于性能原因,不建议在 Nginx 配置中使用变量?但是,我更担心用户在更新白名单时出现错误,从而导致安全问题。

这是我的目标(伪代码):

set iplist1 [10.1.0.0/16, 100.100.100.100, 200.200.200.200]
#local addresses, remote dev 1, remote dev 2
set iplist2 [10.1.0.0/16, 50.50.50.50, 30.30.30.30]
#local addresses, remote site 1, remote site 2

server {
  server_name devportal.domain.com
  location / {
    allow $iplist1;
    deny all;
  }
}

server {
  server_name siteportal.domain.com
  location / {
    allow $iplist2;
    deny all;
  }
}

如果不建议使用变量,还有其他方法可以实现这一点吗? 主要目标是当我的白名单改变时,我不必更新 10 个网站。

答案1

set命令放入文件中,并将其包含在您希望的任何可用位置。

include /path/to/iplist.conf

相关内容