首页 > 其他分享 >阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问

时间:2023-04-22 14:32:43浏览次数:38  
标签:负载 HTTP https 运维 xxx HTTPS 服务器 http 监听

实验概述

    互联网巨头雅虎官方对外发布消息,承认在2014年的一次黑客袭击中,至少5亿用户的数据信息遭窃。此次事件让我们再次意识到网站安全的重要性,网站加密防护的必要性。我们可以使用HTTPS协议对网站进行全站加密,但是,大部分用户已经习惯直接输入域名(即使用 HTTP 协议)访问网站。因此,企业需要将用户的 HTTP 请求转化为 HTTPS 请求进行访问。这个问题在传统的 IT 架构中已经得到解决,但是在云上如何解决 HTTP 与 HTTPS 的混合访问?   

    本实验使用负载均衡配置监听,利用Nginx实现HTTP请求向HTTPS请求的转化,从而完成HTTP和HTTPS的混合访问。

HTTP请求转化为HTTPS请求架构图

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP

转化后输入IP自动跳转成HTTPS协议访问页面

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_02

HTTPS 协议

    HTTPS 能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用 HTTPS 协议。

  • 基本概念

    HTTPS 是更安全的 HTTP 协议,它在 TCP(负责网络数据传输)和 HTTP层 之间,增加了一个 SSL 层。这一层通过数字证书和加密算法对 HTTP 请求进行加密。已经采用 HTTP 协议的网站要过渡到 HTTPS,将在技术改造服务器资源、流量资源上付出更多成本。
  • 工作流程

     HTTPS 其实是有两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_03


负载均衡监听

负载均衡提供四层(TCP/UDP协议)和七层(HTTP/HTTPS协议)监听,您可根据应用场景选择监听协议:

  • 负载均衡四层监听将请求直接转发到后端ECS实例,而且不修改标头。
  • 负载均衡七层监听原理上是反向代理的一种实现,客户端HTTP请求到达负载均衡监听后,负载均衡服务器会通过与后端ECS建立TCP连接,即再次通过新TCP连接HTTP协议访问后端,而不是直接转发报文到后端ECS。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_04

实验目标

   完成此实验后,可以掌握的能力有:

1,使用负载均衡配置HTTP和HTTPS监听,支持HTTP请求和HTTPS请求的混合访问;

2,使用Nginx将HTTP请求转化为HTTPS请求;

实验实施

使用HTTP请求查看网站服务器

    本小节主要内容:直接通过 ECS 实例的 IP 地址,访问并查看已部署的 Web 网站。

实验资源:

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_05

访问 Web服务器01 的网站信息:

新建一个浏览器页面,并输入 Web服务器01 的 弹性ip ,浏览网站 LAB013 ROOM 。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_06

参考如上步骤,在浏览器中,输入 Web服务器02 的 弹性ip ,并访问 Web服务02 网站。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_07

可以查看到两台服务器的内容完全一致。一般情况下,为了保证企业业务的持续性,企业会将生产环境部署到两台相同的服务器中。这样在高并发时,通过负载均衡可以将网站的流量分发到不同的服务器后端,从而提升用户体验。

负载均衡中添加HTTP和HTTPS监听

    本小节主要内容:在负载均衡(SLB)中添加 HTTPS 和 HTTP 协议监听

1. 登录实验子账号,进入阿里云控制台。您可以通过以下2种方法来访问控制台,任选其中一种即可。

进行实验资源子账号登录:

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_08

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_09

2. 找到并进入阿里云负载均衡(SLB)管理控制台:

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_10

3. 通过如下步骤,进入 实验资源 提供的 负载均衡 实例的管理页面:

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_11

4. 通过如下步骤,添加 负载均衡 的 HTTPS 协议的监听。

1)在负载均衡实例页面,点击下侧栏的 监听 

2)在实例监听页面,点击右侧 添加监听 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_12

3)在 基本配置 页面,配置如下信息:

  • 前端协议[端口]:选择 HTTPS ,并填写端口号为 443 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_13

  • 服务器证书 :选择已有服务器证书 lab-ca 。

说明:SLB 的服务器证书是本实验已提供的公共资源。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_14

  • 其余配置信息保持默认,完成如上配置后,点击 下一步 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_15


4)在负载均衡后端添加 ECS 实例-选择默认服务器组

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_16


通过添加,把提供的两台ECS服务器放到SLB资源池。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_17

确认后,在服务器后端,填写80,然后点击下一步

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_18

说明:本实验中不会对添加的 ECS 实例进行健康检查,但是,在真实的工作环境中,强烈建议用户开启健康检查。健康检查的操作和使用,请参考实验  SL010 使用SLB实现持续性高并发访问 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_19

5)等待 3-5 秒,提示 恭喜,监听配置成功 ,完成后,点击 确认 。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_20

6)返回监听配置页面,查看到新建 HTTPS:443 监听的 状态 为 运行中 。此时,HTTPS协议监听添加成功。

5. 通过如下步骤,添加 负载均衡 的 HTTP 协议的监听。

1)再次点击页面下侧的 添加监听 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_21

2)在 基本配置 页面,配置如下信息:

  • 前端协议[端口]:选择 HTTP ,并填写端口号为 80 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_22

后端服务器组,选择默认服务器组

  • 后端协议[端口]:默认使用 HTTP ,填写端口号为 88 ;
  • 其余配置信息保持默认,完成如上配置后,点击 下一步 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_23

说明:本实验中使用 88 端口进行判定和转发的,在真实的工作环境中,用户请根据实际情况设置端口信息。

3)在健康检查配置中,关闭 健康检查,完成后,点击 确认 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_24

4)等待 1-3 秒,提示监听配置成功 ,完成后,点击 确认 。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_25

5)在监听配置中,可以查看到新建监听 HTTP:80 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_26

分别查看两种请求的访问效果

    本小节主要内容:测试负载均衡的监听是否生效。

1. 验证 HTTP 协议监听:在浏览器中新建一个页面,输入 提供的 负载均衡 的 IP地址 。此时,页面提示 502 错误。证明 HTTP 协议监听开启,但是无法正常访问网站。

说明:HTTP请求没有经过加密,需要在之后的的步骤中进行配置,将它转化为HTTPS请求才能够访问。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_27

2. 通过如下步骤,验证 HTTPS 协议监听:

1)在浏览器中,新建页面,并输入 https://xxx.xxx.xxx.xxx (其中 xxx.xxx.xxx.xxx 为 实验资源 提供的 负载均衡 的 IP地址

注意:必须输入 https:// ,否则会出现访问错误。

2)页面提示 您的连接不是私密连接 ,点击页面下端的 高级 

说明:由于本实验使用的是公共证书,因此会出现这样的提示。在真实的工作环境中,若上传到SLB的证书是有效的,则不会出现这样的提示。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_28

3)展开信息提示证书的相关信息,点击 继续前往xxx.xxx.xxx.xxx(不安全) 

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_29

4)页面显示 LAB013 ROOM 网站,证明 HTTPS 监听配置成功,且用户可以通过 HTTPS 访问到后端服务器部署的网站。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_30

HTTP请求转化为HTTPS请求

    本小节主要内容:通过重定向的方式将来自 HTTP 请求转发到 HTTPS,实现用户直接通过输入负载均衡 IP 地址就可以直接访问网站。

1.使用远程工具连接进行修改配置

输入Web服务器01 的账号信息,登录服务器,命令如下:

ssh root@[ip]

回车之后复制 密码 输入

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_31

注意:密码输入时,输入框不会有反应,输入完之后直接回车即可

2. 通过如下步骤,修改 Nginx 配置文件:将所有 88 端口请求,都转发到负载均衡的 HTTPS 协议的 IP 访问地址:

输入如下命令,进入 Nginx 配置文件的编辑页面。

vim /etc/nginx/nginx.conf

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_32

清空 85 行到 94 行的注释 ,如下图所示:

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_33

修改 rewrite 的参数信息,将 xxx.xxx.xxx.xxx 替换为 实验资源 提供的 负载均衡 的 IP地址 

说明:在真实的工作环境中,若使用域名访问,请将此处的 https://xxx.xxx.xxx.xxx 替换为 https 协议访问的域名。例如:https://lab.aliyunedu.net。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_34

进行保存退出

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_35


3. 执行如下命令,重启Nginx。

service nginx restart

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_36

4. 参考如上步骤,修改 Web服务器02 的信息。

1)登录到 实验资源 提供的 Web服务器02 。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_37

2)修改 Nginx 配置文件。

vim /etc/nginx/nginx.conf

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTP_38

3)重启 Nginx 服务器:

service nginx restart

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_39

5. 完成如上配置后,通过如下步骤,验证通过负载均衡的 HTTP 访问网站,是否可以自动跳转到 HTTPS 访问:

1)在浏览器中,输入并访问 负载均衡 的 IP地址 

2)可以看到,直接跳转到 https 协议访问页面,点击 继续访问 

说明:建议使用另一个浏览器查看结果,因为会由于页面的缓存问题,将不会显示下图所示的页面。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_HTTPS_40

3)页面显示 LAB013 ROOM 网站。

阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问_负载均衡_41


标签:负载,HTTP,https,运维,xxx,HTTPS,服务器,http,监听
From: https://blog.51cto.com/lyx888/6215271

相关文章

  • 阿里云1+X云计算开发与运维实战——负载均衡使用初体验
    本实验通过使用阿里云负载均衡SLB以及对负载均衡SLB后端服务器ECS的权重进行修改,可以快速解决上述的问题。实验目标 完成此实验后,可以掌握的能力有:配置负载均衡SLB的监听规则,并将ECS实例部署到SLB后端;通过设置负载均衡SLB后端服务器ECS的权重值,分配用户访问后端ECS实例的比例。背景......
  • 体验下 slint ui (https://slint-ui.com/)
    先总结下结论:这个框架目前功能还不完善,但是想法真是挺好的,如果路线不错,将来还是有希望的。slint-ui是Qt前员工搞出来的一个新的ui,用rust写的,目前支持使用rust/c++/javascipt开发。ui使用了一个新的语言,这个语言很像QML,描述控件的功能都可以完成,但是复杂的action还得用开发语言来......
  • K8s 日志高效查看神器,提升运维效率10倍!
    通常情况下,在部署了 K8S 服务之后,为了更好地监控服务的运行情况,都会接入对应的日志系统来进行检测和分析,比如常见的 Filebeat+ElasticSearch+Kibana 这一套组合来完成。虽然该组合可以满足我们对于服务监控的要求,但是如果只是部署一个内部单服务用的话,未免显得大材小用,而且......
  • 解决http下navigator.clipboard为undefined的问题
    clipboard只有在安全域名下才可以访问(https、localhost),而http域名下只能得到undefined。例如现在想要实现点击"分享"按钮,将当前页面的url复制到剪贴板:constclipboard=navigator.clipboardif(clipboard){clipboard.writeText(window.location.href)}在本......
  • 关于Nginx作为http-web服务器时对404错误页面的配置
    当我们访问一下Ngin部署的网站时,如果访问一个不存在的资源时,默认服务端会返回404错误,如下所示其实这个页面,我们也是可以自己创建一个页面作为404的返回的,可以通过即可以通过error_page code ...[=[response]] uri;进行配置其他说明:关于error_page指定能写的位置段为:ht......
  • Qt使用Http协议进行通信
    原文地址blog.csdn.net原文链接在使用Qt框架进行应用开发的过程中,很多时候需要进行客户端与服务端的网络通信,这时候就需要Qt的internet模块。而网络通信中最常用的协议就是http协议,Qt对http协议的调用进行了封装,使用非常方便。这里对常用的http请求demo做一下总结,方便大家参......
  • java 实现简单的http服务器
    1、废话不多说,代码如下packagecom.linhuaming.test;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.ServerSocket;importjava.net.Socket;/***http服务器测试*/publicclassHttpServerTest{publi......
  • Socks5代理与HTTP代理:基本概念、工作原理和在网络应用中的应用
      在互联网上,代理服务器是一种非常重要的技术手段,可以实现许多网络应用的高效和安全运行。Socks5代理和HTTP代理是两种常见的代理服务器类型,它们在网络应用中都有着重要的作用。本文将介绍Socks5代理和HTTP代理的基本概念、工作原理以及在网络应用中的应用。第一部分:Socks5代理......
  • https
    (12条消息)httplib库的使用(支持http/https)(一)_秋杪的博客-CSDN博客 ip.dst== &&tcp&&tcp.port==0x9527#include<stdio.h>#include<stdlib.h>#include<stdint.h>#include<string.h>#defineCPPHTTPLIB_OPENSSL_SUPPORT#include&......
  • XMLHttpRequest实现异步请求
    XMLHttpRequest基本概念XMLHttpRequest是一种用于在Web浏览器和服务器之间进行异步数据交换的技术。它可以在不重新加载页面的情况下向服务器发送HTTP请求,接收和处理来自服务器的响应,并更新网页的部分内容。XMLHttpRequest也被称为XHR,它是一种在Web开发中常用的JavaScriptAPI。......