可以使用 Nginx 的 Geo 模块和 Map 指令实现特定域名只允许特定 IP 地址访问的功能,无需使用 if 语句。具体步骤如下:

  1. 在 Nginx 配置文件中定义 Geo 变量,用于存储特定 IP 地址的列表。例如:
geo $allow_ip {
    default 0;  # 默认禁止访问
    '10.10.10.1/32' 1;  # 允许访问的 IP 地址,可以添加多个
}
  1. 在 Nginx 配置文件中定义一个 Map 变量,将特定域名映射到上一步定义的 Geo 变量。例如:
map $host $allowed {
    default 0;
    'example.com' $allow_ip;
    # 可以添加其他域名和对应的 Geo 变量
}
  1. 在 Nginx 配置文件中使用 if 指令判断客户端 IP 地址是否在允许访问的列表中,并且判断特定域名是否允许访问。如果条件成立,则允许访问;否则禁止访问。例如:
server {
    listen 80;
    server_name 'example.com';
    
    if ($allowed = 0) {
        return 403;
    }
    
    # 其他配置
}
  1. 重启 Nginx 服务,使配置生效。

注意:虽然上述方法可以实现该功能,但是使用 if 指令会影响 Nginx 的性能,不建议在生产环境中使用。另外,如果需要更新 IP 地址列表,必须重启 Nginx 服务才能生效。

Nginx 限制特定域名访问 - Geo 模块与 Map 指令

原文地址: http://www.cveoy.top/t/topic/nURy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录