图中的第( 9 )步骤,我的问题是 cdn 节点是怎样知道我想访问的原站点?
难道是根据 http 中的 host 字段值吗?
如果是这样,那么 cdn 就只能用作 http 的加速了吧?
1
imdong 2020-06-04 21:02:35 +08:00
https 需要提供你的证书,然后一切和 http 一样。
|
2
Xusually 2020-06-04 21:02:50 +08:00
你要访问的站点,在它所使用的 cdn 平台后台有配置源站的信息,比如回源的 ip 或者域名,回源的方式( ip/host ),http 或者 https 回源,缓存策略等。
你找个 cdn 服务的后台看一下就知道了。 |
3
jugelizi 2020-06-04 21:06:16 +08:00 via iPhone
cdn 是需要你去服务商手动开启配置的
随便找家免费的进控制台操作一下就清楚了 |
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 来处理的。 那么思路大概就是 |
5
imdong 2020-06-04 21:09:46 +08:00
那么思路简单概括就是:
Nginx proxy_pass http://$host$req_uri; |
7
rrfeng 2020-06-04 21:21:49 +08:00 via Android
你知道 Nginx 怎么配置吗?
就是你把你的 Nginx 部署到离用户近的地方。 |
11
ArtIsPatrick 2020-06-04 22:35:37 +08:00 via iPhone
@koast websocket ? cdn 是用来加速类似前端样式和图片这些静态资源用的。需要一直变化的东西都不能缓存怎么加速?
|
12
imdong 2020-06-04 22:44:10 +08:00
@ArtIsPatrick 所以有回源的概念,能缓存的缓存,没有的回源(服务器)获取,然后(根据头信息与后台设置等)考虑是否缓存。
对于动态页面,不缓存的,直接每次都从服务器读取。 原则上,应该只对静态文件缓存(需要单独域),动态页面则直接解析到服务器上,但实际上很多人使用 CDN 也是为了隐藏、保护服务器免受(部分)攻击。 对于不能缓存每次都要回源的数据,确实有可能起到了减速的作用(多了一道传话人)。 但是,考虑到 CDN 边缘服务器的网络优化可能比部分用户的网络优化更好。 你 -> CDN -> 源站 在某些情况下可能比 你 -> 源站 的速度更快(不排除这种可能)。 这里就提到了网络游戏中常见的 加速器 的基本原理,利用中间服务器对两端的网络优化都比较好的优势。 |
13
ArtIsPatrick 2020-06-05 07:25:24 +08:00 via iPhone
@imdong 我知道呀,然而现实是回源了基本上就没 cdn 本身的加速效果了,走 cdn 不一定比直接访问更快,这种情况下的加速本质上依赖的是 dns 的智能解析。虽然许多 cdn 有 dns 线路优化,但我理解这不是 cdn 的核心功能,而是 dns 的作用。
|
14
imdong 2020-06-05 10:07:12 +08:00 via iPhone
@ArtIsPatrick 你以为 CDN 是缓存,实际上 CDN 的重点是有非常多的服务器,无论用户在哪都能有比较近的服务器,然后还是 DNS 调控分配给用户最近最快的服务器。最后加个缓存功能就好。
|
15
ArtIsPatrick 2020-06-05 13:07:40 +08:00 via iPhone
@imdong 这是个概念问题。只有静态资源加速是 CDN,什么混合加速,全站加速,安全加速都不是传统意义上的 CDN,而是另一种云服务商整合出来的产品。
|