本文指导您如何通过一个全球加速GA(Global Accelerator)实例使用多证书加速访问多个HTTPS域名。

场景示例

本文以下图场景为例。某公司的总部在美国硅谷,总部在阿里云上创建了两台服务器,两台服务器均部署了Web服务,并通过不同的域名对外提供服务。客户端主要分布在中国香港地域,该公司的Web服务面临以下挑战:
  • 公网传输不稳定,经常出现延迟、抖动、丢包等网络问题。
  • 多台服务器通过不同的域名对外提供服务,为网站配置加速服务时,一般需要分别为每个域名进行加速,成本较高。
场景架构
为解决上述问题,该公司计划部署全球加速服务,并配置HTTPS协议监听。HTTPS协议监听可以通过以下功能实现同时加速多个HTTPS域名访问:
  • 支持绑定多个证书,可以将多个域名关联到同一个HTTPS协议监听上。
  • 支持配置基于域名的转发策略,通过匹配不同的域名访问请求,将访问请求转发至后端相应的服务器。
  • 支持对客户端的访问请求进行数据加密,能有效保障数据传输的安全性。

当前该公司Web服务器的服务信息以及该公司使用全球加速服务后对客户端访问请求的转发规划如下:

配置规划访问域名example.com访问域名example.net
监听协议HTTPS
监听端口443
对应证书默认证书A扩展证书B
对应转发策略默认转发策略自定义转发策略
对应终端节点组默认终端节点组虚拟终端节点组
对应服务器服务器1服务器2
服务器服务协议HTTPHTTPS
服务器服务端口80443
服务器公网IP47.254.XX.XX47.88.XX.XX
说明 全球加速中配置的证书用于加密从客户端至全球加速阶段的数据。从全球加速至后端服务器阶段的数据加密通过后端服务器安装的证书实现。全球加速中配置的证书可以与后端服务器安装的证书相同。

前提条件

  • 您已经购买并申请了SSL证书。具体操作,请参见证书选型与购买提交证书申请
  • 您已将证书文件上传至后端服务器。具体操作,请参见上传本地文件到ECS实例
  • 您的后端服务器1和服务器2已分别使用Nginx配置了HTTP 80和HTTPS 443服务。关于如何部署Nginx服务,请参见步骤二:安装Nginx
  • 您已分别为域名example.comexample.net配置了DNS解析,即已配置了A记录将域名指向后端服务器的公网IP。
    说明 本文以阿里云云解析DNS(Alibaba Cloud DNS)服务为例。关于如何配置A记录,请参见添加解析记录。如果您使用的DNS解析服务为非阿里云云解析DNS,请参见您的DNS服务商操作指导。

配置步骤

配置步骤

步骤一:组合购买实例

您可以在全球加速控制台填写自己的加速业务,系统会根据加速业务智能推荐加速方案。根据系统推荐的加速方案,您可以组合购买加速业务所需要的加速实例和基础带宽包。

  1. 登录全球加速管理控制台
  2. 实例列表页面,单击右上角的购买向导
    说明 如果您是首次使用全球加速服务,请忽略该步骤。
    购买向导
  3. 智能推荐产品方案,选择以下与您业务相关的选项区域,根据以下信息填写加速业务,然后单击点击生成方案
    配置说明
    您需要加速的地域选择需要进行访问加速的地域。

    本文选择中国(香港)

    服务所在地域选择目标服务器所在的地域。

    本文选择美国(硅谷)

    是否有ICP备案选择您的加速服务是否有备案。

    本文选择无备案

    说明 被加速服务部署在中国内地,或加速地域选择为中国内地时,必须完成ICP备案才可对外提供服务。更多信息,请参见什么是ICP备案
    服务端部署在选择后端服务部署所在位置。

    本文选择阿里云

    峰值带宽的范围输入业务高峰期需要的带宽用量,单位是Mbps。

    本文输入2

    最大并发连接数最大并发连接数定义了一个全球加速实例能够承载的最大连接数。当实例上的连接超过规格定义的最大连接数时,新建连接请求将被丢弃。

    本文选择5千

  4. 推荐方案区域,确认方案内容后,单击去组合购买
    推荐方案
    说明 推荐方案中的实例配置为符合您业务的最小值方案,您还可以在购买页面进行修改。
  5. 在购买页面,根据以下信息购买加速业务所需要的实例,然后单击立即购买并完成支付。
    配置说明
    订购时间选择实例的订购时间。
    类型选择全球加速实例的类型。

    本文选择标准型

    规格选择购买全球加速实例的规格。

    本文选择小型Ⅰ(规格单元)

    实例默认选择实例
    加速IP类型默认选择弹性公网IP
    带宽类型选择购买基础带宽包的带宽类型。

    本文选择精品加速带宽

    带宽峰值设置购买基础带宽包的带宽峰值。

    本文设置为2 Mbps。

步骤二:添加加速区域

购买加速业务所需要的实例后,您便可以添加加速区域,指定可以加速访问后端服务的用户所在的地域并为其分配加速带宽。

  1. 实例列表页面,找到已购买的全球加速实例,单击实例ID。
  2. 在实例详情页面,单击加速区域页签,然后在亚太页签下单击添加接入地域
  3. 添加加速区域对话框,根据以下信息配置接入地域,然后单击确定
    配置说明
    地域选择访问加速服务用户的所属地域。

    本文选择中国(香港)

    带宽输入加速服务的地域带宽。

    本文输入2 Mbps。

    IP地址协议选择用户接入全球加速服务的IP地址协议。

    本文选择IPv4

    添加成功后,全球加速会在接入地域分配一个加速IP,用来加速用户访问。加速IP

步骤三:添加监听和终端节点组

监听负责检查连接请求,根据您指定的端口和协议处理来自客户端的入站连接。每个监听都关联一个终端节点组,通过指定要分发流量的地域,将终端节点组与监听关联。关联后,全球加速会将流量分配到与监听关联的终端节点组内的最佳终端节点。

关于配置默认终端节点组和虚拟终端节点组,请参见终端节点组

  1. 配置监听和协议。
    1. 在实例详情页面,单击监听页签,然后单击添加监听
    2. 配置监听和协议配置向导页面,根据以下信息配置监听,然后单击下一步
      此处仅介绍本文强相关配置项。其余配置项信息,请参见添加HTTP或HTTPS协议监听
      配置说明
      监听名称输入监听的名称。
      协议选择监听的协议类型。

      本文选择HTTPS

      端口指定用来接收请求并向终端节点进行转发的监听端口,端口取值范围:1~65499

      本文输入443

      客户端亲和性选择是否保持客户端亲和性。保持客户端亲和性,即客户端访问有状态的应用程序时,可以将来自同一客户端的所有请求都定向到同一终端节点。

      本文选择源IP

  2. 配置默认服务器证书。
    配置SSL证书配置向导页面,根据以下信息进行配置,然后单击下一步
    • 选择服务器证书:选择您已经申请的SSL证书。本文选择证书A。
    • 高级配置:本文TLS安全策略保持默认选择tls_cipher_policy_1_0

      关于TLS安全策略,请参见TLS安全策略说明

    配置SSL证书后,全球加速可以使用HTTPS协议对客户端访问请求以及网站数据进行加密,有效保护敏感数据的传输。

  3. 配置默认终端节点组。
    配置终端节点配置向导页面,根据以下信息配置默认终端节点组,然后单击下一步

    此处仅介绍本文强相关配置项。其余配置项信息,请参见添加默认终端节点组

    配置说明
    节点组名称输入终端节点组的名称。
    地域选择终端节点组所属的地域,即请求要访问的后端服务器的所属地域。

    本文选择美国(硅谷)

    后端服务部署在选择后端服务部署地。

    本文选择阿里云

    保持客户端源IP默认开启保持客户端源IP功能,支持后端服务查看客户端源IP地址。HTTPS监听将从HTTP的x-forward-for字段读取客户端源IP地址。更多信息,请参见保持客户端源IP
    终端节点终端节点是客户端请求访问的后端服务器。您可以根据以下信息配置终端节点:
    • 后端服务类型:选择阿里云公网IP
    • 后端服务:输入要加速的后端服务的IP地址。本文输入服务器1的公网IP地址47.254.XX.XX
    • 权重:输入终端节点权重,权重取值范围:0~255。全球加速根据您配置的权重按比例将流量路由到终端节点。
      警告 如果某个终端节点的权重设置为0,全球加速将终止向该终端节点分发流量,请您谨慎操作。
    后端服务协议选择后端服务器使用的服务协议:
    • HTTP(默认值)
    • HTTPS

    本文保持默认配置为HTTP

    端口映射当您监听的端口和您终端节点提供服务的端口不相同时,您需要输入端口映射关系。
    • 监听端口:只能填写当前监听的端口。本文输入443
    • 终端节点端口:您终端节点提供服务的端口。本文输入80
  4. 配置审核配置向导页面,确认监听和终端节点配置信息后,单击提交
  5. 配置虚拟终端节点组。
    1. 监听页签下,找到目标监听,在虚拟终端节点组列单击数字。
    2. 终端节点组页签的虚拟终端节点组区域,单击添加虚拟终端节点组
    3. 添加虚拟终端节点组对话框,根据以下信息进行配置,然后单击创建
      此处配置除以下列出的参数外,其余参数与步骤 3的默认终端节点组配置一致。
      • 后端服务:输入服务器2的公网IP地址47.88.XX.XX
      • 后端服务协议:选择HTTPS
      • 端口映射:无需配置端口映射关系。

        如果您监听的端口和您终端节点提供服务的端口相同,您无需填写端口映射关系,全球加速自动将访问请求发送至终端节点的监听端口。

步骤四:绑定扩展证书

为HTTPS监听绑定扩展证书,可以将多个域名关联到同一个HTTPS协议监听上。配合基于域名的转发策略可以将不同域名的访问请求转发至不同的虚拟终端节点组。

以下步骤通过为HTTPS监听绑定证书B,将域名example.net与HTTPS监听关联。

  1. 监听页签下,找到目标HTTPS协议监听,单击监听ID。
  2. 在监听详情页面下,单击证书管理页签。
  3. 证书管理页签下的扩展证书区域,单击绑定证书
  4. 绑定证书对话框,根据以下信息配置扩展证书,然后单击确定
    • 证书:选择需要绑定的证书。本文选择证书B。
    • 关联域名:选择该证书下需要使用全球加速服务加速访问的域名。本文选择example.net

步骤五:添加转发策略

HTTPS协议监听接受到访问请求后,会优先匹配自定义转发策略,在满足匹配条件后,HTTPS协议监听将访问请求转发至对应终端节点组中。如果访问请求未匹配到任何自定义转发策略,将会直接通过默认转发策略被转发至默认终端节点组中。

以下步骤为服务器2对应的虚拟终端节点组创建自定义转发策略,将访问域名example.net的所有请求转发至服务器2。

  1. 监听页签下,找到目标HTTPS协议监听,单击监听ID。
  2. 在监听详情页面,单击转发策略页签。
  3. 单击插入新策略,并根据以下信息配置转发策略,然后单击确定
    参数说明
    策略名称输入转发策略的名称。
    如果(条件全部匹配)配置转发条件。

    本文选择域名,并输入要匹配的域名example.net

    那么转发至虚拟终端节点组选择目标虚拟终端节点组。

    本文选择步骤三:添加监听和终端节点组创建的虚拟终端节点组。

步骤六:配置CNAME域名解析

您需要将要加速的域名example.comexample.net通过DNS解析到全球加速的CNAME地址,访问请求才能转发到全球加速,实现加速效果。您可以分别为要加速的域名example.comexample.net执行以下操作:
  • 修改已有A记录的默认解析线路为具体的地域解析线路。本文修改为境外的北美洲_美国解析线路。
  • 添加CNAME记录。本文分别为域名example.comexample.net添加CNAME记录,指向全球加速实例分配的CNAME地址。
说明 默认情况下,云解析DNS为免费版,您需要将云解析DNS升级至企业标准版或企业旗舰版,才支持为不同地域的终端用户智能返回解析结果。如何升级,请参考步骤五:升级云解析DNS的版本
  1. 登录阿里云云解析DNS控制台
  2. 如果您是非阿里云注册的域名且需要在阿里云云解析DNS控制台进行CNAME配置,添加域名到云解析控制台。
    说明 如果您的域名是在阿里云注册的,请跳过该步骤。如果您的域名是非阿里云注册,您可以通过以下两种方式进行域名解析设置:
    • 使用阿里云DNS解析服务时,需要先在阿里云云解析DNS控制台完成域名添加。具体操作,请参见添加域名
    • 使用非阿里云DNS解析服务时,请登录您的DNS服务商系统修改网站域名的解析记录。
  3. 域名解析页面,找到目标域名example.com,在操作列单击解析设置
  4. 在解析设置页面,根据以下步骤修改已有A记录,然后单击确认
    1. 找到目标A记录,单击修改
    2. 修改记录面板的解析线路列表中,依次选择境外北美洲美国
  5. 在解析设置页面,单击添加记录,根据以下配置添加CNAME记录,然后单击确认
    配置说明
    记录类型选择CNAME
    主机记录输入加速域名的前缀。
    • 如果您的加速域名为www.aliyun.com,主机记录为www
    • 如果您的加速域名为aliyun.com,主机记录为@
    • 如果您的加速域名为*.aliyun.com,主机记录为*
    • 如果您的加速域名为mail.aliyun.com,主机记录为mail
    本文输入@
    解析线路选择默认
    记录值输入全球加速实例分配的CNAME。

    您可以在实例列表页面查看全球加速实例分配的CNAME。

    TTL选择10分钟
  6. 为域名example.net修改已有A记录并添加CNAME记录。
    具体操作,请参见步骤 3~步骤 5
说明
  • 新增CNAME记录会实时生效,修改CNAME记录72小时之内生效。
  • 如果您遇到添加冲突问题,可以换一个加速域名或者调整冲突的记录,请参见解析记录冲突
  • 配置完CNAME后,由于状态更新约有10分钟延迟,控制台的域名列表页可能仍提示“未配置CNAME”,请您耐心等待。

步骤七:访问测试

测试客户端是否可以通过不同域名访问部署在美国硅谷的Web服务,并实现访问加速。
说明
  • 本文以阿里云Alibaba Cloud Linux 2操作系统为例进行测试。不同类型的操作系统测试命令可能会有差异,具体测试命令请参见您操作系统的操作指南。
  • 使用全球加速服务后的加速效果以您的实际业务测试为准。
  1. 在接入地域(本文为中国香港)的电脑中打开命令行窗口。
  2. 对域名example.comexample.net分别执行以下命令,验证CNAME配置是否生效。
    ping https://<网站域名>
    当返回的解析结果与全球加速的CNAME值一致,则表示CNAME配置已经生效。验证CNAME配置
  3. 对域名example.comexample.net分别执行以下命令,测试网站是否连通及证书是否获取正常。
    curl -v https://<网站域名> --resolve <网站域名>:<监听端口>:<加速IP>
    当返回结果包含对应的证书信息及响应信息,则表示网站服务正常。测试功能及证书
  4. 执行以下命令,查看域名example.com的加速效果。
    1. 执行以下命令,查看未使用全球加速服务加速前的访问延迟情况。
      curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "https://<网站域名>"
      其中:
      • time_connect:连接时间,从开始到建立TCP连接完成所用的时间,单位为秒。
      • time_starttransfer:开始传输时间。在客户端发出请求后,到后端服务器响应第一个字节所用的时间,单位为秒。
      • time_total:连接总时间。客户端发出请求后,到后端服务器响应会话所用的时间,单位为秒。
      域名1加速前
    2. 执行以下命令,查看使用全球加速服务加速后的访问延迟情况。
      curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_appconnect: %{time_appconnect}\ntime_total: %{time_total}\n" "https://<网站域名>"
      其中:
      • time_connect:连接时间,从开始到建立TCP连接完成所用的时间,单位为秒。
      • time_appconnect:SSL等上层协议建立连接的时间,单位为秒。
      • time_total:连接总时间。客户端发出请求后,到后端服务器响应会话所用的时间,单位为秒。
      域名
  5. 执行以下命令,查看域名example.net的加速效果。
    1. 执行以下命令,查看未使用全球加速服务加速前的访问延迟情况。
      curl -k -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "https://<网站域名>"
      其中:
      • time_connect:连接时间,从开始到建立TCP连接完成所用的时间,单位为秒。
      • time_appconnect:SSL等上层协议建立连接的时间,单位为秒。
      • time_total:连接总时间。客户端发出请求后,到后端服务器响应会话所用的时间,单位为秒。
      2前
    2. 执行以下命令,查看使用全球加速服务加速后的访问延迟情况。
      curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_appconnect: %{time_appconnect}\ntime_total: %{time_total}\n" "https://<网站域名>"
      其中:
      • time_connect:连接时间,从开始到建立TCP连接完成所用的时间,单位为秒。
      • time_appconnect:SSL等上层协议建立连接的时间,单位为秒。
      • time_total:连接总时间。客户端发出请求后,到后端服务器响应会话所用的时间,单位为秒。
      2后