使用 Nginx 自建 CDN,关于回源问题。

2018-01-20 13:55:04 +08:00
 xiaoz

假如 3 台服务器,一台源站,2 个自建 CDN,在 Nginx 配置的时候回源方案目前想到 2 个,但不是很好,请问是否有更好的方案。

方案一

CDN 上进行 hosts 回源,但是自建 CDN 一多,这样很麻烦。

方案二

使用 DNSmasq 自建一个 DNS,然后在 nginx 设置 DNS 来指定回源。


请问有更好的办法来实现回源吗?尤其是自建 CDN 节点较多的情况下。

8274 次点击
所在节点    NGINX
13 条回复
asuraa
2018-01-20 14:02:31 +08:00
有现成的为何不用?
402645707
2018-01-20 14:03:28 +08:00
指定到 CNAME 然后自建 dns 配置 cname 选择是否回源
shindo10
2018-01-20 14:16:53 +08:00
方案二已经就很方便了呀
shindo10
2018-01-20 14:18:10 +08:00
抱歉,打错,是说二楼的方案
xiaoz
2018-01-20 14:32:27 +08:00
@luodaoyi 只是想自己了解学习下
likuku
2018-01-20 14:52:21 +08:00
CNAME 是市面上 CDN 服务厂家标准用法,嗯,十年前就是如此了。

剩下就是根据地理位置给不同 IP 地址解析了。

地理位置 IP 范围库这个是最难的,记得很久很久以前某国内 CDN 大佬(那时还未上市 ),优势就在于各地都有员工,和当地通讯联系比较紧密,IP 地理信息库就更新的很及时。

如今,一些国内外 DNS 服务已经提供了 GEOIP 指向服务,直接用它们的,就方便很多了。
xiaoz
2018-01-20 15:58:18 +08:00
@402645707 抱歉,我还是不太明白。我这里指的是 CDN 节点要去请求源 IP 的数据,而不是 CNAME 直接回源。
likuku
2018-01-20 16:07:56 +08:00
@xiaoz 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.
402645707
2018-01-20 16:39:03 +08:00
@xiaoz 8 楼正解
txydhr
2018-01-21 07:51:30 +08:00
一般回源地址和对外的地址不一样吧
wzzyj8
2018-01-21 11:00:02 +08:00
@luodaoyi 讲真海外+国内不备案的真的没有可以兼顾的
lemonda
2018-01-21 14:11:04 +08:00
@likuku
这种做法在测速时,要解析 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
likuku
2018-01-21 15:08:09 +08:00
@lemonda 现在云存储很多自带 /可以追加 CDN,可以直接把静态页面都直接丢上云端,这也更省事...

不过,本主题是楼主想自建 CDN (笑)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/424482

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX