• 微信
    咨询
    微信在线咨询 服务时间:9:00-18:00
    纵横数据官方微信 使用微信扫一扫
    马上在线沟通
  • 业务
    咨询

    QQ在线咨询 服务时间:9:00-18:00

    选择下列产品马上在线沟通

    纵横售前-老古
    QQ:519082853 售前电话:18950029581
    纵横售前-江夏
    QQ:576791973 售前电话:19906048602
    纵横售前-小李
    QQ:3494196421 售前电话:19906048601
    纵横售前-小智
    QQ:2732502176 售前电话:17750597339
    纵横售前-燕子
    QQ:609863413 售前电话:17750597993
    纵横值班售后
    QQ:407474592 售后电话:18950029502
    纵横财务
    QQ:568149701 售后电话:18965139141

    售前咨询热线:

    400-188-6560

    业务姚经理:18950029581

  • 关注

    关于纵横数据 更多优惠活动等您来拿!
    纵横数据官方微信 扫一扫关注官方微信
  • 关闭
  • 顶部
  • 您所在的位置 : 首页 > 新闻公告 > 澳大利亚云服务器Nginx如何限制异常User-Agent?

    澳大利亚云服务器Nginx如何限制异常User-Agent?

    澳大利亚云服务器上运营网站时,经常会遇到各种异常User-Agent带来的困扰。恶意爬虫、漏洞扫描器、自动化攻击脚本等通过伪造或携带异常的User-Agent标识频繁访问服务器,不仅消耗大量带宽和计算资源,还可能导致网站响应变慢甚至服务中断。Nginx作为高性能的Web服务器,提供了灵活的配置能力来识别和拦截这些异常请求。下面结合实际场景,详细介绍如何通过Nginx配置有效限制异常User-Agent。

    理解异常User-Agent的常见类型

    在动手配置之前,有必要先了解哪些User-Agent属于"异常"范畴。常见的异常User-Agent大致可以分为以下几类。

    第一类是恶意扫描器和攻击工具,比如sqlmap、nikto、nessus、masscan、acunetix等,这些工具通常被用于自动化漏洞探测和渗透测试,对正常业务没有任何价值。

    第二类是脚本测试工具,比如curl、wget、PostmanRuntime、Apache-HttpClient、python-requests、Go-http-client等。虽然这些工具本身是合法的,但在生产环境中,正常用户几乎不会通过这些工具访问网站,大量出现往往意味着自动化脚本在批量抓取或探测。

    第三类是低质量的SEO爬虫,比如MJ12bot、DotBot、CrawlDaddy、Rogerbot、BLEXBot等,这些爬虫对大多数网站没有实际的SEO价值,却会消耗服务器资源。

    第四类是空User-Agent请求,即请求头中完全不携带User-Agent字段。正常浏览器访问一定会带上User-Agent,空UA的请求绝大多数来自自动化脚本或扫描工具。

    使用map指令构建高效的UA过滤规则

    在Nginx中限制异常User-Agent,推荐使用map指令来统一管理黑白名单。相比在server块中写多个if判断,map指令只在http块中定义一次正则匹配,性能更优,配置也更清晰。

    在nginx.conf的http块中添加如下配置:

    map $http_user_agent $block_ua {
    default 0;
    "" 1;
    ~sqlmap|nikto|nessus|masscan|acunetix 1;
    ~
    curl|wget|PostmanRuntime|Apache-HttpClient 1;
    ~python-requests|python-urllib|Go-http-client|okhttp 1;
    ~
    libwww-perl|Scrapy|httrack 1;
    ~MJ12bot|DotBot|CrawlDaddy|Rogerbot|BLEXBot 1;
    ~
    zgrab|nmap|burp|scanner 1;
    }

    这段配置的含义是:通过map指令对每个请求的User-Agent进行匹配,如果命中黑名单中的关键词,就将变量$block_ua标记为1。其中第一行"" 1表示直接拦截空User-Agent的请求,~*表示不区分大小写的正则匹配。

    在server块中应用拦截逻辑

    定义好map规则后,需要在对应的server块中引用这个变量,对匹配到的异常UA返回403拒绝访问。

    server {
    listen 80;
    server_name ***.com www.***.com;

    if ($block_ua) {
    return 403;
    }

    location / {
    root /var/www/html;
    index index.html;
    }
    }

    将if判断放在server块的最顶部,确保所有进入该站点的请求都会先经过UA检查,命中黑名单的请求在进入任何location处理之前就被拦截,最大程度减少资源消耗。

    白名单优先策略保护合法爬虫

    在拦截异常UA的同时,必须确保合法的搜索引擎爬虫不会被误伤。Googlebot、Bingbot、Baiduspider等搜索引擎爬虫对网站的收录和流量至关重要,应该优先放行。

    实现白名单优先的方式是在map中增加一个合法UA的标记变量,并在server块中先判断白名单:

    map $http_user_agent $is_legit_bot {
    default 0;
    ~*Googlebot|Bingbot|YandexBot|DuckDuckBot|Baiduspider 1;
    }

    server {
    listen 80;
    server_name ***.com;

    if ($is_legit_bot) {
    set $block_ua 0;
    }

    if ($block_ua) {
    return 403;
    }
    }

    这样的逻辑确保了即使某个合法爬虫的UA字符串中碰巧包含了黑名单中的某个关键词,也会被白名单规则覆盖并放行。

    实际案例:拦截恶意扫描器保护服务器资源

    曾有一个案例,某团队在澳大利亚云服务器上部署了一个内容资讯站点,上线后不久就发现服务器CPU使用率持续偏高,带宽也被大量占用。通过分析Nginx访问日志发现,大量请求来自sqlmap、nikto等安全扫描工具,这些请求以极高的频率探测各种漏洞路径,产生了海量的404响应。

    运维人员在nginx.conf的http块中添加了上述map规则,将sqlmap、nikto、nessus等扫描工具的UA加入黑名单,同时配置了空UA拦截。配置生效并reload Nginx后,再次查看访问日志,这些恶意扫描请求全部返回403,服务器CPU使用率明显下降,正常用户的访问体验也得到了改善。

    配合请求频率限制实现多层防护

    单纯依靠User-Agent过滤并不能完全解决问题,因为攻击者可以轻易伪造UA字符串来绕过规则。因此建议将UA过滤与请求频率限制结合使用,形成多层防护体系。

    在http块中添加频率限制配置:

    limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

    然后在server块或location块中应用:

    location / {
    limit_req zone=perip burst=20 nodelay;
    # 其他配置...
    }

    这样即使攻击者伪造了正常的User-Agent,如果单个IP的请求频率超过阈值,也会被频率限制机制拦截。UA过滤负责拦截已知的恶意工具,频率限制负责应对高频异常访问,两者配合可以覆盖更多的攻击场景。

    通过日志分析持续优化拦截规则

    拦截规则不是一成不变的,需要定期根据实际流量情况进行调整。通过分析Nginx的访问日志,可以发现有新的异常UA出现,及时将其加入黑名单。

    可以使用如下命令统计访问日志中出现频率最高的User-Agent:

    awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

    这条命令会提取访问日志中的User-Agent字段,按出现次数降序排列,帮助快速识别出需要关注的异常UA。对于确认无用的爬虫或恶意工具,及时添加到map黑名单中即可。

    总结

    在澳大利亚云服务器上通过Nginx限制异常User-Agent,核心思路是利用map指令构建高效的UA黑白名单,在server块中优先判断白名单再执行黑名单拦截,同时配合请求频率限制和日志分析形成完整的防护体系。配置时需要注意保护合法搜索引擎爬虫不被误伤,并根据实际流量持续优化拦截规则。这种在Nginx层面直接拦截的方式,开销极低且响应迅速,是应对恶意爬虫和自动化攻击的第一道防线。

    纵横云服务器租赁,欢迎随时联系,客服联系方式:QQ3494196421,手机微信19906048601。



    最新推荐


    微信公众帐号
    关注我们的微信