宝塔 Nginx 日志默认路径:/www/wwwlogs/你的域名.log
百度爬虫 UA 关键字:
Baiduspider,包含 baidu.com 的一般是 referer 来源百度搜索,两种场景分开给你方案。
方案一:一次性提取(立即导出已有日志,简单,不用改配置)
SSH 终端执行,把包含 baidu.com 的行提取到单独文件:
# 替换为你的真实域名日志
grep "baidu.com" /www/wwwlogs/www.test.com.log > /www/wwwlogs/baidu_refer.log
如果要提取百度蜘蛛 Baiduspider 爬虫记录(UA 里的百度爬虫,SEO 最常用):
grep -i "Baiduspider" /www/wwwlogs/www.test.com.log > /www/wwwlogs/baidu_spider.log
-
>覆盖写入;>>追加写入,不会清空旧文件 -
-i忽略大小写匹配
查看结果:cat /www/wwwlogs/baidu_spider.log
方案二:实时持续记录(Nginx 配置,新产生请求自动分到独立日志,推荐长期监控)
宝塔操作:网站 → 设置 → 配置文件,修改站点 nginx 配置,不要改 nginx.conf 主配置
方法 A map + if 条件(标准 Nginx,兼容宝塔,不破坏原有日志)
在站点server{}内部添加:
map $http_user_agent $is_baidu_spider { default 0; ~*Baiduspider 1; } # 记录百度爬虫独立日志,原有access_log保留不变 access_log /www/wwwlogs/www.test.com.log main; access_log /www/wwwlogs/www.test.com_baiduspider.log main if=$is_baidu_spider;
如果你要匹配 referer 来源含baidu.com(从百度搜索跳转过来访客):
map $http_referer $is_from_baidu { default 0; ~*baidu.com 1; } access_log /www/wwwlogs/www.test.com.log main; access_log /www/wwwlogs/www.test.com_baidu_refer.log main if=$is_from_baidu;
⚠️注意:map{} 不能写在 server {} 里面,必须写在 http {} 块内
-
宝塔 → Nginx →配置修改,打开
nginx.conf,在http {内部放入 map 代码块 -
站点配置 server {} 里只放两行 access_log
-
保存,点击【配置检测】,无报错再重载 Nginx!
⚠️坑:宝塔面板会自动重写站点配置,如果你在网站设置里修改过网站,手动添加的 server 内配置有可能丢失,建议把 map 放在 nginx.conf 的 http 块内,这部分不会被覆盖。
方案三:定时脚本,每天自动把当日日志里 baidu 内容导出(宝塔计划任务)
适合不想修改 nginx 配置,每天自动生成百度日志。
-
新建脚本
/www/extract_baidu_log.sh
#!/bin/bash #替换域名 domain="www.test.com" src_log="/www/wwwlogs/${domain}.log" out_log="/www/wwwlogs/${domain}_baidu_daily.log" #提取百度爬虫,>>追加 grep -i "Baiduspider" ${src_log} >> ${out_log}
赋予执行权限:
chmod +x /www/extract_baidu_log.sh
宝塔面板 →计划任务 →Shell 脚本,设置每天定时执行这个脚本。
重要风险提示
-
日志切割:宝塔自带日志切割,新增的自定义日志(xxx_baiduspider.log)不会自动切割,时间久会变得巨大。
-
解决:要么把自定义日志加入宝塔日志切割配置;要么用方案三脚本模式。
-
-
配置改完必须点配置检测,语法错误会直接 nginx 挂掉,网站打不开。
-
真实百度爬虫会反向 dns 验证,日志里 UA 含 Baiduspider 也有可能是伪造爬虫,有需要可以做反 DNS 校验。
常用调试命令
#实时看百度爬虫实时访问 tail -f /www/wwwlogs/www.test.com_baiduspider.log #nginx配置语法检查 /www/server/nginx/sbin/nginx -t