通过 Serverless Component 快速构建一个 Serverless Web 网站服务后,如果您希望配置自定义域名及支持 HTTPS 的访问,则可以按照本文提供的两种方案快速配置。
前提条件
已经部署了网站服务,获取了 COS/API 网关的网站托管地址。具体部署方法请参见 快速部署 Hexo 博客。
已拥有自定义域名(例如 www.example.com),并确保输入的域名已 备案。
如果需要 HTTPS 访问,可以申请证书并且 获得证书 ID (例如:certificateId : axE1bo3),个人站点可以直接申请 免费 SSL 证书申请流程。
方案一:通过 CDN 加速配置支持自定义域名的 HTTPS 访问
增加配置
在
serverless.yml
中,增加 CDN 自定义域名配置:# serverless.ymlcomponent: websitename: myWebsiteapp: websiteAppstage: devinputs:src:src: ./publicindex: index.htmlerror: index.htmlregion: ap-guangzhoubucketName: my-hexo-bucketprotocol: https# 新增的 CDN 自定义域名配置hosts:- host: www.example.com # 希望配置的自定义域名https:switch: onhttp2: offcertInfo:certId: 'abc'# certificate: 'xxx'# privateKey: 'xxx'
部署服务
再次通过
scf deploy
命令进行部署,并可以添加 --debug
参数查看部署过程中的信息。说明:
serverless-cloud-framework
命令的简写为 scf
。$ scf deploymyWebsite:url: https://my-hexo-bucket-1250000000.cos-website.ap-guangzhou.myqcloud.comenv:host:- https://www.example.com (CNAME: www.example.com.cdn.dnsv1.com)17s › myWebsite › done
添加 CNAME
部署完成后,在命令行的输出中可以查看到一个以
.cdn.dnsv1.com
为后缀的 CNAME 域名。参考 CNAME 配置文档,在 DNS 服务商处设置好对应的 CNAME 并生效后,即可访问自定义 HTTPS 域名。方案二:对 API 网关域名进行自定义域名配置
增加配置
在
serverless.yml
中,增加 API 网关自定义域名配置。本文以 egg.js 框架为例,配置如下:# serverless.ymlcomponent: apigateway # (必填) 组件名称,此处为 apigatewayname: restApi # (必填) 实例名称app: appDemo # (可选) 该应用名称stage: dev # (可选) 用于区分环境信息,默认值为 devinputs:region: ap-shanghaiprotocols:- http- httpsserviceName: serverlessenvironment: releasecustomDomains:- domain: www.example.com# 如要添加 https,需先行在腾讯云 - SSL 证书进行认证获取 certificateIdcertificateId: abcdefgprotocols:- http- httpsendpoints:- path: /usersmethod: POSTfunction:functionName: myFunction # 网关所连接函数名
部署服务
$ scf deployrestApi:protocols:- http- httpssubDomain: service-lqhc88sr-1250000000.sh.apigw.tencentcs.comenvironment: releaseregion: ap-shanghaiserviceId: service-lqhc88srapis:-path: /usersmethod: POSTapiId: api-e902tx1qcustomDomains:- www.example.com (CNAME: service-lqhc88sr-1250000000.sh.apigw.tencentcs.com)8s › restApi › done
添加 CNAME 记录
部署完成后,在命令行的输出中可以查看到一个以
.apigw.tencentcs.com
为后缀的 CNAME 域名。参考 添加 CNAME 记录,在 DNS 服务商处设置好对应的 CNAME 并生效后,即可访问自定义 HTTPS 域名。