V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果你希望学习 CDN 相关知识,那么建议你可以遍历以下软件的说明文档。
NGINX
cURL
kuanng
V2EX  ›  CDN

对 cdn 工作原理的一点疑惑

  •  
  •   kuanng · 2020-06-04 20:52:50 +08:00 · 3570 次点击
    这是一个创建于 1636 天前的主题,其中的信息可能已经有所发展或是发生改变。

    tBszIe.png

    图中的第( 9 )步骤,我的问题是 cdn 节点是怎样知道我想访问的原站点?

    难道是根据 http 中的 host 字段值吗?

    如果是这样,那么 cdn 就只能用作 http 的加速了吧?

    15 条回复    2020-06-05 13:07:40 +08:00
    imdong
        1
    imdong  
       2020-06-04 21:02:35 +08:00
    https 需要提供你的证书,然后一切和 http 一样。
    Xusually
        2
    Xusually  
       2020-06-04 21:02:50 +08:00
    你要访问的站点,在它所使用的 cdn 平台后台有配置源站的信息,比如回源的 ip 或者域名,回源的方式( ip/host ),http 或者 https 回源,缓存策略等。

    你找个 cdn 服务的后台看一下就知道了。
    jugelizi
        3
    jugelizi  
       2020-06-04 21:06:16 +08:00 via iPhone
    cdn 是需要你去服务商手动开启配置的
    随便找家免费的进控制台操作一下就清楚了
    imdong
        4
    imdong  
       2020-06-04 21:08:16 +08:00
    假设 www.aaa.com 是客户访问域名,
    www.aaa.com 被 cname 到 www.aaa.com.cdnhost.com
    然后 源站是 www-cdn.aaa.com -> 192.168.1.55
    并假设 CDN 上使用 Nginx 来处理的。

    那么思路大概就是
    imdong
        5
    imdong  
       2020-06-04 21:09:46 +08:00
    那么思路简单概括就是:

    Nginx

    proxy_pass http://$host$req_uri;
    kuanng
        6
    kuanng  
    OP
       2020-06-04 21:14:32 +08:00
    @imdong 所以,确实是通过 host 来得知原站点的咯?
    rrfeng
        7
    rrfeng  
       2020-06-04 21:21:49 +08:00 via Android
    你知道 Nginx 怎么配置吗?

    就是你把你的 Nginx 部署到离用户近的地方。
    imdong
        8
    imdong  
       2020-06-04 21:28:03 +08:00
    @kuanng 是的
    kuanng
        9
    kuanng  
    OP
       2020-06-04 21:31:33 +08:00
    @imdong 那 cdn 只能加速 http(s)吗?
    koast
        10
    koast  
       2020-06-04 22:22:36 +08:00 via Android
    @kuanng #9 额,不是,比如 websocket,cdn 就是扮演一个中间传话的角色
    ArtIsPatrick
        11
    ArtIsPatrick  
       2020-06-04 22:35:37 +08:00 via iPhone
    @koast websocket ? cdn 是用来加速类似前端样式和图片这些静态资源用的。需要一直变化的东西都不能缓存怎么加速?
    imdong
        12
    imdong  
       2020-06-04 22:44:10 +08:00
    @ArtIsPatrick 所以有回源的概念,能缓存的缓存,没有的回源(服务器)获取,然后(根据头信息与后台设置等)考虑是否缓存。

    对于动态页面,不缓存的,直接每次都从服务器读取。

    原则上,应该只对静态文件缓存(需要单独域),动态页面则直接解析到服务器上,但实际上很多人使用 CDN 也是为了隐藏、保护服务器免受(部分)攻击。

    对于不能缓存每次都要回源的数据,确实有可能起到了减速的作用(多了一道传话人)。

    但是,考虑到 CDN 边缘服务器的网络优化可能比部分用户的网络优化更好。

    你 -> CDN -> 源站 在某些情况下可能比 你 -> 源站 的速度更快(不排除这种可能)。

    这里就提到了网络游戏中常见的 加速器 的基本原理,利用中间服务器对两端的网络优化都比较好的优势。
    ArtIsPatrick
        13
    ArtIsPatrick  
       2020-06-05 07:25:24 +08:00 via iPhone
    @imdong 我知道呀,然而现实是回源了基本上就没 cdn 本身的加速效果了,走 cdn 不一定比直接访问更快,这种情况下的加速本质上依赖的是 dns 的智能解析。虽然许多 cdn 有 dns 线路优化,但我理解这不是 cdn 的核心功能,而是 dns 的作用。
    imdong
        14
    imdong  
       2020-06-05 10:07:12 +08:00 via iPhone
    @ArtIsPatrick 你以为 CDN 是缓存,实际上 CDN 的重点是有非常多的服务器,无论用户在哪都能有比较近的服务器,然后还是 DNS 调控分配给用户最近最快的服务器。最后加个缓存功能就好。
    ArtIsPatrick
        15
    ArtIsPatrick  
       2020-06-05 13:07:40 +08:00 via iPhone
    @imdong 这是个概念问题。只有静态资源加速是 CDN,什么混合加速,全站加速,安全加速都不是传统意义上的 CDN,而是另一种云服务商整合出来的产品。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3649 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:26 · PVG 12:26 · LAX 20:26 · JFK 23:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.