Nginx 限制特定域名访问 - Geo 模块与 Map 指令
可以使用 Nginx 的 Geo 模块和 Map 指令实现特定域名只允许特定 IP 地址访问的功能,无需使用 if 语句。具体步骤如下:
- 在 Nginx 配置文件中定义 Geo 变量,用于存储特定 IP 地址的列表。例如:
geo $allow_ip {
default 0; # 默认禁止访问
'10.10.10.1/32' 1; # 允许访问的 IP 地址,可以添加多个
}
- 在 Nginx 配置文件中定义一个 Map 变量,将特定域名映射到上一步定义的 Geo 变量。例如:
map $host $allowed {
default 0;
'example.com' $allow_ip;
# 可以添加其他域名和对应的 Geo 变量
}
- 在 Nginx 配置文件中使用
if指令判断客户端 IP 地址是否在允许访问的列表中,并且判断特定域名是否允许访问。如果条件成立,则允许访问;否则禁止访问。例如:
server {
listen 80;
server_name 'example.com';
if ($allowed = 0) {
return 403;
}
# 其他配置
}
- 重启 Nginx 服务,使配置生效。
注意:虽然上述方法可以实现该功能,但是使用 if 指令会影响 Nginx 的性能,不建议在生产环境中使用。另外,如果需要更新 IP 地址列表,必须重启 Nginx 服务才能生效。
原文地址: http://www.cveoy.top/t/topic/nURy 著作权归作者所有。请勿转载和采集!