可以使用 map 指令来实现,具体步骤如下:

  1. 在 nginx 配置文件中定义一个 map 变量,用于存储特定域名的 ua 限制条件,例如:
map $host $ua_restrict {
    example.com 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36';
}

上面的配置表示,如果请求的域名是 example.com,则只允许上述 User-Agent 访问。

  1. 在 server 配置中使用变量,例如:
server {
    listen 80;
    server_name example.com www.example.com;

    # 设置 access_log 日志格式
    log_format access '$remote_addr - $remote_user [$time_local] '$request' '
                       '$status $body_bytes_sent '$http_referer' '
                       ''$http_user_agent' '$http_x_forwarded_for'';

    # 判断 ua 是否符合要求,如果不符则返回 403
    if ($http_user_agent != $ua_restrict) {
        return 403;
    }

    location / {
        # 其他配置
    }

    # 设置 access_log 日志路径
    access_log /var/log/nginx/example.access.log access;
}

上面的配置中,如果请求的 User-Agent 不符合 $ua_restrict 变量中设置的条件,则会返回 403 错误,否则访问正常。同时,我们也设置了 access_log 日志格式和路径。

Nginx 域名 UA 限制:无需 if 语句实现特定域名访问控制

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

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