可以使用 map 指令 和 geo 指令 实现特定 ua 访问限制。具体步骤如下:

  1. 在 http 块中定义一个 map,将需要限制访问的 ua 作为 key,对应的值设置为 1:
http {
    map $http_user_agent $limit {
        default 0;
        '特定UA1' 1;
        '特定UA2' 1;
    }
}
  1. 在 http 块中定义一个 geo,将需要限制访问的域名作为 key,对应的值设置为 1:
http {
    geo $limit_domain {
        default 0;
        'example.com' 1;
    }
}
  1. 在 server 块中使用 if 指令判断当前请求的域名和 ua 是否需要限制访问,如果需要限制访问,则返回 403 Forbidden,否则正常处理请求:
server {
    listen 80;
    server_name example.com www.example.com;

    if ($limit_domain) {
        if ($limit) {
            return 403;
        }
    }

    location / {
        # 处理请求
    }
}

注意:尽量避免使用 if 指令,因为 if 指令可能会影响 nginx 性能。如果有多个 if 指令嵌套,建议使用多个 server 块 分别处理。同时,建议将限制访问的配置单独放在一个文件中,使用 include 指令引入。

Nginx 配置特定域名只允许特定 UA 访问 (不使用 if 语句)

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

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