HTTPS是加密数据传输协议,安全性高。当企业进行HTTPS安全改造后,为了方便用户访问,可以使用ALB在用户无感知的情况下将HTTP访问重定向至HTTPS。
前提条件
-
您已创建ALB实例,并为该实例添加了HTTP监听和监听端口为443的HTTPS监听。具体操作,请参见:
-
创建应用型负载均衡。
-
添加HTTP监听。
-
添加HTTPS监听。
-
-
您已创建ECS实例,用于发送HTTP请求,该ECS与已创建的ALB实例属于同一个VPC。
HTTP端口所有请求均重定向至HTTPS
通过转发动作的配置,将后续访问ALB的所有HTTP请求均重定向至HTTPS的443端口。
- 登录应用型负载均衡ALB控制台。
-
在顶部菜单栏,选择ALB实例的所属地域。
-
在实例页面,单击目标实例ID。
-
在监听页签,找到已创建的HTTP监听,然后在操作列单击查看/编辑转发规则。
-
在转发规则页签,单击插入新规则。
-
在插入转发规则区域,设置规则名称并完成以下参数的配置,然后单击确定。
条件
说明
转发条件
选择路径。本文输入/*。
转发动作
选择重定向至。
-
协议:本文选择HTTPS。
-
域名:使用默认值${host}。
-
端口:输入您已创建的HTTPS协议监听端口。本文输入443。
-
路径:使用默认值${path}。
-
查询:使用默认值${query}。
-
状态码:本文选择301。
-
-
在转发规则页签,将目标转发规则移动到第一优先级,然后在右上角单击保存优先级。
如目标转发规则已处于第一优先级,则无需调整。
配置完成后,表示后续访问ALB的所有HTTP请求都将转发至HTTPS的443端口。
-
远程登录ECS实例,执行
curl -v http://<ALB域名>
命令测试ECS访问ALB的HTTP请求是否能够重定向至HTTPS。关于远程登录ECS实例,请参见ECS远程连接操作指南。如下图所示,收到状态码301,表示访问ALB的请求重定向至HTTPS。
基于HTTP标头重定向至HTTPS
通过转发动作的配置,将后续访问ALB域名且Accept-Language是中文的请求重定向至https://www.example.com。
- 登录应用型负载均衡ALB控制台。
-
在顶部菜单栏,选择ALB实例的所属地域。
-
在实例页面,单击目标实例ID。
-
在监听页签,找到已创建的HTTP监听,然后在操作列单击查看/编辑转发规则。
-
在转发规则页签,单击插入新规则。
-
在插入转发规则区域,设置规则名称并完成以下参数的配置,然后单击确定。
条件
说明
转发条件
选择HTTP标头。
-
键是:本文输入Accept-Language。
-
值是:本文输入zh-CN,zh。
转发动作
选择重定向至。
-
协议:本文选择HTTPS。
-
域名:本文输入www.example.com。
-
端口:输入您已创建的HTTPS协议监听端口。本文输入443。
-
路径:使用默认值${path}。
-
查询:使用默认值${query}。
-
状态码:本文选择302。
-
-
在转发规则页签,将目标转发规则移动到第一优先级,然后在右上角单击保存优先级。
如目标转发规则已处于第一优先级,则无需调整。
配置完成后,表示后续访问ALB域名且Accept-Language是中文的请求都会重定向至https://www.example.com。
-
远程登录ECS实例,执行
curl -H "Accept-Language: zh-CN,zh" <ALB实例域名>
命令测试ECS访问ALB的HTTP请求是否能够重定向至https://www.example.com。如下图所示,收到状态码302,表示访问ALB的请求重定向至https://www.example.com。
重定向状态码说明
ALB重定向状态码默认为301,您可以根据业务需求选择其他重定向状态码。ALB支持的重定向状态码及说明如下:
状态码 | 说明 |
301 | 永久移动。请求的资源已被永久移动至新的URL,建议客户端的请求都使用新的URL代替。 |
302 | 临时移动。请求的资源只是临时被移动,客户端应继续使用原有URL访问。 |
303 | 与302类似表示资源的临时移动,但POST请求会被重定向至GET请求。 |
307 | 与302类似表示资源的临时移动,但不允许POST到GET的重定向。 |
308 | 与301类似表示资源的永久移动,但不允许POST到GET的重定向。 |