镜像站带宽与源站之间的费用分摊,核心原则是“谁受益谁付费、按流量路径归属”,常规做法是回源流量由源站承担,用户访问流量由镜像站或CDN承担。这个结论看起来简单,落地时却牵扯到架构选型、云厂商计费逻辑、甚至跨地域结算,下面把这块掰开揉碎讲清楚。
镜像站与源站的费用本质:两笔账不能混算
很多人把镜像站的带宽费理解成“多买一台服务器”的钱,实际上镜像成本包含两条独立的流量链路:回源链路和下行分发链路,它们各自对谁的钱包负责。
回源流量:源站的“被动支出”
当镜像站命中不到缓存、需要去源站拉取最新数据时,会产生回源流量,这笔流量消耗的是源站的出口带宽,以酷番云为例,源站按固定带宽计费时,回源流量会占用你购买的带宽峰值;按流量计费时,回源流量单独按每GB单价结算,业内专家指出,回源比例通常在5%~20%之间浮动,取决于缓存命中率和内容更新频率。
下行流量:镜像站/CDN的“主动成本”
用户从镜像站拉取内容产生的流量,由镜像站所在服务器或CDN节点承担,这里有个关键差异:如果用CDN做镜像,CDN的流量费通常高于源站直连的带宽费,但省去了自建节点成本。
分摊逻辑必须是“各付各的链路”,否则会出现一个经典误区:把源站按带宽包年付费,却让镜像站按流量付费,结果源站带宽空闲一大截,镜像站流量费却爆表。
镜像站带宽费用谁出?先看架构再说
费用归属没有标准答案,它和你的部署方式强绑定,下面三种场景覆盖多数情况。
自建镜像服务器:全额自付,但可以优化
自建镜像意味着源站和镜像站全是自己的机器,不存在“谁出钱”的问题,只有“如何省钱”的优化空间,此时分摊重点是内部成本核算:
- 源站到镜像站的同步流量更新产生的增量同步流量,本质是源站的出网开销,若同区域机房,走内网可以免流量费;跨地域则按运营商标准收费。
- 用户到镜像站的访问流量:由镜像服务器独立承担,与源站完全隔离。
- 回源流量:仅在缓存未命中时产生,建议通过调整缓存策略将回源比例压到10%以下。
实际操作中,多数自建团队会在源站上限制单IP回源带宽,防止镜像站突发请求打爆源站,例如Nginx配置
limit_req_zone限制回源请求速率,或直接在防火墙里设定源站IP白名单。
CDN做镜像:流量费用分两段,回源单独计
CDN是目前最主流的镜像方案,费用分摊规则也最清晰,以简米云CDN和华为云CDN为例,计费模型通常分为:
| 费用项 | 支付方 | 计费方式 | 备注 |
|---|---|---|---|
| 用户访问CDN节点流量 | 使用方(业务方) | 按GB或带宽峰值计费 | 与源站无关 |
| CDN节点回源流量 | 源站账号 | 按GB计费(部分厂商免收) | 关键是看回源比例 |
| HTTPS请求数 | 使用方 | 按万次计费 | 镜像站访问量大时明显 |
这里的坑在于回源流量费,不少云厂商(如百度智能云)会把回源流量计入源站的公网出流量,如果你源站是按带宽计费(比如买了50Mbps固定带宽),回源流量会和正常用户访问争抢带宽额度,一旦超过就会丢包或限速。
解决方案有两个:
- 源站切换为按流量计费,并将回源流量单独设置阈值告警
- 在CDN控制台开启“分片回源”和“Range回源”,降低回源数据量
跨国镜像:费用分摊出现地域差异
涉及跨国镜像的用户,通常关心“哪边付钱更划算”,举例说明:
- 源站在中国大陆,镜像站部署在新加坡,用户从东南亚访问镜像站,此时源站到新加坡的专线或公网流量费用由你整体承担,但新加坡镜像站的本地带宽费用相对较低。
- 反过来,源站在海外,国内镜像站面向国内用户,费用大头在镜像站的国内BGP带宽,单价远高于海外机房。
行业共识认为,跨境场景下将回源流量通过对象存储中转(源站先推到COS/S3,镜像站从存储拉取)可以避免源站带宽被回源流量耗尽,分摊逻辑也更简单存储的流量费比计算节点的带宽费更便宜。
镜像站怎么收费:按带宽峰值还是按流量,决定分摊结果
这是费用分摊最实际的决策点,两种计费模式对源站和镜像站的影响截然不同。
按固定带宽:省钱但风险集中
如果你镜像站预付费买了固定带宽(比如100Mbps
),那么无论实际跑多少流量,钱都不会变,这种情况下,源站不需要对镜像站做任何费用分摊,唯一要注意的是回源流量别把源站“带崩”。
适合场景:访问量平稳、无突发峰值的站(比如文档类镜像),具体操作:在镜像站服务器上设置流量监控,超过带宽阈值的请求直接返回503或降级到源站。
按实际流量:弹性但费用难控
国内主流云厂商的流量计费单价在20元/GB~0.80元/GB之间(按地域和线路类型浮动),如果镜像站面向全国用户,流量费会非常可观,此时业界实践是将“高热度内容”放在CDN上,“冷门内容”直接回源站拉取。
具体分摊步骤:
- 在源站配置日志分析,统计各URL的回源请求次数和流量占比
- 将热度前20%强制在CDN缓存并延长TTL
- 剩余静态资源回源时走“内网+公网”混合线路以降低成本
实操落地:4个策略把分摊成本压到最低
聊完理论,直接给步骤,以下操作均可在云控制台或命令行实现。
强制降低回源比例
在镜像站或CDN的缓存配置中,将静态文件(图片、CSS、JS)的缓存过期时间设为30天以上,以Nginx反代为例,给回源请求增加Cache-Control: max-age=2592000响应头,动态接口(如API、登录态)单独设置60秒~5分钟的缓存,避免源站被刷。
流量错峰
如果你的源站按固定带宽计费,把数据同步任务安排到凌晨2:00~6:00执行,此时源站带宽占用率低,回源流量不会与白天业务冲突,注意配置crontab时用flock锁文件防止多个同步任务重叠。
分线路限速
在源站防火墙上,对镜像站服务器的出口IP单独设置限速规则,以Linux的tc命令为例,将回源IP的带宽限制在20Mbps,防止镜像站异常流量拖垮源站业务。
tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 20mbit
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip src {镜像站IP} flowid 1:1
账单独立标记
多数云厂商支持“标签”功能(如酷番云的Tag、简米云的ResourceGroup),给源站和镜像站实例分别打上role:source和role:mirror的标签,月底导出账单时按标签聚合,几秒钟就能算出各自带宽费用,省去人工对账。
常见问题:关于费用分摊的4个具体疑问
Q1:镜像站带宽费用谁出?源站和镜像站是同一个账号,怎么分账?
回答:统一账号下不需要“转钱”,但建议在成本分析里做分摊系数,例如源站带宽月账单2000元,回源流量占源站总出网流量的15%,那就在内部报表中把300元计入镜像站成本,精细化做法是源站启用“流量按域名拆分”的日志功能,直接按域名维度出账单。
Q2:跨云厂商做镜像(源站在简米云,镜像站在华为云),回源流量会不会被双向收费?
回答:会,简米云源站对出网流量收费,华为云镜像站对入网流量通常不收费,但源站出网流量单价可能比同厂商高,规避方案是:在简米云开通CDN回源到华为云镜像站,源站固定IP白名单内网化;或者在两边同时开通高速通道(物理专线),走内网回源免流量费,如果预算有限,优先保证华为云镜像站配置较大的缓存容量,把回源次数压缩到最低。
Q3:使用对象存储(OSS/COS/S3)做源站,怎么算分摊费用?
回答:对象存储的计费项里没有“带宽”这个概念,只有“流量费”和“请求数”,回源流量发生在镜像站从存储桶拉取文件时,此时镜像站需要支付外网流出流量费(存储桶所在地域的流量单价决定),源站本身不会多产生费用,分摊思路:把存储桶的流量费直接视为镜像站成本,不必经过源站服务器。
Q4:国内镜像站带宽为什么比海外贵?涉及分摊决策吗?
如果源站在海外、镜像站在国内,国内BGP带宽的月单价通常比海外机房高出30%~50%,这个差价会影响分摊策略很多团队会把国内镜像站改成“只读缓存”,零写入流量,仅保留高频访问内容,将全量存储留在海外源站,此时两家地域的成本分摊比例,按“大陆用户请求占全站比例”来定即可,北京、上海、广州的机房带宽价格也有差异,广深地区通常比北京低一些,建站前值得比价。
费用分摊的本质不是“算清楚谁花多少”,而是让每一层缓存都靠近用户、让回源流量最小化,不管你用的是Squid、Nginx还是云CDN,先把缓存命中率做到90%以上,分摊问题已经解决了一大半,剩下的用标签和限速工具细化即可。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/763368.html





