1.1 明确目标:读取量、并发连接、目标用户主要在香港还是泛亚,是否需要视频/大文件加速、是否需WAF/DDoS保护。
1.2 选机房与CDN厂商:优先考虑在香港有PoP的CDN(如Akamai、Cloudflare、Fastly、本地厂商等)与在香港有机柜或云机房的负载均衡(如阿里云香港、AWS ap-east-1、Google、或本地ISP)。对比Anycast支持、TLS卸载、缓存定制、日志与API。
2.1 拓扑:客户端 → CDN Anycast(香港PoP)→ 负载均衡器(香港内网或云LB)→ 后端服务器(机柜或实例)。
2.2 DNS:把站点CNAME指向CDN提供的域名;若使用GSLB多机房,使用低TTL(60-300s)并在DNS中配置健康检查策略。
3.1 创建域名:在CDN控制台添加域名,选择加速区域(大陆/港澳台/全球),选择HTTPS。
3.2 源站设置:填写源站地址(IP或域名),建议使用HTTP(S)回源并限定白名单只允许CDN回源IP。
3.3 缓存策略:对静态资源(.css/.js/.jpg/.mp4)设置长缓存(max-age 7天以上),对动态页面设置按Cookie/Query分发或不缓存。
4.1 使用CDN托管证书:大多数CDN支持自动申请Let's Encrypt或交付自有证书,推荐启用自动续期。
4.2 回源TLS:为回源启用HTTPS并部署有效证书(自签名需在CDN上添加信任或禁用证书校验),在Nginx上开启TLS 1.2/1.3,配置ECDHE曲线与现代加密套件。
5.1 基础Nginx反向代理配置示例(端口和upstream):
upstream backend { server 10.0.0.11 weight=5; server 10.0.0.12 weight=5; }
5.2 健康检查:使用Nginx的ngx_http_healthcheck_module或外部脚本定期检查后端HTTP 200;keepalived负责虚拟IP漂移。
5.3 粘性会话:如需保持会话,可使用基于Cookie或ip_hash,但优先改造为无状态以便横向扩展。
6.1 在控制台创建L4或L7负载均衡,绑定香港可用区的后端实例,配置健康检查(间隔5-10s,超时2-3s)。
6.2 自动伸缩:设置监控指标(CPU、连接数、响应时间)触发扩容策略,确保流量突增时自动加实例。
7.1 缓存Key:通常使用URL + Query(可按需求忽略query或部分参数),在CDN上开启忽略特定cookie与query以提升命中率。
7.2 边缘计算:如需要个性化返回,可使用CDN边缘脚本(Edge Workers)进行A/B、重写或轻量化渲染,降低回源。
8.1 指标:监控Time to First Byte(TTFB)、CDN命中率、后端响应时间、错误率、带宽、并发连接。
8.2 日志:启用CDN访问日志并导入Logstash/ELK或云日志服务;后端启用应用日志与Nginx访问日志。
8.3 演练:做故障切换演练(停止一个后端或一个PoP),验证健康检查、自动扩容与DNS切换行为。
9.1 基本网络测试:从香港机房执行:
ping -c 10 yourdomain.com、traceroute yourdomain.com、mtr -rw yourdomain.com。
9.2 压测:使用wrk或vegeta:
w rk -t12 -c400 -d60s https://yourdomain.com/,观察95%响应时间与错误码。
9.3 带宽与吞吐:使用iperf3在机房内测两台服务器间网络性能。
10.1 WAF规则:在CDN或负载均衡器上启用WAF与速率限制,设置常见规则(SQLi、XSS、恶意bot)。
10.2 DDoS:使用CDN提供的DDoS清洗与黑洞阈值,必要时与ISP或云厂商协同放大防护。
10.3 日志保留与隐私:遵守本地与客户要求,设置合规的日志保留与访问控制。
问:为什么要把DNS指向CDN而不是直接指向负载均衡器?
答:将DNS指向CDN可以利用Anycast与就近PoP减少延迟、获得缓存命中并减轻回源流量;CDN还能提供TLS卸载、WAF与DDoS保护,若直接指向LB则失去边缘加速与安全防护优势。
问:如何验证CDN的缓存命中率与回源压力?
答:通过CDN控制台观察命中率指标与回源带宽,分析访问日志(x-cache或X-Cache-Status头),用curl查看单个资源是否命中(响应头如X-Cache: HIT/ MISS),并用压力测试工具在高并发下监测回源请求数。
问:遇到香港本地网络波动,优先排查哪些环节?
答:先用traceroute/mtr定位丢包或跃点延迟(判断是用户ISP到CDN PoP还是PoP到机房),再检查CDN PoP健康与负载,最后排查机房内网与后端服务器负载与连接数。