1. 概述与准备工作
在开始之前,确认目标:用香港机房的云服务器(具备BGP多线或多出口能力)配合全球CDN,实现亚太/中国大陆与欧美用户的低延迟访问。准备项:选择支持BGP多线的云厂商或独立IP弹性服务、准备域名、准备服务器镜像(Ubuntu/CentOS)、SSH 访问权限、以及选定的 CDN 服务商账号(支持自定义回源和 TLS)。
2. 选择服务商与网络配置项说明
选择要点:确认厂商在香港有多个运营商的直连或BGP出口(如中国电信/联通/移动与国际骨干)。询问是否支持 BGP Anycast 或多线路回源 IP、是否能提供独立公网 IP。购买时选“BGP 多线”或“带宽包/弹性公网IP(多线)”类产品。获取公网 IP 后记录 ASN、出口节点信息以便后续路由和测试。
3. 建立并初始化云服务器
创建服务器实例并绑定公网 IP,安装基础组件:更新系统并安装 Nginx、Certbot、unzip、htop 等。示例命令(Ubuntu):
apt update && apt upgrade -y
apt install nginx certbot python3-certbot-nginx -y
配置防火墙允许 80/443,常见使用 ufw:
ufw allow 22 && ufw allow 80 && ufw allow 443 && ufw enable
完成后确认能通过公网 IP 访问 Nginx 默认页。
4. Nginx 基础与性能优化配置
在 /etc/nginx/nginx.conf 中调整 worker 数、连接数和缓存等:
worker_processes auto;
worker_connections 10240;
http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; gzip on; gzip_types text/css application/javascript application/json text/html text/xml; }
在站点配置中启用 HTTP/2、开启 gzip、设置合理的 expires 与缓存头,示例 server 块:
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/your.domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your.domain/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
通过 certbot --nginx 获取证书并自动注入配置。
5. 配置 CDN:回源与缓存策略(操作步骤)
1) 在 CDN 控制台添加域名,选择回源类型为“主机名回源”或“IP 回源”,填入香港云服务器公网 IP 或域名。2) 配置回源端口(默认 80/443)、回源协议(推荐 HTTPS 回源),并配置回源鉴权(如设置回源白名单、IP 限制或自签密钥)。3) 在 CDN 缓存规则中设定静态资源缓存(js/css/img 等)长缓存 7-30 天,API/动态页面设置不缓存或短缓存并启用缓存穿透保护。4) 配置回源头部:保留 X-Forwarded-For、Host 和原始用户 UA。5) 设置 HTTPS:上传/使用 CDN 提供的证书或使用 Let’s Encrypt 自动绑定。
6. DNS 与 CNAME 配置
将业务域名的 A 记录或 CNAME 指向 CDN 提供的域名(常见为 xxx.cdnprovider.net)。不要直接将域名指向后端 IP。为了避免解析延迟建议:设置合理 TTL(首次上线可设短 TTL 60-300 秒),确认 DNS 服务商支持全球 Anycast 解析或 GeoDNS(按地域解析到最优 CDN 节点)。
7. 回源加固:防止直接绕过 CDN
为了防止用户直接访问香港 IP绕过 CDN,建议:1) 在服务器防火墙只允许 CDN 的回源 IP 段访问 80/443(CDN 会提供回源 IP 列表);2) Nginx 增加校验头,如要求回源请求带有特定自定义头 X-CDN-Token 并校验其值;3) 对非 CDN 的直接访问返回 403 或重定向到错误页。
8. 性能测试与链路验证(实操命令)
本地或不同区域做 traceroute/mtr 检查路径:
traceroute -I your.domain
mtr -c 50 your.domain
使用 curl 测试 CDN 与回源:
curl -I https://your.domain (检查 Server、Via、X-Cache 等头)
curl -w "@curl-format.txt" -o /dev/null -s https://your.domain (检测 time_connect、time_starttransfer)
可用 webpagetest.org、pingdom、GTmetrix 测全球测速,记录各区域 first byte / TTFB 并对比关闭 CDN 时的差异。
9. BGP 多线注意事项与故障切换实践
通常云厂商已为你处理 BGP 多线路由,但需确认:是否存在不同运营商的出口优先级、是否支持路由策略调整、是否有链路健康检测和自动切换机制。实践步骤是:1) 与厂商沟通获取路由变更窗口;2) 在低峰时模拟单路故障(要求厂商临时断开某运营商出口或调低优先级);3) 观察备份线路是否接管,查看用户延迟是否在可接受范围并记录 MTR 数据。
10. 缓存刷新与发布流程
发布静态资源时,优先使用带版本号的文件名(避免频繁刷新缓存)。必要刷新时:使用 CDN 控制台提供的刷新接口或 API 批量刷新路径(建议挂载到 CI 发布脚本中)。示例:curl -X POST "https://api.cdn.com/purge" -d '{"urls":["/css/app.v2.css"]}' 并使用 API Key 做鉴权。
11. 监控与告警设置
建议建立多维监控:1) 业务层面(响应时间、错误率、缓存命中率)通过 CDN 与应用日志采集;2) 网络层面(丢包、路由变化、带宽利用率)使用 MTR、BGP 监控服务;3) 告警策略:当 TTFB 超过阈值、缓存命中率下降或链路抖动时触发告警并自动打开临时加速策略或回退配置。
12. 常见问题与优化建议
1) 中国大陆用户访问慢:确认 CDN 是否在中国有节点或是否做腾讯云/阿里云/百度云大陆加速;若无,考虑在国内放置备用节点或使用中国境内 CDN 合作。2) HTTPS 回源慢:启用 OCSP stapling、开启 TLS session reuse 并使用现代曲线与 cipher 优化。3) 动静分离:将大流量静态资源完全交给 CDN,减少回源压力。
13. 问:为什么选择香港云服务器做回源而不是海外机房?
问:为什么选择
香港云服务器做回源而不是海外机房?
答:香港机房在连接中国大陆与国际互联网之间延迟较低且路由稳定,且许多 CDN 在香港有良好节点覆盖,回源到香港能减少中国用户的跨洋延迟和复杂路由,同时又能通过国际链路快速触达欧美用户,是兼顾大陆与海外访问的折中方案。
14. 问:如何验证 CDN 是否真正起到加速作用?
问:如何验证 CDN 是否真正起到加速作用?
答:用多地区测试(curl/traceroute/WebPageTest)对比开启与关闭 CDN 的 TTFB、下载时间和路由路径;同时查看响应头中的 X-Cache 或 Via,并统计缓存命中率;若命中率高且各区 TTFB 显著下降,说明 CDN 生效。
15. 问:部署后遇到突发流量或单点故障应如何应对?
问:部署后遇到突发流量或单点故障应如何应对?
答:提前准备弹性扩容策略(自动扩容或增加多机房回源)、开启 CDN 流量清洗与限速规则、设置流量阈值告警,必要时启用 CDN 的回源限流与降级缓存策略,将动态请求降级为缓存响应,快速恢复用户体验。
来源:香港云服务器bgp多线与CDN结合提升全球访问速度的实践经验