宝塔网站统计
宝塔网站统计(bt-stats)是一款以宝塔面板插件形式运行的轻量级、自托管网站访问分析系统。本教程适用于 2.0 版本。
产品特点
- 自托管:统计数据保存在自己的服务器中,不经过第三方平台。
- 高性能:采用 Go 采集后端和 DuckDB 列存引擎,单机可承载日均百万 PV。
- 低资源占用:无需安装 MySQL 或 PostgreSQL,嵌入式数据库开箱即用。
- 准确可靠:通过 Cookie 标识访客,区分新访客与回访客。
竞品对比
| 对比指标 | 宝塔网站统计(bt-stats) | 宝塔监控报表 | 百度统计 | 51LA V5 | Umami |
|---|---|---|---|---|---|
| 采集方式 | 前端 JS 采集 | 服务器日志解析 | 前端 JS 采集 | 前端 JS 采集 | 前端 JS 采集(无 Cookie) |
| 数据准确度 | 高:JS + Cookie | 完整日志解析,包含蜘蛛与爬虫 | 高:JS + Cookie | 高:JS + Cookie | JS + IP 分析,数据可能存在较大差异 |
| 部署模式 | 私有化部署 | 私有化部署 | SaaS 云端 | SaaS 云端 | 开源自托管或官方云 |
| 数据库依赖 | DuckDB 嵌入式列式存储 | SQLite 嵌入式数据库 | 云端 | 云端 | PostgreSQL 或 MySQL |
| Web Vitals 性能指标 | 支持 | 不支持前端性能指标 | 支持 | 需使用额外产品 | 支持 |
| 会话回放 | 2.0 支持 | 不支持 | 不支持 | 付费版支持 | 支持 |
| 转化漏斗 | 支持 | 不支持 | 支持 | 支持 | 支持 |
| 热力图 | 支持 | 不支持 | 支持 | 支持 | 不支持 |
| 蜘蛛 / 爬虫统计 | 不采集 | 支持,可区分真假蜘蛛 | 不采集 | 不采集 | 不采集 |
| UTM / 广告追踪 | 支持 | 不支持 | 支持百度推广 | 支持 | 支持 |
| 隐私合规 | 本地存储,使用 Cookie 标识访客 | 日志保留 IP | 数据上传百度 | 数据上传 51LA | 默认无 Cookie,适合 GDPR 场景 |
| 多站点管理 | 支持 | 支持 | 支持 | 支持 | 支持 |
| 价格 | 宝塔专业版、企业版包含,或单独购买插件 | 宝塔专业版、企业版包含,或单独购买插件 | 基础功能免费,高级能力收费 | 基础功能免费,高级功能付费 | 自托管免费,云版按量付费 |
| 适用场景 | 私有化部署、网站运营 | 私有化部署、网站运维 | 网站运营 | 网站运营 | 私有化部署、网站运营 |
单独购买宝塔网站统计插件会附送宝塔监控报表。已购买宝塔监控报表的用户,将同步获得剩余有效期对应的宝塔网站统计使用权限。
功能矩阵
| 功能模块 | 说明 |
|---|---|
| 概览看板 | 查看 PV、UV、IP、跳出率、平均访问时长和活跃用户趋势 |
| 访问分析 | 查看入口页面和出口页面排名 |
| 来源分析 | 分析直接访问、搜索引擎、社交平台、外链、付费推广和 UTM 参数等来源 |
| 访客分析 | 按地域、浏览器、操作系统、设备、屏幕和语言分析访客分布 |
| 会话列表 | 分页查看 Session 和单个会话的完整行为日志 |
| 实时访客 | 查看在线访客及其实时访问轨迹 |
| 用户旅程 | 分析页面访问路径排名和页面跳转事件流 |
| 广告追踪 | 统计 UTM 五参数(source、medium、campaign、content、term)及广告平台 Click ID |
| 页面性能 | 查看 LCP、INP、CLS、FCP、TTFB 等 Web Vitals 指标及趋势 |
| 会话回放 | 还原访客的鼠标移动、点击、滚动和页面跳转等操作 |
| 热力图 | 查看指定页面的点击热度分布,并按设备类型筛选 |
| 转化漏斗 | 自定义转化节点,查看各环节的访客数、转化率和流失率 |
| IP 地理分布 | 查看访客 IP 的国家和省份分布 |
| 数据大屏 | 通过独立 URL 展示核心指标和 IP 地域分布,并支持用户权限划分 |

快速开始
环境要求
| 项目 | 要求 |
|---|---|
| 服务器 | AMD 或 ARM 架构的 Linux 服务器 |
| 内存 | 最低 1 GB,推荐 2 GB 及以上 |
| 磁盘 | 基础占用约 200 MB;日均 1 万 PV 时,每月约增加 100 MB |
| 面板 | 宝塔 Linux 面板 |
| Web 服务 | Nginx 或 Apache(Apache 仅支持手动配置) |
安装插件
登录宝塔 Linux 面板,进入【软件商店】,搜索并安装【宝塔网站统计】。安装完成后,打开插件配置页面。
开启网站统计
在插件的【网站列表】中添加或找到需要统计的站点,然后选择自动或手动模式开启统计。
如果站点使用了 CDN,请选择对应的 CDN 厂商(Cloudflare、阿里云或腾讯云),以便获取真实访客 IP。已经在面板中开启全局 CDN 的站点可以忽略此项。

开启统计后,请清除 CDN 缓存,或将以下路径加入 CDN 缓存白名单,避免统计及回放脚本无法下发:
/bt-stats.js
/bt-stats.gif
/bt-replay.js
/bt-replay-config
/bt-stats-replay
以 Cloudflare 为例,可以在【缓存】>【配置】中清除缓存。

部署跟踪脚本
自动部署
插件会自动修改站点的 Nginx 配置并注入跟踪脚本,无需修改网站代码。部署后,访问者打开页面时会自动上报统计数据。
手动部署
自动部署失效、站点使用反向代理或 Web 服务为 Apache 时,请使用手动部署。
-
选择以下任一方式部署插件生成的统计代码:
-
方式一(Nginx):在网站 Nginx 配置中使用
sub_filter,将统计代码插入</head>标签前。sub_filter '</head>' '【在此处粘贴插件生成的统计代码】</head>'; -
方式二(推荐):将统计代码粘贴到网站所有页面的
</head>标签前。建议放入header.htm等公共页头模板,实现一次部署、全站生效。如果需要在独立 JavaScript 文件中调用,请去掉统计代码首尾的
<script>和</script>标签,只保留核心代码。使用 CDN 的站点还需要刷新 CDN 缓存。
-
-
如果网站使用反向代理,请在
proxy_pass配置下添加:proxy_set_header Accept-Encoding ""; -
按照插件界面提示检测配置并开启统计。

核心运行路径
| 路径 | 用途 |
|---|---|
/bt-stats.js | 加载网站统计跟踪脚本 |
/bt-stats.gif | 上报访客统计数据 |
验证部署
- 访问目标网站的任意页面。
- 打开浏览器开发者工具,进入【网络】面板。
- 搜索
bt-stats.gif请求。状态码为200,且返回 1 × 1 像素的透明 GIF,表示上报正常。 - 等待几秒后,返回插件概览页面,确认已经生成统计数据。
数据指标说明
核心访问指标
| 指标 | 计算方式 | 说明 |
|---|---|---|
| PV | 页面访问事件总数 | 网站页面的总访问次数 |
| UV | 独立访客数 | 访问网站的独立用户数量 |
| IP | 独立 IP 数 | 访问网站的独立 IP 地址数量 |
| 跳出率 | 单页会话数 / 总会话数 | 仅访问一个页面就离开的会话占比 |
| 平均停留时长 | 总停留时长 / 总会话数 | 单次访问的平均停留时长,最大统计上限为 60 分钟 |
数据统计分位
| 分位指标 | 说明 | 用途 |
|---|---|---|
| P50 | 50% 的数据不高于该值,即中位数 | 观察网站的常态访问或性能水平 |
| P75 | 75% 的数据不高于该值 | 分析多数流量中的较差体验 |
| P95 | 95% 的数据不高于该值 | 排查长尾异常和慢请求 |
Web Vitals 性能评分
| 指标 | 说明 | 优秀 | 良好 | 一般 | 较差 |
|---|---|---|---|---|---|
| LCP | 最大内容绘制 | ≤ 1.5 s | ≤ 2.5 s | ≤ 4 s | > 4 s |
| INP | 交互响应 | ≤ 100 ms | ≤ 200 ms | ≤ 500 ms | > 500 ms |
| CLS | 布局偏移 | ≤ 0.05 | ≤ 0.1 | ≤ 0.25 | > 0.25 |
| FCP | 首次内容绘制 | ≤ 1 s | ≤ 1.8 s | ≤ 3 s | > 3 s |
| TTFB | 首字节时间 | ≤ 400 ms | ≤ 800 ms | ≤ 1.8 s | > 1.8 s |
2.0 功能配置
热力图
热力图展示访客在页面上的点击分布,可用于评估页面布局、按钮和广告位的效果。
- 进入插件的【热力图】页面,添加需要监控的页面地址并保存。
- 产生访问数据后,打开对应页面的热力图。
- 按需切换 PC、平板或移动端,查看不同视口下的点击热度。

热力图预览通过 iframe 加载目标页面。如果站点设置了 X-Frame-Options: SAMEORIGIN 或 CSP frame-ancestors 限制,需要移除限制或放行面板的域名或 IP。插件一键写入失败时,请在站点的 Nginx 或 Apache 配置中手动添加 CSP 放行规则,并将 frame-ancestors 的值替换为面板的真实域名或 IP。

转化漏斗
漏斗可以自定义转化流程节点,统计每个环节的访客数量、转化率和流失率,帮助定位流失较多的步骤。
例如,可以配置“访问首页(index.html)→ 进入下载页(download.html)→ 完成登录(/login.html)”三步转化流程。产生数据后,漏斗图会分别展示进入人数、流失人数和每一步的转化率。

会话回放
会话回放可以还原访客的鼠标移动、点击、滚动和页面跳转等操作,用于定位页面卡顿、按钮无响应、流程中断等体验问题。
站点开启统计后,进入【网站】>【网站设置】,开启回放并设置采样率和路径过滤规则。
| 设置项 | 说明 |
|---|---|
| 回放开关 | 开启或关闭该站点的回放采集 |
| 采样率 | 0~1 之间的小数,表示录制访客的比例;默认 0.1(10%),0.5 表示录制 50% 的访客 |
| 路径过滤 | 不录制的页面路径,支持 /login、/admin/* 等规则 |
回放功能使用以下请求:
| 请求 | 说明 |
|---|---|
/bt-replay.js | 下发回放录制脚本 |
/bt-replay-config | 下发回放配置;sample=1 表示开始录制,sample=0 表示未开始或未被采样 |
/bt-stats-replay | 上报回放数据块;正常响应状态码为 204,返回 200 表示请求被拦截,数据不会入库 |
回放配置响应示例:
{
"sample": 0,
"blockUrls": null,
"recordingId": "80c8e723-888b-4c56-b5e2-34fed4460430"
}
回放数据默认启用严格文本脱敏,输入框和敏感文本等内容不会被录制。
自动开启统计的站点会自动注入回放配置。手动开启统计的站点在启用回放后,还需要更新所有页面 </head> 标签前的统计代码,加入回放脚本。
数据大屏
数据大屏将核心访问指标与 IP 地域分布集中展示,适合运营会议和监控室投屏。
在插件【大屏设置】中开启大屏,配置访问端口、安全路由或域名,然后添加大屏登录用户并为其授权站点。配置完成后,通过生成的独立 URL 访问大屏。


常见问题
为什么统计数据比实际访问量少?
可能原因如下:
- 跟踪脚本没有覆盖网站的所有页面。
- 浏览器插件或广告拦截工具拦截了统计脚本。
- 后端过滤了不合法或无效的上报数据。
- CDN IP 识别配置不正确,导致独立 IP 或访客统计出现偏差。
支持哪些浏览器?
支持 Chrome、Firefox、Safari 和 Edge 等现代浏览器。Web Vitals 性能指标仅在支持 PerformanceObserver API 的浏览器中采集。
数据能保存多久?
磁盘空间充足时,数据可以永久保存。日均 1 万 PV 的站点每月约增加 100 MB 数据,请预留足够的磁盘空间。
能否统计多个站点?
支持。可以添加多个站点并分别部署跟踪脚本,各站点的数据相互独立。
如何保护访客隐私?
- 插件使用匿名 Cookie 标识访客,不收集或保存个人身份信息。
- 统计数据仅保存在自己的服务器中,不会上传到第三方平台。
- 会话回放默认启用严格文本脱敏,不录制输入框和敏感文本。