当前位置:首页 > 服务器技术 > 正文

Nginx用户代理过滤(手把手教你屏蔽恶意爬虫和无效请求)

在网站运维过程中,你是否经常遇到一些烦人的爬虫、扫描器或者自动化脚本不断访问你的服务器?这些请求不仅浪费带宽,还可能带来安全风险。今天,我们就来学习如何使用 Nginx 用户代理过滤 功能,轻松屏蔽这些不速之客。

Nginx用户代理过滤(手把手教你屏蔽恶意爬虫和无效请求) Nginx用户代理过滤 禁止恶意爬虫 Nginx配置教程 Web安全防护 第1张

什么是用户代理(User-Agent)?

用户代理(User-Agent)是浏览器或客户端在向服务器发起 HTTP 请求时,附带的一个字符串,用于标识自己是什么设备、操作系统、浏览器或程序。例如:

  • Chrome 浏览器的 User-Agent 可能包含 Chrome/124.0.0.0
  • 百度爬虫的 User-Agent 包含 Baiduspider
  • 某些恶意扫描器会伪装成正常浏览器,但也有些会使用明显可疑的字符串如 sqlmapnmap

为什么需要 Nginx 用户代理过滤?

通过识别并拦截特定的 User-Agent,我们可以:

  • 阻止已知的恶意爬虫或扫描工具
  • 减少服务器负载,节省带宽
  • 提升 Web安全防护 能力
  • 防止数据被非法采集

如何在 Nginx 中配置用户代理过滤?

下面是一个完整的配置示例,适合初学者操作。

步骤 1:编辑 Nginx 配置文件

通常配置文件位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default。使用你喜欢的编辑器打开它:

# 示例:在 server 块中添加以下规则server {    listen 80;    server_name example.com;    # 定义要屏蔽的 User-Agent 列表    if ($http_user_agent ~* "(sqlmap|nmap|wget|curl|nikto|hydra|acunetix|scan|bot|spider|crawler)") {        return 403;    }    location / {        root /var/www/html;        index index.html;    }}  

上面的代码使用了 if 指令配合正则表达式(~* 表示不区分大小写匹配),一旦请求头中的 User-Agent 包含指定关键词,就直接返回 403 Forbidden 错误。

步骤 2:测试配置并重载 Nginx

保存文件后,先测试配置是否正确:

sudo nginx -t  

如果显示 syntax is ok,说明配置无误。接着重载 Nginx 使配置生效:

sudo systemctl reload nginx  

步骤 3:验证效果

你可以使用 curl 命令模拟一个被屏蔽的 User-Agent 来测试:

curl -A "sqlmap" http://your-domain.com  

如果返回 403 Forbidden,说明 Nginx配置教程 成功生效!

注意事项

  • User-Agent 可以被伪造,因此不能作为唯一的安全措施,但它是 禁止恶意爬虫 的有效第一道防线。
  • 避免误杀合法用户。例如,不要屏蔽包含 bot 的所有请求,因为 Googlebot、Bingbot 是合法搜索引擎爬虫。
  • 建议定期更新屏蔽关键词列表,根据日志分析新增的恶意 User-Agent。

总结

通过本文的 Nginx用户代理过滤 教程,即使是小白也能快速上手,为自己的网站增加一层基础防护。结合其他安全策略(如 IP 黑名单、速率限制等),可以构建更健壮的 Web安全防护 体系。

赶快动手试试吧!保护你的网站,从一行 Nginx 配置开始。