GoCDN · 自建 CDN 系统

主控集中管理 + 多节点分发缓存 | Go + OpenResty | 防 CC · WAF · HTTPS · 流量统计

一、文件清单

文件说明
gocdn-master主控程序(Linux amd64,含管理面板)
gocdn-agent节点程序(Linux amd64,驱动 OpenResty)
install-master.sh主控一键安装脚本
install-node.sh节点一键安装脚本(自动装 OpenResty)
uninstall.sh卸载脚本

以下命令中的 www.sdcdn.org 为本文件站域名;所有命令在目标服务器的 root 终端执行。

二、安装主控(控制面板服务器,1 台)

要求:CentOS 7+ / Ubuntu 18+,root 权限。复制下面这一行,在主控服务器执行即可(自动检测并安装 wget,下载主控并完成全部安装):

yum install -y wget 2>/dev/null || apt-get install -y wget; wget -q http://www.sdcdn.org/gocdn/master.sh && bash master.sh

安装完成后面板地址为 http://主控IP:8080,查看首次管理员密码:

journalctl -u gocdn-master | grep 密码

用户名 admin,登录后请立即在面板右上角修改密码。

面板打不开?到云服务商控制台「安全组/防火墙」放行 TCP 8080 端口。想换端口:bash master.sh -l :9000

三、安装 CDN 节点(一台或多台)

先在面板 节点管理 → 添加节点 创建节点并复制 Token,然后在节点服务器执行这一行(替换主控IP和Token):

yum install -y wget 2>/dev/null || apt-get install -y wget; wget -q http://www.sdcdn.org/gocdn/node.sh && bash node.sh -m http://主控IP:8080 -n node1 -t 粘贴Token

脚本会自动安装 OpenResty、注册 systemd 服务并启动,约 10 秒后面板显示节点在线。

节点无需开放管理端口;80/443 为业务端口。脚本已自动放行 firewalld/ufw。

四、接入一个网站(面板操作)

  1. 面板 → 证书管理:上传源站域名的 PEM 证书与私钥(可选,用于 HTTPS);
  2. 面板 → 站点管理 → 添加站点:填域名(支持 *.example.com)、源站 IP:端口;
  3. 按需开启缓存规则(如 jpg,png,css,js 缓存 86400 秒)、防 CC(JS 挑战)、WAF 黑名单;
  4. 勾选分配节点(不勾选不下发)→ 保存,节点 10 秒内自动生效;
  5. 到 DNS 把网站域名 CNAME 或 A 记录指向 CDN 节点 IP,完成接入。

验证:直接访问域名,响应头 X-Cache: HIT/MISS 说明缓存链路已通。

五、常用运维命令

# 主控
systemctl restart gocdn-master          # 重启主控
journalctl -u gocdn-master -f           # 看主控日志

# 节点
systemctl restart gocdn-agent           # 重启节点代理
journalctl -u gocdn-agent -f            # 看节点日志
openresty -t -c /usr/local/gocdn/node/conf/nginx.conf   # 校验配置

# 卸载(主控/节点通用)
bash uninstall.sh

六、端口与安全

端口位置用途
8080主控面板 + 节点 API(建议防火墙限制来源或套反代)
80 / 443节点CDN 对外服务
9502节点本机统计端点,仅 127.0.0.1,勿对外开放

GoCDN v1.0.0 · 架构与 cdnfly 同类(主控+被控拉取模式)· 详细文档见项目 docs 目录