将Teek网站托管到EdgeOne的Pages
将Teek网站托管到EdgeOne的Pages
把Teek静态文件从云服务器换到edgeone的pages服务里
目录
[toc]
背景
2025年7月27日
替换成功,测试成功。💖
把Teek静态文件从云服务器换到edgeone的pages服务里:
此时我的云服务器只提供nginx图床服务、twikoo、umami服务;
当前云服务器 .cnb.yml
配置
master:
push:
- runner:
cpus: 16
services:
- docker
- git-clone-yyds
imports:
- https://cnb.cool/onedayxyy/secret/-/blob/main/envs.yml
docker:
image: docker.cnb.cool/znb/images/node:18
volumes:
- /data/.cache:copy-on-write #声明式的构建缓存
stages:
- name: set env
script: echo -n $(date "+%Y-%m-%d %H:%M")
exports:
info: CUSTOM_ENV_DATE_INFO
- name: 🖨️ 打印环境
if: |
[ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
script: |
node -v && npm -v && yarn -v && pnpm -v
- name: 📦️ 安装依赖
if: |
[ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
script: |
pnpm install
- name: ⚗️ 编译项目
if: |
[ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
script: |
pnpm docs:build # VitePress 专用命令
- name: 🚚 发布制品
if: |
[ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
image: tencentcom/rsync
settings:
user: ${SSH_USER}
key: ${SSH_KEY}
port: 22
hosts:
- ${ECS_IP}
source: docs/.vitepress/dist/
target: /root/rsync/rsync-vitepress/dist/
delete: true
prescript:
- echo "prescript"
- ls -l /root/rsync/rsync-vitepress/dist/
# script:
# - echo "after script"
# - ls -l /root/rsync/rsync-vitepress/dist/
# - date
# # - bash /root/website_music.sh
# - aliyun cdn RefreshObjectCaches --ObjectType File --ObjectPath "onedayxyy.cn/" #刷新阿里云cdn缓存
- name: 🧘♂️ 刷新缓存
image: docker.cnb.cool/znb/cdn-refresh
settings:
ak: "${TENCENT_OPSRE_AK}"
sk: "${TENCENT_OPSRE_SK}"
kind: "tencenteo"
rtype: "path"
domain: "onedayxyy.cn"
urls:
- "https://onedayxyy.cn/"
#同步仓库到gitee
- name: sync to gitee
image: tencentcom/git-sync
settings:
branch: master
auth_type: https
username: ${GIT_USERNAME}
password: ${GIT_ACCESS_TOKEN}
target_url: https://gitee.com/onlyonexl/vitepress-theme-teek-one-private.git
# git_email: 'github-actions[bot]@users.noreply.github.com'
- name: 🔔 发布通知
image: tencentcom/wecom-message
settings:
robot: ${WECOM_BOT}
msgType: markdown
content: |
> **🎉 One Blog 又一次发布成功啦!**
> **构建时间:** $CUSTOM_ENV_DATE_INFO
> **构建id:** $CNB_BUILD_ID
> **提交id:** $CNB_COMMIT_SHORT
> **构建分支:** $CNB_BRANCH
> **提交信息:** $CNB_COMMIT_MESSAGE_TITLE
> **提交者:** $CNB_COMMITTER
> **仓库地址:** [$CNB_REPO_URL_HTTPS]($CNB_REPO_URL_HTTPS)
> **我的网站:** [onedayxyy.cn](https://onedayxyy.cn/)
替换后 Pages .cnb.yml
配置
master:
push:
- runner:
cpus: 16
services:
- docker
- git-clone-yyds
imports:
- https://cnb.cool/onedayxyy/secret/-/blob/main/envs.yml
docker:
image: docker.cnb.cool/znb/images/node:18
volumes:
- /data/.cache:copy-on-write #声明式的构建缓存
stages:
- name: set env
script: echo -n $(date "+%Y-%m-%d %H:%M")
exports:
info: CUSTOM_ENV_DATE_INFO
- name: 🖨️ 打印环境
if: |
[ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
script: |
node -v && npm -v && yarn -v && pnpm -v
- name: 📦️ 安装依赖
if: |
[ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
script: |
pnpm install
- name: ⚗️ 编译项目
if: |
[ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
script: |
pnpm docs:build # VitePress 专用命令
- name: 🚚 部署到Pages
if: |
[ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
image: node:22
script: npx edgeone pages deploy ./docs/.vitepress/dist --name vitepress-theme-teek-one-private --token $EDGEONE_PAGES_API_TOKEN
# - name: 🚚 发布制品 (把Teek静态文件从云服务器)
# if: |
# [ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
# image: tencentcom/rsync
# settings:
# user: ${SSH_USER}
# key: ${SSH_KEY}
# port: 22
# hosts:
# - ${ECS_IP}
# source: docs/.vitepress/dist/
# target: /root/rsync/rsync-vitepress/dist/
# delete: true
# prescript:
# - echo "prescript"
# - ls -l /root/rsync/rsync-vitepress/dist/
# script:
# - echo "after script"
# - ls -l /root/rsync/rsync-vitepress/dist/
# - date
# # - bash /root/website_music.sh
# - aliyun cdn RefreshObjectCaches --ObjectType File --ObjectPath "onedayxyy.cn/" #刷新阿里云cdn缓存
# - name: 🧘♂️ 刷新缓存
# image: docker.cnb.cool/znb/cdn-refresh
# settings:
# ak: "${TENCENT_OPSRE_AK}"
# sk: "${TENCENT_OPSRE_SK}"
# kind: "tencenteo"
# rtype: "path"
# domain: "onedayxyy.cn"
# urls:
# - "https://onedayxyy.cn/"
#同步仓库到gitee
- name: sync to gitee
image: tencentcom/git-sync
settings:
branch: master
auth_type: https
username: ${GIT_USERNAME}
password: ${GIT_ACCESS_TOKEN}
target_url: https://gitee.com/onlyonexl/vitepress-theme-teek-one-private.git
# git_email: 'github-actions[bot]@users.noreply.github.com'
- name: 🔔 发布通知
image: tencentcom/wecom-message
settings:
robot: ${WECOM_BOT}
msgType: markdown
content: |
> **🎉 One Blog 又一次发布成功啦!**
> **构建时间:** $CUSTOM_ENV_DATE_INFO
> **构建id:** $CNB_BUILD_ID
> **提交id:** $CNB_COMMIT_SHORT
> **构建分支:** $CNB_BRANCH
> **提交信息:** $CNB_COMMIT_MESSAGE_TITLE
> **提交者:** $CNB_COMMITTER
> **仓库地址:** [$CNB_REPO_URL_HTTPS]($CNB_REPO_URL_HTTPS)
> **我的网站:** [onedayxyy.cn](https://onedayxyy.cn/)
关闭nginx上的主域名服务
cd /etc/nginx/conf.d/
mv onedayxyy.cn.conf{,.bak}
nginx -s reload
onedayxyy.cn.conf
配置如下:
[root@wiki conf.d]# cat onedayxyy.cn.conf.bak
server {
listen 80;
server_name onedayxyy.cn;
#配置https重定向
return 301 https://$host$request_uri;
}
server {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
listen 443 ssl;
server_name onedayxyy.cn;
root /root/rsync/rsync-vitepress/dist;
location / {
index index.html index.htm;
try_files $uri $uri.html $uri/ =404;
# non existent pages
error_page 404 /404.html;
# a folder without index.html raises 403 in this setup
error_page 403 /404.html;
# adjust caching headers
# files in the assets folder have hashes filenames
location ~* ^/assets/ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
location /time-line {
alias /root/time-line;
index index.html index.htm;
}
ssl_certificate /etc/letsencrypt/live/onedayxyy.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/onedayxyy.cn/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000";
access_log /var/log/nginx/onedayxyy.cn.https.log;
}
来到eo pages服务
此时,直接推送本地仓库,再来到eo pages服务,观察现象
添加自定义域名:(eo Pages这里域名配置)
阿里云域名配置:
eo这里不需要加速主域名的:
配置完成。
测试
使用体验
- 感觉eo Pages比云服务器发布慢好多……(云服务器发布方式只需要4min,而Pages发布需要8min)
- Pages方式打开网站速度会更快一点;
扩展
gpt
我现在把自己的静态网站托管在了腾讯的EdgeOne的Pages服务里(我的域名为onedayxyy.cn),请问: 1.EdgeOne的Pages是不是自带cdn加速呢? 2.如果EdgeOne的Pages自带cdn加速,我还需要用腾讯的EdgeOne给自己主站域名onedayxyy.cn加速嘛?
回答
针对您关于 腾讯云 EdgeOne Pages 服务 的 CDN 加速和域名优化问题,以下是详细解答:
1. EdgeOne Pages 是否自带 CDN 加速?
是的,EdgeOne Pages 默认集成 CDN 加速,具体特性如下:
- 全球节点覆盖:依托腾讯云全球 2800+ 边缘节点,自动缓存静态资源(HTML/CSS/JS/图片等)。
- 智能缓存策略:默认遵循
Cache-Control
头部配置,支持自定义缓存规则(如文件类型、路径匹配)。 - HTTPS 加速:自动签发免费 SSL 证书(支持 TLS 1.3),强制 HTTPS 访问提升安全性。
- 性能优化:支持 Brotli/Gzip 压缩、HTTP/2、QUIC 协议等加速技术。
验证方法:
访问您的网站 onedayxyy.cn
,通过浏览器开发者工具(Network 面板)检查响应头,若存在 X-Cache-Lookup: Hit From EdgeOne
或类似字段,即表示命中 CDN。
2. 是否需要额外为 onedayxyy.cn
启用 EdgeOne 加速?
需分场景判断:
场景一:仅使用 EdgeOne Pages 托管静态网站
- 无需额外配置:
Pages 内置的 CDN 已足够覆盖静态内容加速需求,直接访问域名onedayxyy.cn
即可享受加速效果。
场景二:需加速动态内容或全站(含非-Pages 服务)
- 建议启用 EdgeOne 全站加速:
若您的onedayxyy.cn
还包含动态 API、后端服务(如自建服务器、云函数等),可通过以下步骤扩展加速:- 接入 EdgeOne 控制台:将
onedayxyy.cn
添加为 EdgeOne 的“站点”。 - 配置 DNS 解析:将域名 NS 记录指向 EdgeOne 提供的 DNS 服务器(如
ns[1-4].edgeone.tencentcloudapi.com
)。 - 优化规则:
- 静态资源:优先走 Pages 服务(通过 CNAME 指向 Pages 默认域名)。
- 动态请求:配置 EdgeOne 的“智能路由”或“回源策略”指向您的源站。
- 接入 EdgeOne 控制台:将
对比总结
功能 | EdgeOne Pages 内置 CDN | EdgeOne 全站加速 |
---|---|---|
加速范围 | 仅静态资源(Pages 托管内容) | 全站(静态+动态) |
自定义规则 | 有限(依赖 Pages 配置) | 灵活(支持缓存、安全、WAF 等) |
适用场景 | 纯静态网站 | 混合架构(前后端分离、API 等) |
操作建议
- 纯静态网站:
保持当前 Pages 托管即可,无需额外操作,内置 CDN 已最优处理。 - 需增强控制:
若需自定义缓存策略、防御 DDoS 或优化 SEO(如自定义 HTTP 头),可启用 EdgeOne 全站加速,但需注意:- 避免重复加速:在 EdgeOne 控制台中,为 Pages 服务的路径设置“直连”或优先级规则,防止多层缓存。
常见问题
Q:EdgeOne Pages 和 EdgeOne 全站加速会冲突吗?
A:不会冲突,但需合理配置。例如:
- 将
onedayxyy.cn
的根路径(/
)指向 Pages,子路径(如/api/
)指向其他服务源站。
Q:如何验证 CDN 生效?
A:通过以下命令检查响应头:
curl -I https://onedayxyy.cn
# 若看到 `X-EO-Status: Hit` 或 `X-Cache: Hit` 即为命中 CDN。
如有更复杂需求(如多地域负载均衡),可结合腾讯云 EdgeOne 智能加速 进一步