WebP2P是一种基于浏览器和点对点网络的加速分发协议,能在宝塔面板搭建的网站中,让访客终端互相分享资源,从而减轻源站带宽压力。下面以常见的Linux宝塔环境为例,说明具体的配置方式。

一、准备运行环境
在宝塔面板中确认已安装Nginx或Apache,并拥有可用域名。WebP2P一般依赖一个Tracker调度服务,用来登记节点信息。我们可以在宝塔的终端里用Node.js快速启动。
1. 安装Node环境
进入宝塔软件商店,搜索Node.js并安装稳定版,或者使用命令行:
# 使用宝塔终端执行 curl -sL https://deb.nodesource.com/setup_18.x | bash - apt-get install -y nodejs node -v
2. 部署Tracker服务
新建一个目录,写入简单的Tracker脚本,它负责收集各浏览器节点上报的地址。
// tracker.js 简单的WebP2P信令服务
const http = require('http');
const peers = {};
http.createServer((req, res) => {
if (req.method === 'POST') {
let body = '';
req.on('data', c => body += c);
req.on('end', () => {
const data = JSON.parse(body);
peers[data.room] = peers[data.room] || [];
peers[data.room].push(data.peer);
res.end(JSON.stringify(peers[data.room]));
});
} else {
res.end('tracker ok');
}
}).listen(9090, () => console.log('tracker on 9090'));
在宝塔安全页面放行9090端口,然后后台运行:
nohup node tracker.js > tracker.log 2>&1 &
二、在宝塔站点中注入客户端
打开宝塔的网站设置,选择对应站点,进入配置文件或反向代理均可。我们直接在站点根目录的入口HTML里加入WebP2P客户端脚本。
1. 修改前端页面
编辑index.html,在<body>结束前加入以下代码,注意把tracker地址换成你的服务器IP或域名。
<script>
// 简单WebP2P客户端示例
const room = 'demo';
const peer = Math.random().toString(36).slice(2);
fetch('http://你的域名:9090', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({room: room, peer: peer})
}).then(r => r.json()).then(list => {
console.log('已知节点:', list);
});
</script>
2. 使用Nginx补全头信息
若浏览器拦截混合内容,可在宝塔Nginx配置中添加代理,将Tracker转为HTTPS同源接口:
location /tracker {
proxy_pass http://127.0.0.1:9090;
proxy_set_header Host $host;
}
此时前端改为向 /tracker 发请求即可。
三、验证与调优
使用两台不同网络的设备打开网站,观察控制台是否互相拿到节点。可在宝塔文件管理中查看tracker.log确认上报。
| 项目 | 建议值 |
|---|---|
| 节点超时 | 30秒 |
| 单房间上限 | 200节点 |
| 源站回源 | 仅首片 |
通过以上步骤,宝塔面板中的网站就具备了WebP2P加速分发能力。后续可结合边缘节点缓存,把热门文件切片,让访客就近互传,进一步提升性能。