Skip to content
0

将Teek网站托管到EdgeOne的Pages

将Teek网站托管到EdgeOne的Pages

把Teek静态文件从云服务器换到edgeone的pages服务里

image-20250727205232312

目录

[toc]

背景

2025年7月27日替换成功,测试成功。💖

把Teek静态文件从云服务器换到edgeone的pages服务里:

此时我的云服务器只提供nginx图床服务、twikoo、umami服务;

当前云服务器 .cnb.yml配置

yaml
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配置

yaml
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上的主域名服务

bash
cd /etc/nginx/conf.d/
mv onedayxyy.cn.conf{,.bak}
nginx -s reload

onedayxyy.cn.conf配置如下:

json
[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服务,观察现象

image-20250727174243518

image-20250727174319336

添加自定义域名:(eo Pages这里域名配置)

image-20250727174349215

image-20250727174418591

image-20250727174434551

image-20250727204627090

阿里云域名配置:

image-20250727204447061

eo这里不需要加速主域名的:

image-20250727204535153

配置完成。

测试

完美:https://onedayxyy.cn/

image-20250727204657924

使用体验

  • 感觉eo Pages比云服务器发布慢好多……(云服务器发布方式只需要4min,而Pages发布需要8min)
  • Pages方式打开网站速度会更快一点;

image-20250728064355016

扩展

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、后端服务(如自建服务器、云函数等),可通过以下步骤扩展加速:
    1. 接入 EdgeOne 控制台:将 onedayxyy.cn 添加为 EdgeOne 的“站点”。
    2. 配置 DNS 解析:将域名 NS 记录指向 EdgeOne 提供的 DNS 服务器(如 ns[1-4].edgeone.tencentcloudapi.com)。
    3. 优化规则
      • 静态资源:优先走 Pages 服务(通过 CNAME 指向 Pages 默认域名)。
      • 动态请求:配置 EdgeOne 的“智能路由”或“回源策略”指向您的源站。

对比总结

功能EdgeOne Pages 内置 CDNEdgeOne 全站加速
加速范围仅静态资源(Pages 托管内容)全站(静态+动态)
自定义规则有限(依赖 Pages 配置)灵活(支持缓存、安全、WAF 等)
适用场景纯静态网站混合架构(前后端分离、API 等)

操作建议

  1. 纯静态网站
    保持当前 Pages 托管即可,无需额外操作,内置 CDN 已最优处理。
  2. 需增强控制
    若需自定义缓存策略、防御 DDoS 或优化 SEO(如自定义 HTTP 头),可启用 EdgeOne 全站加速,但需注意:
    • 避免重复加速:在 EdgeOne 控制台中,为 Pages 服务的路径设置“直连”或优先级规则,防止多层缓存。

常见问题

Q:EdgeOne Pages 和 EdgeOne 全站加速会冲突吗?
A:不会冲突,但需合理配置。例如:

  • onedayxyy.cn 的根路径(/)指向 Pages,子路径(如 /api/)指向其他服务源站。

Q:如何验证 CDN 生效?
A:通过以下命令检查响应头:

bash
curl -I https://onedayxyy.cn
# 若看到 `X-EO-Status: Hit` 或 `X-Cache: Hit` 即为命中 CDN。

如有更复杂需求(如多地域负载均衡),可结合腾讯云 EdgeOne 智能加速 进一步

最近更新