内容分发网络 CDN 组件

最近更新时间:2024-03-28 17:36:41

我的收藏

操作场景

腾讯云 CDN 组件是 serverless-tencent 组件库中的基础组件之一。通过 CDN 组件,您可以快速方便的创建、配置和管理腾讯云的 CDN 产品。

前提条件

已安装 Node.js(Node.js 版本需不低于 8.6,建议使用 Node.js10.0 及以上版本)。
需要开通 内容分发网络 服务。

操作步骤

安装

已经安装 Serverless Cloud Framework 。详情请参见 安装 Serverless Cloud Framework

配置

1. 新建一个cdnDemo文件夹。
mkdir cdnDemo
2. cdnDemo中创建 serverless.yml 文件;
Mac 系统
Linux 系统
Windows 系统
cd cdnDemo
touch serverless.yml
cd cdnDemo
touch serverless.yml
cd cdnDemo
echo. > serverless.yml
3. serverless.yml 中进行如下配置:
# serverless.yml

component: cdn
name: cdnDemo
app: appDemo
stage: dev

inputs:
area: overseas
domain: mysite.com #域名
origin:
origins:
- xxx.cos.ap-guangzhou.myqcloud.com #源站,可以是域名或 IP
originType: cos
originPullProtocol: https
serviceType: web
forceRedirect:
switch: on
redirectType: https
redirectStatusCode: 301
https:
switch: on
http2: on
certInfo:
certId: 'abc'
# certificate: 'xxx'
# privateKey: 'xxx'

部署

执行以下命令进行扫码授权部署:
scf deploy
说明:
微信扫码授权部署有过期时间,如果想要持久授权,请参考 账号配置

移除

执行以下命令移除部署的服务:
仅删除云函数相关的配置、代码。
关联的其他云资源(如 COS、CLS 等),平台均不会关联删除,您可以前往对应产品控制台删除,避免不必要的计费。
scf remove

账号配置(可选)

当前默认支持 CLI 扫描二维码登录,如您希望配置持久的环境变量/密钥信息,也可以本地创建 .env 文件:
touch .env # 腾讯云的配置信息
.env 文件中配置腾讯云的 SecretId 和 SecretKey 信息并保存:
# .env
TENCENT_SECRET_ID=123
TENCENT_SECRET_KEY=123
说明:
如果没有腾讯云账号,请先 注册新账号
如果已有腾讯云账号,可以在 API 密钥管理 中获取 SecretId 和 SecretKey。

配置详情

全部配置

# serverless.yml

component: cdn
name: cdnDemo
org: orgDemo
app: appDemo
stage: dev

inputs:
domain: abc.com
area: overseas
async: true
onlyRefresh: false
serviceType: web
origin:
origins:
- origin.site.com
originType: cos
originPullProtocol: https
https:
switch: on
http2: on
certInfo:
certId: 'abc'
refreshCdn:
urls:
- https://abc.com
pushCdn:
urls:
- https://abc.com
cache:
simpleCache:
followOrigin: on
cacheRules:
- cacheType: all
cacheContents:
- '*'
cacheTime: 1000
cacheKey:
fullUrlCache: on
referer:
switch: on
refererRules:
- ruleType: all
rulePaths:
- '*'
refererType: blacklist
allowEmpty: true
referers:
- 'qq.baidu.com'
- '*.baidu.com'
ipFilter:
switch: on
filterType: blacklist
filters:
- '1.2.3.4'
- '2.3.4.5'
forceRedirect:
switch: on
redirectType: https
redirectStatusCode: 301

配置说明

CDN 配置

参数名称
是否必选
默认值
描述
domain
-
CDN 域名。
origin
-
源站配置,详情见 origin
area
mainland
域名加速区域:
mainland:中国境内加速
overseas:中国境外加速
global:全球加速
(使用中国境外加速、全球加速时,需要先开通中国境外加速服务)
serviceType
web
加速域名业务类型。
web:静态加速
download:下载加速
media:流媒体点播加速
async
false
是否为异步操作,如果为 true,则不会等待 CDN 创建或更新成功再返回。
onlyRefresh
false
是否只刷新预热 CDN,如果为 true,那么只进行刷新操作,不会更新 CDN 配置。
refreshCdn
-
刷新 CDN 相关配置,详情见 refreshCdn,如果想刷新 CDN,必须在同步部署情况下,也就是 async 必须配置为 false。
pushCdn
-
预热 CDN 相关配置,详情见 pushCdn,如果想预热 CDN,必须在同步部署情况下,也就是 async 必须配置为 false。
https
-
Https 加速配置,详情见 https
cacheKey
-
节点缓存键配置,详情见 cacheKey
cache
-
缓存过期时间配置,详情见 cache
referer
-
防盗链设置,详情见 referer
ipFilter
-
IP 黑白名单配置,详情见 IpFilter
注意:
async 参数对于配置多个 CDN 域名需求,或者在 CI 流程中时,建议配置成 true,不然会导致 serverless cli 执行超时,或者 CI 流程超时。

origin

详情见 文档
参数名称
是否必选
默认
描述
origins
-
主源站列表
originType
domain
主源站类型。
domain:域名类型
cos:对象存储源站
originPullProtocol
http
回源协议配置。
http:强制 http 回源
follow:协议跟随回源
https:强制 https 回源,https 回源时仅支持源站443端口
serverName
-
回主源站时 Host 头部,不填充则默认为加速域名。若接入的是泛域名,则回源 Host 默认为访问时的子域名。
cosPrivateAccess
-
originType 为对象存储(COS)时,可以指定是否允许访问私有 bucket。注意:需要先授权 CDN 访问该私有 Bucket 的权限后,才可开启此配置。
backupOrigins
-
备源站列表。
backupOriginType
domain
备源站类型。
domain:域名类型
cos:对象存储源站
backupServerName
-
回备源站时 Host 头部,不填充则默认为加速域名。若接入的是泛域名,则回源 Host 默认为访问时的子域名。

refreshCdn

参数名称
是否必选
默认
描述
urls
[]
需要刷新的 CDN 目录

pushCdn

参数名称
是否必选
默认
描述
urls
[]
需要预热的 CDN URLs
更多配置,请参见 新增加速域名