
# 通过ELB将HTTP请求重定向至HTTPS
#### 应用场景
HTTPS是加密数据传输协议，安全性高，如果您需要保证业务建立安全连接，可以通过负载均衡的HTTP重定向功能，将客户端的HTTP访问重定向至HTTPS访问ELB。
![](https://support.huaweicloud.com/bestpractice-elb/public_sys-resources/caution_3.0-zh-cn.png)
- 因为HTTP标准协议只支持GET和HEAD方法的重定向，所以设置了HTTP重定向至HTTPS后，POST和其他方法会被改为GET方法，这是客户端浏览器的行为，而非ELB修改的。如果您需要实现除GET和HEAD方法以外的访问方式，建议直接使用HTTPS方式进行访问。
- HTTP重定向至HTTPS是指所有的HTTP请求都将转给HTTPS监听器处理为HTTPS请求，但HTTPS请求是通过HTTP被发送给后端服务器的。
- HTTP监听器重定向至HTTPS监听器，HTTPS监听器所关联的后端服务器上不能再安装证书，否则会引起HTTPS请求不生效。
 
#### 前提条件
- 您已创建ELB实例，本实践将以独享型ELB为例。具体操作，请参见[创建独享型负载均衡器](https://support.huaweicloud.com/usermanual-elb/elb_lb_000006.html)。
- 您已创建两台ECS实例，ECS与已创建的ELB实例属于同一个VPC。第一台ECS_client用作客户端发送HTTPS请求，第二台ECS_server用作服务器端来处理请求。具体操作，请参见[购买云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
- 您已在ELB的证书管理控制台创建服务器证书用于创建HTTPS监听器。具体操作，请参见[创建证书](https://support.huaweicloud.com/usermanual-elb/elb_ug_zs_0004.html)。
 
#### 操作流程
图1配置重定向至HTTPS监听器操作流程   
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001933632109.png "点击放大")
 #### 步骤一：创建HTTPS监听器
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在弹性负载均衡列表页面，单击需要设置重定向的负载均衡名称。
3. 在该负载均衡界面的"监听器"页签，单击"添加监听器"，配置监听器。配置监听器参数参见[表1]。
   图2添加HTTPS监听器   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001933687361.png "点击放大")
    表1独享型负载均衡配置HTTPS监听器参数说明 
   | 参数      | 示例             | 说明                                             |
   |:---|:---|:---|
   | 前端协议    | HTTPS          | 客户端与负载均衡监听器建立流量分发连接的协议。                        |
   | 监听端口    | 443            | 客户端与负载均衡监听器建立流量分发连接的端口。                        |
   | 名称      | listener-HTTPS | 监听器名称。                                         |
   | 获取客户端IP | 默认开启           | 后端服务器可以获取到客户端的真实IP地址。                          |
   | 高级转发策略  | 开启             | 高级转发策略支持多样化的转发规则和转发动作，便于灵活地分流业务，合理地分配资源。       |
   | 访问控制    | 允许所有IP访问       | 支持通过白名单和黑名单对特定IP的访问请求进行控制。                     |
   | SSL解析方式 | 单向认证           | 客户端到服务器端认证方式，本实践仅进行服务器端认证。                     |
   | 服务器证书   | 选择已创建的服务器证书    | 服务器证书用于SSL握手协商，具有服务器身份验证和加密传输双重功能。             |
   | SNI     | 暂不开启           | HTTPS协议的负载均衡可以选择开启SNI，以满足您的多域名访问或关联多个服务器证书的需求。 |
      
   
4. 保持"更多配置（可选）"参数设置默认不变，单击"下一步：配置后端分配策略"。
5. 选择"新创建"后端服务器组，其余参数保持默认不变，单击"下一步：添加后端服务器"。
6. 选择将ECS_server添加到新创建的后端服务器组，开启健康检查并保持默认参数设置不变。
7. 单击"下一步：确认配置"后，单击"提交"，完成HTTPS监听器的创建。
 
#### 步骤二：创建HTTP监听器并同步开启重定向
ELB支持在创建HTTP监听器时开启重定向并选择重定向至的HTTPS监听器，也支持在HTTP监听器创建完成后通过设置转发策略实现重定向的设置。
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在"负载均衡器"界面，单击需要设置重定向的负载均衡名称。
3. 在该负载均衡界面的"监听器"页签，单击"添加监听器"，配置监听器。配置监听器参数参见[表2]。
   图3添加HTTP监听器   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001889527524.png "点击放大")
    表2独享型负载均衡配置HTTP监听器参数说明 
   | 参数      | 示例                                                                                | 说明                                            |
   |:---|:---|:---|
   | 前端协议    | HTTP                                                                              | 客户端与负载均衡监听器建立流量分发连接的协议。                       |
   | 监听端口    | 80                                                                                | 客户端与负载均衡监听器建立流量分发连接的端口。                       |
   | 名称（可选）  | listener-HTTP                                                                     | 监听器名称。                                        |
   | 重定向至监听器 | 勾选开启并选择[步骤一：创建HTTPS监听器]创建的HTTPS监听器 | 重定向用于将HTTP监听的流量转发到HTTPS监听，以实现HTTP协议强制跳转HTTPS。 |
   | 获取客户端IP | 默认开启                                                                              | 后端服务器可以获取到客户端的真实IP地址。                         |
   | 高级转发策略  | 开启                                                                                | 高级转发策略支持多样化的转发规则和转发动作，便于灵活地分流业务，合理的分配资源。      |
   | 访问控制    | 允许所有IP访问                                                                          | 支持通过白名单和黑名单对特定IP的访问请求进行控制。                    |
      
   
4. 保持"更多配置（可选）"参数设置默认不变，单击"下一步：确认配置"。
5. 单击"提交"，完成HTTP监听器的创建和重定向设置。
 
![](https://support.huaweicloud.com/bestpractice-elb/public_sys-resources/note_3.0-zh-cn.png)
- HTTP监听器被重定向，除访问控制以外原有监听器配置会失效。
- HTTP监听器被重定向后，会返回301返回码。
 
#### 步骤三：验证重定向至HTTPS
远程登录ECS_client实例，执行curl -H "Accept-Language: zh-CN,zh" "http://ELB的私网IP地址：80" 命令测试ECS_client实例访问ELB的HTTP请求是否能够重定向成功。
如下图所示，如果收到状态码301，表示访问ELB的HTTP请求被重定向至HTTPS监听器。
图4验证重定向至HTTPS监听器   
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001889241874.png "点击放大")
