使用ALB将HTTP访问重定向至HTTPS

HTTPS是加密数据传输协议,安全性高。当您需要进行HTTPS安全改造时,您可以使用应用型负载均衡ALBHTTP访问重定向至HTTPS,让用户在无感知的情况下将HTTP访问重定向至HTTPS。

功能简介

ALB提供HTTPHTTPS的重定向功能。通过配置监听转发规则,将HTTP协议的请求重定向到HTTPS,从而确保数据传输加密,防止中间人攻击和数据泄露,帮助您轻松构建符合现代安全标准的网络架构。

image

关键特性

  • 灵活配置:支持自定义重定向规则,可以基于路径、HTTP标头等参数设置特定的重定向策略,满足复杂应用场景的需求。

  • 状态码设置:支持选择不同的HTTP状态码进行重定向,如301(永久重定向)或302(临时重定向)。

  • 性能优化:将重定向逻辑转移到负载均衡层,后端服务器无需处理重定向逻辑,专注于核心业务处理,提升整体效率。

应用场景

  • HTTPS安全改造:将现有网站或应用程序从HTTP改造为HTTPS,提升用户和服务器之间通信的安全性。

  • 域名更改/站点迁移:当网站迁移到新的域名时,使用重定向可以保持用户访问的连续性,避免流量损失。

  • 基于HTTP标头重定向:根据HTTP标头信息(如语言、设备类型等),将用户请求重定向至不同的HTTPS应用,实现个性化服务。

场景示例

某企业在阿里云华东1(杭州)地域购买的ALB实例部署了业务并对外提供服务。企业希望在域名保持不变的情况下,将HTTP协议切换为HTTPS协议,以实现数据加密,并提升用户体验的流畅性与多样性。

image

前提条件

  • 创建公网ALB实例(基础版、标准版和WAF增强版均支持)。

  • 已为ALB实例创建服务器组(后端协议为HTTP)。

  • 已在ALB实例的服务器组中分别添加ECS01ECS02实例,并在ECS01ECS02中均部署了应用服务。

    本文以Alibaba Cloud Linux 3操作系统为例,并使用Nginx配置HTTP 80服务。

    参考示例:ECS01部署测试服务

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS01." > index.html
  • 已为ALB实例创建HTTP监听

  • 注册自有域名并完成ICP备案,且通过自有域名ALB添加CNAME记录

  • 创建并申请证书或者上传第三方证书到SSL证书服务并绑定自有域名。

操作步骤

本文通过以下两种方式介绍通过ALB实现HTTP访问重定向至HTTPS,您可以按需配置:

  • HTTP端口所有请求重定向至HTTPS:无条件地将所有到达ALBHTTP请求重定向到HTTPS,适用于强制要求所有访问都使用HTTPS的场景,例如全站启用HTTPS或统一安全策略。

  • 基于HTTP标头重定向至HTTPS:基于HTTP请求头(如语言、设备类型等)进行条件判断,只有满足特定条件的请求才会被重定向。适用于需按条件区分跳转目标的场景,例如,可以根据用户语言偏好重定向到不同的语言版本网站,或者根据设备类型(手机、平板、PC)或浏览器版本,将请求重定向到移动端或桌面端的HTTPS版本。

HTTP端口所有请求均重定向至HTTPS

步骤一:配置HTTPS监听

  1. 应用型负载均衡ALB控制台顶部菜单栏选择ALB实例所属地域。

  2. ALB实例页面,单击目标实例ID。

  3. 监听页签,单击创建监听

  4. 负载均衡业务配置向导页面,完成以下配置,然后单击下一步

    此处仅列出和本文强相关的配置项,HTTPS监听其他参数配置可保持默认值或根据实际情况修改。

    1. 配置监听配置向导,选择监听协议HTTPS监听端口443,然后单击下一步

      添加HTTPS监听

    2. 配置SSL证书配置向导,选择已创建好的服务器证书。然后单击下一步

    3. 选择服务器组配置向导,选择已创建好的服务器组,并查看后端服务器信息,然后单击下一步

    4. 配置审核配置向导页面,确认配置信息,单击提交

步骤二:配置监听转发规则

  1. 监听页签,找到已创建的HTTP监听,然后在操作列单击查看/编辑转发规则

  2. 转发规则页签,单击插入新规则

  3. 插入转发规则区域,配置下表参数,然后单击确定

    此处仅列出和本文强相关的配置项,转发规则其他参数配置可保持默认值或根据实际情况修改。

    参数

    说明

    转发条件

    选择路径并输入/*

    转发动作

    选择重定向至

    • 协议:本示例选择HTTPS

    • 端口:输入您已创建的HTTPS协议监听端口。本文输入443

    • 状态码:本示例保持默认值301

    HTTP全部重定向HTTPS

步骤三:结果验证

以任意一台可以访问公网的终端为例,测试访问ALBHTTP请求是否能够重定向至HTTPS。

  1. 打开终端的命令行窗口。

  2. 执行curl -v -L http://<自有域名>

    如下图所示,收到状态码301,表示访问ALB的请求重定向至HTTPS,应答服务器为ECS01。

    ECS01-1

    ECS01-2

    重复执行命令,应答服务器变为ECS02。

    ECS02-1

    ECS02-2

基于HTTP标头重定向至HTTPS

本文以HTTP标头Accept-Languagezh-CN,zhHTTP请求重定向至HTTPS为例。

步骤一:配置HTTPS监听

  1. 应用型负载均衡ALB控制台顶部菜单栏选择ALB实例所属地域。

  2. ALB实例页面,单击目标实例ID。

  3. 监听页签,单击创建监听

  4. 负载均衡业务配置向导页面,完成以下配置,然后单击下一步

    此处仅列出和本文强相关的配置项,HTTPS监听其他参数配置可保持默认值或根据实际情况修改。

    1. 配置监听配置向导,选择监听协议HTTPS监听端口443,然后单击下一步

      添加HTTPS监听

    2. 配置SSL证书配置向导,选择已创建好的服务器证书。然后单击下一步

    3. 选择服务器组配置向导,选择已创建好的服务器组,并查看后端服务器信息,然后单击下一步

    4. 配置审核配置向导页面,确认配置信息,单击提交

步骤二:配置监听转发规则

  1. 监听页签,找到已创建的HTTP监听,然后在操作列单击查看/编辑转发规则

  2. 转发规则页签,单击插入新规则

  3. 插入转发规则区域,配置下表参数,然后单击确定

    此处仅列出和本文强相关的配置项,转发规则其他参数配置可保持默认值或根据实际情况修改。

    参数

    说明

    转发条件

    选择HTTP标头

    • 键是:本示例输入Accept-Language

    • 值是:本示例输入zh-CN,zh

    转发动作

    选择重定向至

    • 协议:本示例选择HTTPS

    • 域名:输入您的自有域名。

    • 端口:输入您已创建的HTTPS协议监听端口。本文输入443

    • 状态码:本示例选择302

    基于HTTP标头重定向至HTTPS

步骤三:结果验证

以任意一台可以访问公网的终端为例,测试访问ALBHTTP请求是否能够重定向至HTTPS。

  1. 打开终端的命令行窗口。

  2. 执行curl -v -L -H "Accept-Language: zh-CN,zh" http://<自有域名>.

    如下图所示,收到状态码302,表示访问ALB的请求重定向至HTTPS,应答服务器为ECS01。

    ECS01-1

    ECS01-2

    重复执行命令,应答服务器变为ECS02。

    ECS02-1

    ECS02-2

重定向状态码说明

ALB重定向状态码默认为301,您可以根据业务需求选择其他重定向状态码。ALB支持的重定向状态码及说明如下:

状态码

说明

301

永久移动。请求的资源已被永久移动至新的URL,建议客户端的请求都使用新的URL代替。

302

临时移动。请求的资源只是临时被移动,客户端应继续使用原有URL访问。

303

302类似表示资源的临时移动,无论原始请求方法是什么,要求客户端在重定向后使用GET方法发起请求。

307

302类似表示资源的临时移动,但客户端必须保持原请求方法(如POST请求重定向后仍为POST,不允许POST转为GET)。

308

301类似表示资源的永久移动,客户端必须保持原请求方法(如POST请求重定向后仍为POST,不允许POST转为GET)。

关于状态码说明的更多信息请参见HTTP/1.1标准(RFC 7231)

相关文档

  • 若您的业务有更高的安全需求,您可以进一步了解ALB的以下功能:

    • 配置全链路HTTPS访问实现加密通信:ALB提供全链路HTTPS加密功能,可以实现客户端到ALB、ALB到后端服务器之间的全链路加密通信,提升敏感业务的安全性。

    • 使用ALB部署HTTPS业务(双向认证):ALB提供HTTPS双向认证功能,在客户端与服务端建立连接之前,双方需进行身份验证。仅在双方均成功通过认证后,方可建立安全通信通道进行数据传输,从而确保只有授权的客户端能够访问接入,有效降低中间人攻击和未授权访问等安全风险。

  • 了解更多关于监听的转发条件以及转发动作,请参见配置监听转发规则

  • 通过ALB监听转发规则还可以实现以下场景需求:

    • 使用ALB流量镜像功能实现仿真压测:通过ALB提供的流量镜像功能可以实现在线流量仿真,将在线流量镜像到测试环境的后端服务器,同时ALB自动丢弃镜像后端服务器返回的响应数据,保证镜像后端服务器的测试业务不会影响到线上业务。

    • 使用ALB实现灰度发布:通过配置基于特定条件或不同服务器组流量权重的监听转发规则,将部分请求转发至新版本应用,逐步验证新版本稳定性,实现灰度发布。