Serverless 框架下自定义域名与 HTTPS 的实现方式

阅读时长 6 分钟读完

Serverless 框架下自定义域名与 HTTPS 的实现方式

随着云计算和微服务的兴起,Serverless 架构正在成为越来越多企业的首选方案。Serverless 架构的特点是无需关注服务器的配置和管理,只需要编写函数代码,上传至云端,就可以实现高可用性、弹性伸缩、低成本等优势。但是,在实际应用中,我们常常需要对 Serverless 服务进行一些定制化的配置,比如自定义域名和启用 HTTPS。

本文将介绍在 Serverless 架构下,如何实现自定义域名和启用 HTTPS 的方法,并提供示例代码和指导意义。

一、自定义域名

默认情况下,Serverless 服务的访问地址是由云服务商自动生成的,比如 AWS Lambda 的地址是一个随机字符串,不太友好。而自定义域名可以使访问地址更加直观、易记,也更有利于品牌推广。

在 Serverless 框架中,自定义域名可以通过以下步骤实现。

  1. 在 DNS 服务商处添加域名解析记录

首先,在 DNS 服务商处添加一条域名解析,将自定义域名指向 Serverless 服务的访问地址。这里以阿里云 DNS 服务为例,具体操作如下:

  • 登录阿里云控制台,进入 DNS 解析控制台。
  • 在左侧导航栏中选择需要添加解析记录的域名。
  • 点击“添加记录”,选择“CNAME”类型,并填写记录值为 Serverless 服务的访问地址,例如 abcdefg.ap-southeast-1.amazonaws.com。
  • 在“主机记录”中填写自定义域名,例如 api.example.com。
  • 点击“确认”保存记录。
  1. 在 Serverless 项目中配置自定义域名

接下来,在 Serverless 项目中配置自定义域名。以 AWS Lambda 为例,具体操作如下:

  • 打开 serverless.yml 文件,添加以下配置:

其中,domainName 表示自定义域名,certificateName 表示 SSL 证书名称,createRoute53Record 表示是否在 AWS Route 53 中自动添加 DNS 解析记录。

  • 在 provider 配置中添加以下内容:
  1. 部署 Serverless 服务

最后,部署 Serverless 服务。在命令行中执行以下命令:

执行成功后,就可以通过自定义域名访问 Serverless 服务了。

二、启用 HTTPS

启用 HTTPS 可以保证数据传输的安全性和完整性,防止中间人攻击和数据篡改。在 Serverless 架构中,启用 HTTPS 的方法主要有两种:使用云服务商提供的 SSL 证书或者自定义 SSL 证书。

  1. 使用云服务商提供的 SSL 证书

云服务商通常会提供一些免费的 SSL 证书,可以直接在 Serverless 服务中使用。以阿里云函数计算为例,具体操作如下:

  • 登录阿里云控制台,进入函数计算控制台。
  • 在左侧导航栏中选择需要启用 HTTPS 的函数,点击“函数配置”。
  • 在“域名与证书”中,选择“使用系统默认证书”,并填写自定义域名。
  • 点击“保存”。
  1. 自定义 SSL 证书

如果需要使用自定义 SSL 证书,则需要先在云服务商处申请证书,然后将证书上传至 Serverless 服务中。以 AWS Lambda 为例,具体操作如下:

  • 在 AWS Certificate Manager 中申请 SSL 证书,并验证域名所有权。
  • 在 Serverless 项目中的 serverless.yml 文件中添加以下配置:

其中,certificateArn 表示 SSL 证书的 ARN(Amazon 资源名称)。

  • 在 provider 配置中添加以下内容:
  1. 部署 Serverless 服务

最后,部署 Serverless 服务。在命令行中执行以下命令:

执行成功后,就可以通过 HTTPS 访问 Serverless 服务了。

三、总结

本文介绍了在 Serverless 框架下,如何实现自定义域名和启用 HTTPS 的方法。通过自定义域名和启用 HTTPS,可以提升 Serverless 服务的可用性和安全性,也更有利于企业品牌推广。希望本文对读者有所帮助,也欢迎读者提出宝贵意见和建议。

示例代码:

-- -------------------- ---- -------
- --------------

-------- ----------

---------
  ----- ---
  -------- ----------
  ------ ---
  ------- --------------

-------
  -------------
    ----------- ---------------
    --------- --
    ------ ----------------------
    --------------- -----------------------------------------------------------------------------------
  ---------------
    ---- ---

----------
  ------
    -------- -------------
    -------
      - -----
          ----- ------
          ------- ---
          ----- ----
          -------- ----

--------
  - -------------------------------

- ----------

-------------------- - ----- ------- -------- -- -
  ------ -
    ----------- ----
    ----- ----------------
      -------- ------- -------
    --
  --
--

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65893a60eb4cecbf2de7a3aa

纠错
反馈