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

2024-07-18 00:54:28 +08:00
 isbase

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

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

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


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

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

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

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


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

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

@isbase

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

op 更新了。

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

伪需求吧。

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

https://ex.noerr.eu.org/t/1058135

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

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

© 2021 V2EX