1.
概述与准备工作
- 目标:用台湾机房的双向CN2出口(保证大陆->台湾和台湾->大陆优质链路),结合云空间(对象存储,如OSS/S3)做原点,配置CDN实现全站加速与容灾。
- 准备:台湾VPS/独服(已开通CN2双向)、云空间Bucket、CDN服务商账号、域名DNS控制权、SSH和管理员权限。
2.
确认双向CN2链路与备案/路由
- 步骤:SSH到台湾服务器,运行mtr/traceroute到国内主要节点(如北京、上海),命令:mtr -rwzbc 100 1.2.3.4。确认路径走CN2线(输出中有cn2或telecom/CT)。
- 若非CN2联系机房开通,或要求BGP策略;备案:如果面向大陆用户,准备 ICP 备案资料并在CDN侧配合备案域名。
3.
云空间(对象存储)作为静态资源原点的设置
- 在云厂商控制台创建Bucket,开启静态网站托管(若有)。设置跨域(CORS)规则,允许站点域名。
- 给Bucket绑定自定义域名(CNAME)或作为CDN的备用源,生成访问密钥和签名策略(若使用私有桶)。
4.
台湾服务器作为动态请求的原点配置
- 安装Nginx(或其他Web服务器):apt install nginx;配置server_name为主域名,并设置location /api/反向代理到应用。
- 在Nginx中添加header以便CDN识别真实IP:proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for。
5.
配置CDN的多源回源策略(Origin Pull + Backup)
- 在CDN控制台添加主源为云空间Bucket(用于静态资源),备用源为台湾服务器(用于当对象不存在或云空间慢时回源)。
- 设置回源规则:静态后缀(.jpg .css .js)优先走对象存储,动态路径走台湾服务器;配置回源权重与健康检查。
6.
DNS与CNAME配置步骤
- 将加速域名的DNS记录改为CDN提供的CNAME(例如 cdn.example.com CNAME abc.cdnprovider.com)。
- 若要主域名(www.example.com)使用CDN,请在域名服务商处设置A记录或使用ALIAS/ANAME指向CDN;确保DNS生效并在控制台验证。
7.
SSL/TLS证书与HTTPS配置
- 在CDN端申请或上传证书(支持Let's Encrypt或自有证书)。启用HTTPS并选择HTTPS回源(强烈建议)。
- 在台湾服务器和云空间启用证书或允许CDN使用回源证书验证(若使用私有回源,配置证书或IP白名单)。
8.
缓存策略与Cache-Control精细化
- 静态文件:在云空间或台湾服务器设置响应头 Cache-Control: public, max-age=31536000;并使用文件名带版本号(hash)避免缓存问题。
- 动态内容:设置Cache-Control: no-cache或短TTL,并使用CDN的动态缓存规则(按Query参数或Cookie区分缓存键)。
9.
缓存键与忽略参数设置
- 在CDN配置中设置缓存键,通常包含Host+Path,不包含不必要的Query参数(如utm_source)。通过白名单/黑名单管理保留的参数。
- 测试:curl -I https://cdn.example.com/js/app.js 查看响应头 X-Cache 或 Age 确认命中率。
10.
CDN边缘优化:压缩与协议
- 在CDN中开启 Brotli 与 Gzip 压缩,开启HTTP/2或QUIC/HTTP3以减少延迟。确保服务器提供Vary: Accept-Encoding。
- 对图片使用CDN的图片服务(WebP转换、裁剪)以减小流量。
11.
缓存预热与文件上传流程
- 静态资源发布:先上传到云空间并使用固定路径,然后CDN该路径配置为Pull模式。发布后使用CDN预热接口批量预取(缓存预热)。
- 示例:cdn provider API POST /prefetch with body urls: ["https://cdn.example.com/img/a.png"]。
12.
回源性能与容灾策略
- 健康检查配置:对备用源(台湾服务器)和主源(云空间)设置HTTP状态检测与响应时间阈值。
- 容灾:开启地域回源与回退,当云空间不可用时切到台湾服务器或本地备份(并启用限流避免过载)。
13.
安全:WAF、防盗链、防DDoS
- 在CDN启用WAF规则、IP黑白名单、速率限制。启用防盗链(Referer白名单)或签名URL(私有Bucket)。
- 配置访问日志并定期审计异常流量。
14.
监控与性能测试
- 使用curl -I、time,mtr及CDN控制台监控面板检查:命中率、回源流量、热门文件。设置告警(回源错误率、RTT上升)。
- 典型命令:curl -w "@curl-format.txt" -o /dev/null -s https://cdn.example.com/index.html(自定义输出时间统计)。
15.
运维操作:刷新、失效与版本管理
- 常用操作:文件更新后通过CDN控制台或API发起Purge(按路径或按目录),建议使用版本化文件名减少频繁清理。
- 示例API:POST /purge { "urls":["https://cdn.example.com/css/style.css"] }。
16.
成本与计费优化技巧
- 静态多走对象存储+CDN Pull,减少台湾服务器带宽费用;设置合理TTL减少回源请求。评估按流量计费与按请求计费的平衡。
- 启用流量节流、图片压缩与长缓存策略来控制成本。
17.
常见问题与排查步骤
- 页面资源未命中CDN:检查CNAME是否生效、DNS TTL、是否开启了自定义证书、以及CDN缓存规则是否匹配。
- 回源错误(502/504):查看回源是否被IP白名单拒绝、回源超时设置、服务器负载和防火墙规则。
18.
问:为什么要同时使用台湾服务器与云空间作为CDN原点?
答案:云空间适合托管大量静态资源、成本低且稳定,而台湾服务器可处理需要后端计算或动态请求,双源能结合两者优点,实现性能与成本平衡,并提供回源容灾。
19.
问:如何验证CDN是否走的是CN2优质链路?
答案:使用mtr/traceroute对访问CDN加速域或回源IP进行路由跟踪,观察路径中是否经过包含CN2/telecom节点;同时在CDN或机房确认BGP策略和运营商标签。
20.
问:更新静态文件后如何保证用户立刻生效且不频繁清缓存?
答案:使用文件名版本化(如app.v20260501.js),发布新文件并修改引用,旧文件保留TTL过期后自动失效;必要时对新路径做预热而非全量Purge。
来源:台湾服务器双向cn2 云空间在CDN加速中的协同使用技巧