实验概述
互联网巨头雅虎官方对外发布消息,承认在2014年的一次黑客袭击中,至少5亿用户的数据信息遭窃。此次事件让我们再次意识到网站安全的重要性,网站加密防护的必要性。我们可以使用HTTPS协议对网站进行全站加密,但是,大部分用户已经习惯直接输入域名(即使用 HTTP 协议)访问网站。因此,企业需要将用户的 HTTP 请求转化为 HTTPS 请求进行访问。这个问题在传统的 IT 架构中已经得到解决,但是在云上如何解决 HTTP 与 HTTPS 的混合访问?
本实验使用负载均衡配置监听,利用Nginx实现HTTP请求向HTTPS请求的转化,从而完成HTTP和HTTPS的混合访问。
HTTP请求转化为HTTPS请求架构图
转化后输入IP自动跳转成HTTPS协议访问页面
HTTPS 协议
HTTPS 能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用 HTTPS 协议。
- 基本概念
HTTPS 是更安全的 HTTP 协议,它在 TCP(负责网络数据传输)和 HTTP层 之间,增加了一个 SSL 层。这一层通过数字证书和加密算法对 HTTP 请求进行加密。已经采用 HTTP 协议的网站要过渡到 HTTPS,将在技术改造、服务器资源、流量资源上付出更多成本。 - 工作流程
HTTPS 其实是有两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。
负载均衡监听
负载均衡提供四层(TCP/UDP协议)和七层(HTTP/HTTPS协议)监听,您可根据应用场景选择监听协议:
- 负载均衡四层监听将请求直接转发到后端ECS实例,而且不修改标头。
- 负载均衡七层监听原理上是反向代理的一种实现,客户端HTTP请求到达负载均衡监听后,负载均衡服务器会通过与后端ECS建立TCP连接,即再次通过新TCP连接HTTP协议访问后端,而不是直接转发报文到后端ECS。
实验目标
完成此实验后,可以掌握的能力有:
1,使用负载均衡配置HTTP和HTTPS监听,支持HTTP请求和HTTPS请求的混合访问;
2,使用Nginx将HTTP请求转化为HTTPS请求;
实验实施
使用HTTP请求查看网站服务器
本小节主要内容:直接通过 ECS 实例的 IP 地址,访问并查看已部署的 Web 网站。
实验资源:
访问 Web服务器01 的网站信息:
新建一个浏览器页面,并输入 Web服务器01 的 弹性ip ,浏览网站 LAB013 ROOM 。
参考如上步骤,在浏览器中,输入 Web服务器02 的 弹性ip ,并访问 Web服务02 网站。
可以查看到两台服务器的内容完全一致。一般情况下,为了保证企业业务的持续性,企业会将生产环境部署到两台相同的服务器中。这样在高并发时,通过负载均衡可以将网站的流量分发到不同的服务器后端,从而提升用户体验。
负载均衡中添加HTTP和HTTPS监听
本小节主要内容:在负载均衡(SLB)中添加 HTTPS 和 HTTP 协议监听
1. 登录实验子账号,进入阿里云控制台。您可以通过以下2种方法来访问控制台,任选其中一种即可。
进行实验资源子账号登录:
2. 找到并进入阿里云负载均衡(SLB)管理控制台:
3. 通过如下步骤,进入 实验资源 提供的 负载均衡 实例的管理页面:
4. 通过如下步骤,添加 负载均衡 的 HTTPS 协议的监听。
1)在负载均衡实例页面,点击下侧栏的 监听 。
2)在实例监听页面,点击右侧 添加监听 。
3)在 基本配置 页面,配置如下信息:
- 前端协议[端口]:选择 HTTPS ,并填写端口号为 443 ;
- 服务器证书 :选择已有服务器证书 lab-ca 。
说明:SLB 的服务器证书是本实验已提供的公共资源。
- 其余配置信息保持默认,完成如上配置后,点击 下一步 。
4)在负载均衡后端添加 ECS 实例-选择默认服务器组
通过添加,把提供的两台ECS服务器放到SLB资源池。
确认后,在服务器后端,填写80,然后点击下一步
说明:本实验中不会对添加的 ECS 实例进行健康检查,但是,在真实的工作环境中,强烈建议用户开启健康检查。健康检查的操作和使用,请参考实验 SL010 使用SLB实现持续性高并发访问 。
5)等待 3-5 秒,提示 恭喜,监听配置成功 ,完成后,点击 确认 。
6)返回监听配置页面,查看到新建 HTTPS:443 监听的 状态 为 运行中 。此时,HTTPS协议监听添加成功。
5. 通过如下步骤,添加 负载均衡 的 HTTP 协议的监听。
1)再次点击页面下侧的 添加监听 。
2)在 基本配置 页面,配置如下信息:
- 前端协议[端口]:选择 HTTP ,并填写端口号为 80 ;
后端服务器组,选择默认服务器组
- 后端协议[端口]:默认使用 HTTP ,填写端口号为 88 ;
- 其余配置信息保持默认,完成如上配置后,点击 下一步 。
说明:本实验中使用 88 端口进行判定和转发的,在真实的工作环境中,用户请根据实际情况设置端口信息。
3)在健康检查配置中,关闭 健康检查,完成后,点击 确认 。
4)等待 1-3 秒,提示监听配置成功 ,完成后,点击 确认 。
5)在监听配置中,可以查看到新建监听 HTTP:80 。
分别查看两种请求的访问效果
本小节主要内容:测试负载均衡的监听是否生效。
1. 验证 HTTP 协议监听:在浏览器中新建一个页面,输入 提供的 负载均衡 的 IP地址 。此时,页面提示 502 错误。证明 HTTP 协议监听开启,但是无法正常访问网站。
说明:HTTP请求没有经过加密,需要在之后的的步骤中进行配置,将它转化为HTTPS请求才能够访问。
2. 通过如下步骤,验证 HTTPS 协议监听:
1)在浏览器中,新建页面,并输入 https://xxx.xxx.xxx.xxx (其中 xxx.xxx.xxx.xxx 为 实验资源 提供的 负载均衡 的 IP地址
注意:必须输入 https:// ,否则会出现访问错误。
2)页面提示 您的连接不是私密连接 ,点击页面下端的 高级 。
说明:由于本实验使用的是公共证书,因此会出现这样的提示。在真实的工作环境中,若上传到SLB的证书是有效的,则不会出现这样的提示。
3)展开信息提示证书的相关信息,点击 继续前往xxx.xxx.xxx.xxx(不安全) 。
4)页面显示 LAB013 ROOM 网站,证明 HTTPS 监听配置成功,且用户可以通过 HTTPS 访问到后端服务器部署的网站。
HTTP请求转化为HTTPS请求
本小节主要内容:通过重定向的方式将来自 HTTP 请求转发到 HTTPS,实现用户直接通过输入负载均衡 IP 地址就可以直接访问网站。
1.使用远程工具连接进行修改配置
输入Web服务器01 的账号信息,登录服务器,命令如下:
ssh root@[ip]
回车之后复制 密码 输入
注意:密码输入时,输入框不会有反应,输入完之后直接回车即可
2. 通过如下步骤,修改 Nginx 配置文件:将所有 88 端口请求,都转发到负载均衡的 HTTPS 协议的 IP 访问地址:
输入如下命令,进入 Nginx 配置文件的编辑页面。
vim /etc/nginx/nginx.conf
清空 85 行到 94 行的注释 # ,如下图所示:
修改 rewrite 的参数信息,将 xxx.xxx.xxx.xxx 替换为 实验资源 提供的 负载均衡 的 IP地址 。
说明:在真实的工作环境中,若使用域名访问,请将此处的 https://xxx.xxx.xxx.xxx 替换为 https 协议访问的域名。例如:https://lab.aliyunedu.net。
进行保存退出
3. 执行如下命令,重启Nginx。
service nginx restart
4. 参考如上步骤,修改 Web服务器02 的信息。
1)登录到 实验资源 提供的 Web服务器02 。
2)修改 Nginx 配置文件。
vim /etc/nginx/nginx.conf
3)重启 Nginx 服务器:
service nginx restart
5. 完成如上配置后,通过如下步骤,验证通过负载均衡的 HTTP 访问网站,是否可以自动跳转到 HTTPS 访问:
1)在浏览器中,输入并访问 负载均衡 的 IP地址 。
2)可以看到,直接跳转到 https 协议访问页面,点击 继续访问 。
说明:建议使用另一个浏览器查看结果,因为会由于页面的缓存问题,将不会显示下图所示的页面。
3)页面显示 LAB013 ROOM 网站。