一个域名,根据用户 ip 就近回源,用哪种方案比较好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果你希望学习 CDN 相关知识,那么建议你可以遍历以下软件的说明文档。
NGINX
cURL
isbase
V2EX    CDN

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

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

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

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

    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
    Dragonish3600
        8
    Dragonish3600  
       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     Solana     2656 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:10 PVG 23:10 LAX 08:10 JFK 11:10
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86