V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
xiaoz
V2EX  ›  NGINX

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

  •  
  •   xiaoz ·
    helloxz · 2018-01-20 13:55:04 +08:00 · 8450 次点击
    这是一个创建于 2506 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    • A:源站
    • B:CDN1
    • C:CDN2

    方案一

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

    方案二

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


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

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

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

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

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

    不过,本主题是楼主想自建 CDN (笑)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2881 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:44 · PVG 14:44 · LAX 22:44 · JFK 01:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.