知识库 / 阶段 7 · 站点配置 · 风险与合规 / 搜索引擎优化(SEO) ↗ / 第 093 节
网站 Nginx 配置机器人爬取规则
完整 Nginx 配置(可直接用)#
🟩 一、Nginx 核心思路#
Nginx 限速模块 limit_req 本身不能直接识别 User-Agent,所以我们用 map 标记爬虫 → limit_req_zone 限速 → location 启动限速策略。
最终逻辑:
-
Google/Bing/Yandex → is_searchbot = 1 → 放行
-
AI 爬虫、普通爬虫 → is_badbot = 1 → 限速 5r/s
-
空 UA / 可疑行为 → 限速 & 可阻断
🟦 重要:请把下面所有配置放进 http {} 内#
✅ 二、识别搜索引擎(放行)#
map $http_user_agent $is_searchbot {
default 0;
"~*Googlebot" 1;
"~*Bingbot" 1;
"~*YandexBot" 1;
}
SEO 不会受影响。
🟧 三、识别 AI 爬虫 & 一般爬虫(你的限速对象)#
map $http_user_agent $is_badbot {
default 0;
# AI 爬虫
"~*GPTBot" 1;
"~*ChatGPT" 1;
"~*ClaudeBot" 1;
"~*anthropic" 1;
"~*Perplexity" 1;
# 常规爬虫
"~*bot" 1;
"~*crawler" 1;
"~*spider" 1;
"~*scrapy" 1;
"~*python" 1;
"~*curl" 1;
"~*wget" 1;
# 伪装爬虫
"" 1; # 空 UA
}
👉 SEO 搜索引擎不受影响
👉 AI 爬虫 & 普通爬虫都能正确识别
🟥 四、设置限速 Zone(5 次每秒)#
limit_req_zone $is_badbot zone=botlimit:10m rate=5r/s;
含义:#
-
每秒最多 5 请求(你要求的)
-
超速会被 Nginx 拒绝(503 或自定义 429)
🟪 五、在 server/location 中启用限制#
放在你所有业务 location 之前:
server {
...
# 限速 AI & 普通爬虫
if ($is_badbot = 1) {
limit_req zone=botlimit burst=5 nodelay;
}
# 搜索引擎不受限
if ($is_searchbot = 1) {
return 200;
}
...
}
burst=5#
允许偶尔瞬时多 5 个请求
避免误伤工具类爬虫
nodelay#
超过速率立即阻断(不会排队)
🟦 六、可选:返回 429 替代 503(更符合行业标准)#
limit_req_status 429;
🟩 七、完整可用 Nginx 配置(复制即用)#
http {
# 放行 Google/Bing/Yandex
map $http_user_agent $is_searchbot {
default 0;
"~*Googlebot" 1;
"~*Bingbot" 1;
"~*YandexBot" 1;
}
# 限制 AI 与一般爬虫
map $http_user_agent $is_badbot {
default 0;
# AI 爬虫
"~*GPTBot" 1;
"~*ChatGPT" 1;
"~*ClaudeBot" 1;
"~*anthropic" 1;
"~*Perplexity" 1;
# 常规爬虫
"~*bot" 1;
"~*crawler" 1;
"~*spider" 1;
"~*scrapy" 1;
"~*python" 1;
"~*curl" 1;
"~*wget" 1;
# UA 为空 = 可疑
"" 1;
}
# 限速区:每秒 5 次
limit_req_zone $is_badbot zone=botlimit:10m rate=5r/s;
limit_req_status 429;
server {
listen 80;
server_name example.com;
# 搜索引擎直接放行
if ($is_searchbot = 1) {
return 200;
}
# 限速爬虫
if ($is_badbot = 1) {
limit_req zone=botlimit burst=5 nodelay;
}
location / {
try_files $uri $uri/ =404;
}
}
}
🟦 八、效果总结(满足你全部要求)#
| 类型 | 行为 | 是否限速 |
| Googlebot | 完全放行 | ❌ 不限速 |
| Bingbot | 完全放行 | ❌ 不限速 |
| YandexBot | 完全放行 | ❌ 不限速 |
| GPTBot / ClaudeBot / ChatGPT | 限速 | ✔ 5 次/秒 |
| 普通 bot | 限速 | ✔ 5 次/秒 |
| 伪装 bot(空 UA / 工具爬虫) | 限速或阻断 | ✔ 5 次/秒 |
| 人类用户 | 不受影响 | ❌ |
这是目前 NGINX 最健壮 + SEO 完全友好 + 不误伤 + 最容易维护 的方案。