环境

nginx1.20 理由不说了,就是通过Nginx 一些策略来帮助防止爬虫或恶意访问

配置

  1. User-Agent检测 爬虫通常会使用特定的User-Agent来标识自己,Nginx可以通过检测User-Agent字符串并拒绝使用非法的User-Agent的请求。
if ($http_user_agent ~* "badcrawler") {
    return 403; // 拒绝爬虫请求
}
  1. ip黑名单 Nginx允许你配置一个IP黑名单,将某些IP地址列入黑名单后可以拒绝其访问。
http {
    ...
    
    include blacklist.conf;
    
    ...
}
  1. 限制并发连接数 通过配置Nginx的limit_conn模块来限制单个IP的并发连接数,这可以防止爬虫过度占用服务器资源。
http {
    ...
    
    limit_conn_zone $binary_remote_addr zone=concurrent:10m;
    
    server {
        listen 80;
        ...
        
        location / {
            limit_conn concurrent 10;
            ...
        }
    }
}
  1. 频率限制 使用Nginx的limit_req模块来限制单个IP对某个URL的请求频率,这可以防止爬虫过于频繁地访问
http {
    ...
    
    limit_req_zone $binary_remote_addr zone=req_rate_limit:10m rate=5r/s;
    
    server {
        listen 80;
        ...
        
        location /api/ {
            limit_req zone=req_rate_limit burst=10 nodelay;
            ...
        }
    }
}