假如 3 台服务器,一台源站,2 个自建 CDN,在 Nginx 配置的时候回源方案目前想到 2 个,但不是很好,请问是否有更好的方案。
方案一
CDN 上进行 国外服务器hosts 回源,但是自建 CDN 一多,这样很麻烦。
方案二
使用 DNSmasq 自建一个 DNS,然后在 nginx 设置 DNS 来指定回源。
请问有更好的办法来实现回源吗?尤其是自建 CDN 节点较多的情况下。
有现成的为何不用?
指定到 CNAME 然后自建 dns 配置 cname 选择是否回源
方案二已经就很方便了呀
抱歉,打错,是说二楼的方案
只是想自己了解学习下
CNAME 是市面上 CDN 服务厂家标准用法,嗯,十年前就是如此了。
剩下就是根据地理位置给不同 IP 地址解析了。
地理位置 IP 范围库这个是最难的,记得很久很久以前某国内 CDN 大佬(那时还未上市 ),优势就在于各地都有员工,和当地通讯联系比较紧密,IP 地理信息库就更新的很及时。
如今,一些国内外 DNS 服务已经提供了 GEOIP 指向服务,直接用它们的,就方便很多了。
抱歉,我还是不太明白。我这里指的是 CDN 节点要去请求源 IP 的数据,而不是 CNAME 直接回源。
CDN 现有作法:
客户资源对外发布地址: pub.name.tl
CDN 平台上这样绑定:
pub.name.tl.node.service.cdn.inc 的 源 forcdn.name.tl
客户 DNS/NS 上这样两条记录:
forcdn.name.tl IN A 客户 web 服务器 IP 地址
pub.name.tl IN CNAME pub.name.tl.node.service.cdn.inc.
8 楼正解
一般回源地址和对外的地址不一样吧
讲真海外+国内不备案的真的没有可以兼顾的
这种做法在测速时,要解析 pub.name.tl ,总显示慢 100ms 左右
现在有的 CDN 提供这种绑定
客户全站地址都是:www.name.tl
CDN 平台上这样绑定:
name.tl.node.service.cdn.inc 的源 forcdn.name.tl/客户的 web 服务器 IP 地址
Host header 指定为 www.name.tl
客户 DNS/NS 上这样两条记录:
forcdn.name.tl IN A 客户 web 服务器 IP 地址
www.name.tl IN CNAME name.tl.node.service.cdn.inc.
对于改动不频繁的网站可以把网页本身而不只是静态资源缓存在 CDN 的 edge node 上
类似 Nginx 的 proxy cache
现在云存储很多自带 /可以追加 CDN,可以直接把静态页面都直接丢上云端,这也更省事...
不过,本主题是楼主想自建 CDN (笑)