我们的 Nginx 配置中有相当多的server
和location
声明。我正在使用deny all
和allow 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