可以使用 map 模块和 geo 模块来实现限制特定 UA 访问某个域名,而不使用 if 语句。

  1. 创建一个 UA 列表,将需要限制的 UA 添加进去:
map $http_user_agent $bad_ua {
    default 0;
    ~*bot 1;
    ~*spider 1;
    ~*crawler 1;
    ~*curl 1;
}
  1. 创建一个 IP 列表,将允许访问的 IP 地址添加进去:
geo $allow_ips {
    default 0;
    192.168.0.0/24 1;
    10.10.0.0/16 1;
}
  1. 在 server 中配置限制访问:
server {
    listen 80;
    server_name example.com;
    
    # 只允许特定的 UA 访问
    if ($bad_ua) {
        return 403;
    }
    
    # 只允许特定的 IP 访问
    if ($allow_ips = 0) {
        return 403;
    }
    
    # 其他配置
    ...
}
  1. 重启 nginx 服务生效。

以上配置中,map 模块用于匹配 UA 列表,geo 模块用于匹配 IP 地址列表,如果匹配成功则返回 403 禁止访问,否则允许访问。这样就可以实现限制特定 UA 访问某个域名的功能,而不使用 if 语句。

Nginx 限制特定 UA 访问域名 - 无需使用 if 语句

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

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