cdn配置(超详细+图解+原理)

具体的详细配置在右侧目录翻到“三”,前面的一二是将原理
以腾讯云的cdn为例,其它家的大同小异

一、cdn作用和配置思路

(一)cdn作用

1.加速访问

cdn服务通常有多个节点缓存,用户可以就近获取,延迟较低

2.变相增加带宽

国内具有公网ip的带宽是很贵的,而现在的网站大多数占带宽的都是静态资源,如果把静态资源通过cdn加速,可以用很小的带宽支持较大的流量。

3.部分隐藏源站

通过cdn配置,直接隐藏了直接的服务器的ip,增加了获取原始ip的难度(注意只是增加难度,无法避免。过滤掉一些小白而已)。

(二)配置思路

1.cdn加速服务的端口

如果是web应用或api端口,通常是https的443端口

2.根据应用实际状况配置cdn

那些文件后缀是需要缓存的。
哪些目录下的文件是实时更新的,无需缓存。
哪些端口是调取数据的,无需缓存。
源数据放在自己的服务器还是对象存储或别的地方。

3.https证书

强烈建议使用

cdn加速对前后端分离的应用应该是加速最好的,如果是后端生成内容,前端接收就没那么好的效果了,不过现在应该都是前后端分离的

二、前置条件

(一)域名备案

国内所有域名需要备案,如果使用的服务商不是备案的服务商还要进行接入备案。
个人或公司都可以备案,个人备案不能经营。

(二)域名解析

域名解析到cdn提供的网址,相当于cdn做第一次路由。
注意:如果域名所在的服务商和cdn所在的服务商不是一家,通常需要dns添加记录证明是你的域名

三、具体详细配置(以腾讯云为例)

以下配置是对一个前后端分离的web应用进行的配置,全部使用https
腾讯云的基本配置有下面几块,根据选项卡一个个配置
在这里插入图片描述

(一)基础配置

1.基本信息

基本信息是在创建cdn时已经设置过的,根据实际情况填写。

2.源站信息

这里的源站如果用域名,不能使用加速的域名(会出现死循环)。
为了方便,直接写服务的ip+443端口即可。


如果有多个源站,也可以分配权重,进行负载均衡

(二)访问控制

1.防盗链配置

放盗链不能防止别人获取信息,只能阻止那些用你的链接显示别人网页的行为。
建议使用白名单模式,允许空referer访问
(如果不允许空referer访问,无法输入url地址访问,会直接返回403)
注意,如果你的应用需要调用外部的服务进行跳转,把这个外部服务的网址也加进来,否则无法跳转
在这里插入图片描述

2.IP黑白名单配置(默认无需配置)

有如下情况需要配置,包括但不限于:
(1) 受到指定ip的攻击,加入黑名单
(2) 该服务是内部的,只对某个区段ip适用

3.IP访问限频配置

推荐开启,根据应用类型配置,如果不知道设置qps多少,可以使用50。然后后台统计大多数人具体的访问量,来进行调整即可

4.鉴权配置(根据需要配置)

鉴权配置的意义在于,可以后端控制用户获取静态资源,即使用户知道文件位置,如果鉴权不通过,也无法从cdn获取。根据需要配置,后端需要跟上。
在这里插入图片描述

5.UA黑白名单配置

添加对指定请求头的控制,通常是君子协议,因为请求头可以改。

6.下行限速配置

根据你的应用实际情况配置,为了限制具体的某个文件用户获取的速度。
通常用于高流量的场景,可以不配置,等需要了再配置。

7.访问端口配置

保持默认,开启80和443
在这里插入图片描述

8.区域访问控制插件

建议开启,如果只面向国内用户,建议开启只允许国内ip访问
在这里插入图片描述

9.远程鉴权

需要自己搭建鉴权的服务器,有需要配置(需要后端支持),如果不熟悉,直接默认不开启。

(三)缓存配置

1.缓存键规则配置

建议比如html这种url后面需要后面加参数的进行忽略
参考设置如下
在这里插入图片描述

2.节点缓存过期配置

重点配置区域
(1) 首先把api的目录设定为不缓存
(2) html,css,js这种建议不要超过2小时
(3) php,jsp这种不缓存(因为是后端生成的)

3.浏览器缓存过期配置

保持默认即可,需要前端开发时去做,建议保持默认或者根据需要。

4.状态码缓存

保持默认404,如果需要返回别的状态,根据需要调整。

5.HTTP头部缓存配置

建议开启,方便开发和应用
在这里插入图片描述

6.访问URL重写配置

重写url可以在cdn配置,也可以在服务器入口处配置,根据需要配置。
我的做法通常是不在cdn配置,即这里是无规则的。

(四)回源配置

1.合并回源配置

建议开启

2.分片回源配置

通常不建议开启,容易出小问题

3.回源HTTP请求头配置

重点配置
强烈建议开启,增加X-Forward-Port请求头获取真实ip
原因是将ip写入请求头,就不用专门把ip一层层传递了,后端直接就可以从请求头获取。

4.回源跟随301/302配置

建议开启,简单说就是你的外链也进行缓存

5.回源超时配置

保持默认配置

6.回源URL重写配置

根据情况,一般情况默认即可。
这个配置同样可以在后端服务器配置,我的习惯是在后端服务器配置。
把除了必须暴露外部的目录之外的其它全部屏蔽并指向404(后端的结构很重要)

7.回源SNI配置

保持默认关闭
只有在一个ip绑定了多个域名时才需要配置

注:一个ip绑定多个域名要额外加入反向代理或路由才能实现

(五)https配置

https是重点配置区域,稍有不慎就会无法访问,建议一定要用https

1.HTTPS服务

重点配置
强烈建议开启,不建议使用http,建议全部https

2.HTTPS配置

重点配置
务必上传域名的证书(https证书),否则会提示中间人攻击,直接无法访问
注意:需要手动将https证书(ssl)的公钥和私钥内容复制到如下指定位置,自己生成的不行
在这里插入图片描述

在这里插入图片描述

3.HTTP 2.0配置

开启

4.强制跳转

建议开启,通常情况下,后端的服务器应该也增加跳转或者直接关闭http的访问(只允许https)、
http->https,302,不携带头部
(选择不携带头部,如果正常请求都是https,用http访问显然是为了试探)

5.HSTS配置

建议保持默认关闭

6.TLS版本配置

保持默认

7.OCSP装订配置

建议开启

8.QUIC

保持默认关闭,有需要也可以额外付费用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23248.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何运行Node.js脚本及读取环境变量

目录 1、如何从CLI 运行Node.js 脚本 2、将字符串作为参数传递到节点,而不是文件路径 3、自动重新启动应用程序 4、如何从Node.js中读取环境变量 1、如何从CLI 运行Node.js 脚本 运行Node.js程序的通常方法是运行全局可用的Node命令(一旦安装Node.js…

Linux---文本处理命令(grep、wc、管道符 |)

1. grep命令 grep命令能够在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以 是单一的字符、字符串、单词或句子。 注意:在基本正则表达式中,如通配符 *、、{、|、( 和 )等&#…

蓝桥杯--挖地雷

没有白走的路,每一步都算数🎈🎈🎈 题目: 已知有很多的地窖,每一个地窖中又藏着很多的地雷,每个地窖之间都存在着相连性,但是不是任意的地窖都是相连的,要求我们找出一次能…

深度学习—目标检测标注数据集

深度学习之目标检测 PASCAL数据集 PASCAL VOC挑战赛(The PASCAL Visual Object Classes)是一个世界级的计算机视觉挑战赛,PASCAL全称:Pattern Analysis,Statical Modeling and Computational Learning,是…

native层函数没有导出时,如何获得相应函数地址?

前言 每次App重新运行后native函数加载的绝对地址是会变化的,唯一不变的是函数相对于基地址的偏移,因此我们可以在获取模块的基地址后加上固定的偏移地址获取相应函数的地址,Frida中也正好提供了这种方式:先通过Module.findBaseA…

Augmented Language Models(增强语言模型)

Augmented Language Models: A Survey 先上地址:https://arxiv.org/pdf/2302.07842.pdf 概率论难以支撑通用人工智能技术的诞生。—— Yann LeCun LLMs取得的巨大进展不再多说,它目前被诟病最多的问题是其会提供非事实但看似可信答案,即幻觉…

MySQL之索引初步

1. 索引概念 数据库是⽤来存储数据,在互联⽹应⽤中数据库中存储的数据可能会很多(⼤数据), 数据表中数据的查询速度会随着数据量的增⻓而逐渐变慢 ,从⽽导致响应⽤户请求的速度变慢——⽤户体验差,我们如何提⾼数据库的查询效率呢…

第一个servlet的程序

文章目录 一.Hello World的程序1.创建项目2.引入依赖3.创建目录4.编写代码5.打包程序6.部署程序7.验证程序 二.简化部署方式1.下载插件2.配置smart Tomcat插件3.测试插件 三.常见的servelt问题出现 404出现 405出现 500出现 "空白页面"出现 "无法访问此网站&quo…

【数据结构】队列详解

本篇要分享的内容是队列的解析和增删查改的使用,以下为本篇目录 目录 1.队列的概念及结构 2.队列的结构 3.队列的初始化 4.队列空间释放 5.入队 6.出队 7.获取队头和队尾元素 获取对头 获取队尾 8.计算队列元素 9.判空 11.本篇所有代码展示 Queue.c Q…

一、尚医通手机登录

文章目录 一、登录需求1、登录效果2、登录需求 二、登录1,搭建service-user模块1.1 搭建service-user模块1.2 修改配置1.3 启动类1.4 配置网关 2、添加用户基础类2.1 添加model2.2 添加Mapper2.3 添加service接口及实现类2.4 添加controller 3、登录api接口3.1 添加…

FPGA——HLS入门-LED闪烁仿真

系列文章目录 文章目录 系列文章目录一、HLS介绍1、什么是HLS2、与VHDL/Verilog有什么关系?3、关键技术局限性 二、Vivado HLS - LED闪烁仿真1、项目配置2、C仿真3、联合仿真 三、总结 一、HLS介绍 1、什么是HLS HLS就是高综合(High level Synthesis)…

公网远程访问本地jupyter notebook服务 - 内网穿透

文章目录 前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 转载自cpolar的文章:公网远程访问Jupyter Notebook【Cpolar内网穿透】 前言 Jupyter Notebook&am…

最优化方法Python计算:一元函数搜索算法——牛顿法

设函数 f ( x ) f(x) f(x),在 [ a , b ] [a,b] [a,b]上二阶连续可微且有唯一的最小值点 x 0 x_0 x0​。由于 f ( x ) f(x) f(x)是 [ a , b ] [a,b] [a,b]上的单峰函数,故 f ′ ′ ( x ) > 0 f(x)>0 f′′(x)>0, x ∈ ( a , b ) x\in…

MyBatis快速入门

目录 一、什么是MyBatis 二、MyBatis的学习要领 三、搭建第一个MyBatis 3.1 创建数据库和表 3.2 添加MyBatis框架支持 3.2.1 老项目添加MyBatis 3.2.2 新项目去添加MyBatis 3.3 设置MyBatis配置信息 3.3.1 设置数据库连接的相关信息 3.3.2 设置MyBatis xml保存路径 和…

vue-cli4+vant+rem+sass+vuex+axios封装+webpack搭建前端项目

移动端项目模板 基于 vue-cli4.0 webpack 4 vant ui sass rem 适配方案axios 封装,构建手机端模板脚手架 启动项目 git clone https://github.com/teach-tian/h5-vue-cli4.gitcd h5-vue-cli4npm installnpm run serve✅ 配置多环境变量 package.json 里的 s…

SpringBoot【开发实用篇】---- 整合第三方技术(监控)

SpringBoot【开发实用篇】---- 整合第三方技术(监控) 1. 监控的意义2. 可视化监控平台3. 监控原理 在说监控之前,需要回顾一下软件业的发展史。最早的软件完成一些非常简单的功能,代码不多,错误也少。随着软件功能的逐…

Linux基于Apache服务搭建简易镜像站

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Linux基于Apache服务搭建简易镜像站 安装Apache服务器 yum install -y httpd.x86_64 配置Apache服务器:编辑Apache配置文件/etc/httpd/conf/httpd.conf #S…

ospf的rip和ospf互通以及配置stub区域和totally stub

1. ospf与rip如何互通 我们需要在两台路由器上互相引入,如上图 AR5和AR6运行了rip,但AR5也运行了ospf要想路由器能够互相学习到路由,就需要在AR5上配置路由协议引入 什么是stub区域如何配置stub区域 Stub区域的功能:过滤4类LSA和5类LSA,对外产生缺省的…

Unity之使用Photon Server + PUN2 开发局域网多人游戏

一.前言 Photon Engine是一款跨平台的实时多人游戏引擎,它提供了可靠的基础设施和工具,使开发者能够轻松地构建和部署多人游戏。Photon Engine支持多种平台,包括PC、移动设备和Web,同时还提供了多种语言的SDK,如C++、C#、Java、JavaScript等,使得开发者可以使用自己熟悉…

宁德时代,冷暖自知口难言

作者 | 魏启扬 来源 | 洞见新研社 发布可以“上天”的凝聚态电池、落地能量密度160Wh/kg的钠离子电池、量产系统集成度全球最高的麒麟电池…… 宁德时代在上海车展前后密集发声,坚决捍卫着“宁王”的冠冕。 如果再结合不久前的2022年年报,全年307亿的…