V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果你希望学习 CDN 相关知识,那么建议你可以遍历以下软件的说明文档。
NGINX
cURL
谷否 | 三分谷地,为你喜欢
AI 大模型 + 柔性供应链,不仅可以为你测试香水味道,还能一件定制实体香水,快速发货。
Promoted by wuqiwen
isbase
V2EX  ›  CDN

一个域名,根据用户 ip 就近回源,用哪种方案比较好?

  •  
  •   isbase · 2024-07-18 00:54:28 +08:00 · 4696 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如 美国用户访问时回源到 美国的源站。

    伪代码表示我想实现的意图:

    Browser:
        Access CDN domain (cdn.com)
    CDN:
        if user IP is US:
            Serve from us.com origin
        else if user IP is Europe:
            Serve from eu.com origin
        else if user IP is China:
            Serve from cn.com origin
        else:
            Default action (not specified)
    
    第 1 条附言  ·  2024-07-18 10:45:00 +08:00

    png

    第 2 条附言  ·  2024-07-18 10:51:59 +08:00

    示意图

    第 3 条附言  ·  2024-07-18 10:52:51 +08:00
    源站内容是一样的
    第 4 条附言  ·  2024-07-18 15:31:11 +08:00
    为啥这么做?

    部分内容在 CDN 缓存时间非常短,需要频繁回源。如果只有一个源站,那么全球其他地域访问就要跨越半个地球回源。非常慢
    34 条回复    2024-07-18 17:30:49 +08:00
    yuzo555
        1
    yuzo555  
       2024-07-18 01:03:56 +08:00
    首先 CDN 节点要够广,确保用户附近有节点;
    然后就是设置域名源站,域名源站的 DNS 根据位置解析不同的 IP 源站。
    herozzm
        2
    herozzm  
       2024-07-18 01:11:50 +08:00
    这不就是 cdn 的原理嘛
    ZeekChatCom
        3
    ZeekChatCom  
       2024-07-18 07:14:58 +08:00 via iPhone
    @herozzm 并不是。一般而言,CDN 是要求访问节点靠近用户,而不是源站。
    yushiro
        4
    yushiro  
       2024-07-18 09:11:36 +08:00 via iPhone   ❤️ 1
    这跟 cdn 有啥关系?你内容都不放 cdn 节点,要求用户访问源站,那应该在 dns 上做文章啊。
    类似国内可以配置电信,联通,移动不同线路不同的 ip
    lp7631010
        5
    lp7631010  
       2024-07-18 09:13:39 +08:00
    想自建 cdn ?
    duanxianze
        6
    duanxianze  
       2024-07-18 09:13:41 +08:00
    只能从 dns 解析下手,和 cdn 目的不同,原理相同
    ersic
        7
    ersic  
       2024-07-18 09:20:25 +08:00   ❤️ 1
    ladypxy
        8
    ladypxy  
       2024-07-18 09:29:23 +08:00 via iPhone
    这不就 smartdns
    Sayuri
        9
    Sayuri  
       2024-07-18 09:50:37 +08:00
    阿里云企业版 DNS 可以解决这个问题。
    leonshaw
        10
    leonshaw  
       2024-07-18 09:53:00 +08:00
    源站内容不一样?
    xzysaber
        11
    xzysaber  
       2024-07-18 10:03:09 +08:00
    这个目的是啥?为了省流?
    只对特定区域使用 CDN 。
    yuzo555
        12
    yuzo555  
       2024-07-18 10:10:48 +08:00   ❤️ 2
    @yushiro @xzysaber
    “回源”这个词在 CDN 领域是指 CDN 节点访问用户的源站的过程,这个词的意思是“CDN 节点去访问”,而不是“用户去访问”。
    “美国用户访问时回源到 美国的源站”,意思就是美国的用户访问 CDN 时,如果 CDN 没有缓存需要访问源站获取资源,则访问美国的源站。
    IvanLi127
        13
    IvanLi127  
       2024-07-18 10:15:21 +08:00
    如果需求是要回源,这种不就是边缘计算吗?直接把源放在离用户最近的节点。要全部自建的话就按 CDN 的方案做,不然就按云服务商的方案做边缘计算。
    DoNotSpeek
        14
    DoNotSpeek  
       2024-07-18 10:31:33 +08:00
    这需求跟 cdn 、回源没啥关系吧
    入口网址里加个 IP 地址库,根据 IP 地址重定向到相应的域名就是了。
    dzdh
        15
    dzdh  
       2024-07-18 10:34:04 +08:00
    @yuzo555 #12


    分情况的吧?前提是用户[已经]到达哪个节点吧?

    如果美国的用户,已经到达了中国的节点,你再重新回到美国源站拉数据?不应该是从 CDN 节点就近的中国节点拉数据才更快吗?

    除非源站内容不一样或者 GDPR 要求。
    dzdh
        16
    dzdh  
       2024-07-18 10:35:27 +08:00
    重新看了题目看懂了。

    那这就不就是 dns 解析上下手的问题 0.0
    wy315700
        17
    wy315700  
       2024-07-18 10:44:04 +08:00
    @dzdh
    OP 要做的就是这种
    如果美国的用户,已经到达了中国的节点,再重新回到美国源站拉数据。


    一般在电商场景会比较常见,比如不同国家售卖的东西不一样,但是前端节点可以共用。

    类似于 Google Global Cache 。前端 CDN 是一方面,后端根据你的账户返回不同的存储区。

    @isbase

    这种只能自建 CDN 节点并且加 IP 库来判断,可以用 OpenResty 来开发
    dzdh
        18
    dzdh  
       2024-07-18 11:07:24 +08:00
    @wy315700

    op 更新了。

    他要求的是 cdn 节点也得是美国哦。 那还是 dns 的问题。。。
    main1234
        19
    main1234  
       2024-07-18 11:13:46 +08:00
    在 cdn 上面写个 lambda ,在 lambda 里面写你要的逻辑
    wy315700
        20
    wy315700  
       2024-07-18 11:15:22 +08:00
    @dzdh
    那就不懂了,如果源站内容一样,为啥要区分。。。

    伪需求吧。
    leonshaw
        21
    leonshaw  
       2024-07-18 11:31:45 +08:00
    源站内容都一样,约等于你自己就是 CDN ,然后外面再套一层。就按上面说的 Geo DNS ,用户就近接入 CDN 节点,节点就近回源。
    poembre
        22
    poembre  
       2024-07-18 12:17:39 +08:00
    有些网站是 主站域名 直接配置 301 跳转到 其他各个城市 子域名。 每个城市 1 个节点 。 比如 58.com
    ccde8259
        23
    ccde8259  
       2024-07-18 12:38:26 +08:00
    这种情况应该用 Anycast
    qingzhijiusheng
        24
    qingzhijiusheng  
       2024-07-18 13:23:29 +08:00
    dns 不同地域解析,举例子,国内和国外,国内走国内源,国外走 cf 。
    然后你在分别加上 cdn 就行
    hefish
        25
    hefish  
       2024-07-18 13:38:30 +08:00
    可以用多个 cdn ,for us 一个,for eu 一个,for cn 一个。。。
    然后用 dns 分流。
    ipwx
        26
    ipwx  
       2024-07-18 13:49:00 +08:00
    这不会是该死的野生面试题吧。。

    问题怪怪的。
    Diego01
        27
    Diego01  
       2024-07-18 14:06:32 +08:00
    CDN ,条件源站加规则就可以吧
    qsnow6
        28
    qsnow6  
       2024-07-18 14:37:34 +08:00
    如果是静态内容的话,用预热接口把更新的内容推到 CDN 的节点上就行了,就不需要回源了。
    QlanQ
        29
    QlanQ  
       2024-07-18 15:16:46 +08:00
    需求是啥?这样做的目的是啥?
    liuliancao
        30
    liuliancao  
       2024-07-18 15:39:43 +08:00
    地域 dns 每个指向 CNAME 各自的 cdn 域名 可以不
    BeijingBaby
        31
    BeijingBaby  
       2024-07-18 16:27:55 +08:00
    话说大厂 cdn 都支持规则回源,起到加速回源作用。。没问题啊?怎么会是问题??

    BeijingBaby
        32
    BeijingBaby  
       2024-07-18 16:29:03 +08:00
    azhangbing
        33
    azhangbing  
       2024-07-18 16:52:41 +08:00
    从 DNS 入手 HTTPDNS 移动解析可以定义规则好像
    ThirdFlame
        34
    ThirdFlame  
       2024-07-18 17:30:49 +08:00
    比如阿里的 dcdn 支持回源写域名的。 那么上智能解析,就会让 dcdn 服务器回源时就根据解析结果回源到不同的服务器的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:21 · PVG 06:21 · LAX 15:21 · JFK 18:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.