云计算实训16——关于web,http协议,https协议,apache,nginx的学习与认知

一、web基本概念和常识

1.Web
Web 服务是动态的、可交互的、跨平台的和图形化的为⽤户提供的⼀种在互联⽹上浏览信息的服务
2.web服务器(web server)
也称HTTP服务器(HTTP server),主要有 Nginx、Apache、Tomcat 等。
3.动态⻚⾯与静态⻚⾯的差别
(1)URL不同
静态⻚⾯链接⾥没有“?”
动态⻚⾯链接⾥包含“?”
(2)后缀不同 (开发语⾔不同)
静态⻚⾯⼀般以 .html .htm .xml 为后缀
动态⻚⾯⼀般以 .php .jsp .py等为后缀
(3)内容不同
静态⻚⾯的内容是固定的
动态⻚⾯的内容会因⽤户、浏览器、时间、地点等⽽发⽣变化。

二、HTTP 协议

HTTP协议是超⽂本传输协议的缩写,英⽂是Hyper Text Transfer Protocol。它是从WEB服务器传输超⽂本标记语⾔ (HTML) 到本地浏览器的传送协议。
1、HTTP 原理
HTTP是⼀个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML ⽂件,图⽚⽂件,查询结果等。 HTTP协议⼀般⽤于B/S架构。浏览器作为HTTP客户端通过URL向HTTP服务端即web服务器发送所有请求,web服务器收到客户端请求后进⾏响应。
2、HTTP 特点
1. http协议⽀持客户端/服务端模式,也是⼀种请求/响应模式的协议。
2. 简单快速:客户向服务器请求服务时,只需传送请求⽅法和路径。请求⽅法常⽤的有GET、HEAD、POST。
3. 灵活:HTTP 允许传输任意类型的数据对象。传输的类型由Content-Type 加以标记。除了可以响应字符串之外,还可以上传和下载⼆进制⽂件。
4. ⽆连接:限制每次连接只处理⼀个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不⾜,产⽣了两项记录 http 状态的技术,⼀个叫做 Cookie,⼀个叫做 Session。
5. ⽆状态:⽆状态是指协议对于事务处理没有记忆,后续处理需要前⾯的信息,则必须重传。
3、URI 和 URL 的区别
(1)HTTP使⽤统⼀资源标识符(Uniform Resource Identifiers, URI)来传输数据和建⽴连接。
        URI:Uniform Resource Identifier 统⼀资源标识符
        URL:Uniform Resource Location 统⼀资源定位符
(2)URI 是⽤来标识⼀个具体的资源的,我们可以通过 URI 知道⼀个资源是什么,使⽤它就能够
唯⼀地标记互联⽹上资源。
(3)URL 则是⽤来定位具体的资源的,标识了⼀个具体的资源位置。互联⽹上的每个⽂件都有⼀
个唯⼀的。
(4)URL,也就是我们俗称的⽹址,它实际上是 URI 的⼀个⼦集。
(5)URI 不仅包括 URL,还包括 URN(统⼀资源名称),它们之间的关系如下
常⻅请求⽅法
Ⅰ. 客户端向服务器提出请求的⽅法
1. GET: 去向服务器获取资源。即请求指定的⻚⾯信息,并返回
实体主体。
2.POST:⽤来传输请求的实体主体。向指定资源提交数据进⾏处理请求。数据被包含在请求体中。POST请求可能会导致新的资源建⽴或已有资源修改。
3.PUT:从客户端向服务器传送的数据取代指定的⽂档内容。
4.HEAD:从服务器端获取报⽂⾸部信息,确定客户端输⼊的 URL有效性和资源的更新⽇期。类似于get请求,只不过返回的响应没有具体内容,只⽤于获取头部
5.OPTIONS:⽤来询问服务器⽀持哪些⽅法。即获取服务器⽀持的请求⽅法
6.DELETE:⽤来删除⽂件的。请求服务器删除指定的⻚⾯
Ⅱ. 服务器回应报⽂

三、HTTPS 协议

HTTP⼀般是明⽂传输,很容易被攻击者窃取重要信息,鉴于此,HTTPS应运⽽⽣。
HTTPS 的全称为(HyperTextTransferProtocoloverSecureSocketLayer)
HTTPS 和 HTTP 有很⼤的不同在于 HTTPS 是以安全为⽬标的HTTP通道,在HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。
HTTPS 在 HTTP 的基础上增加了 SSL 层,也就是说HTTPS=HTTP+SSL。
1.HTTP使⽤明⽂传播的三⼤⻛险
(1)窃听⻛险(eavesdropping):第三⽅可以获知通信内容。
(2)篡改⻛险(tampering):第三⽅可以修改通信内容。
(3)冒充⻛险(pretending):第三⽅可以冒充他⼈身份参与通信。
SSL/TLS协议是为了解决这三⼤⻛险⽽设计的,希望达到:
(1)所有信息都是加密传播,第三⽅⽆法窃听。
(2)具有校验机制,⼀旦被篡改,通信双⽅会⽴刻发现。
(3)配备身份证书,防⽌⽌身份被冒充。
 
2、HTTPS 安全通信的四⼤原则
(1)机密性
就是对数据的加密,在传输数据的过程当中,如果被⼈劫持了数据,那么这个加密的数据对⽅不能轻易获得。
(2)完整性
是指数据在发送到接收的过程当中没有被篡改,从⽽接收到的数据是⼀个完整的数据内容。
(3)身份认证
数据传输的过程当中对于身份的验证,确认对⽅是传送数据过来的⼈。可以解决冒充这样的⻛险。
(4)不可否认性
不能否认已经发⽣的⾏为。⽐如刚才举例双⽅借钱需要有借据并且签名按⼿印,如此⼀来就不能抵赖。
3、通信原理
(1)对称加密
对称加密:通信双⽅都使⽤同⼀把密钥给报⽂进⾏加密和解密。
(密码验证)
对称加密具备速度快,性能⾼的特点。是HTTPS的最终采⽤的加密⽅式。 对称加密的通信过程中双⽅都需要同样的密钥。
(2)⾮对称加密
⾮对称加密:解决单项对称密钥的传输问题。就是加密和解密的双⽅使⽤不同的密钥。
(密钥对验证)
公钥, 是可以公开的。私钥,不能公开。
公钥加密的内容只有私钥可以解密,私钥加密的内容只有公钥可以解密。
(3)对称加密和⾮对称加密的综合版本
1. 某⽹站拥有⽤于⾮对称加密的公钥A、私钥A。
2. 浏览器向⽹站服务器请求,服务器把公钥A明⽂给传输浏览器。
3. 浏览器随机⽣成⼀个⽤于对称加密的密钥X,⽤公钥A加密后传给服务器。
4. 服务器拿到后⽤私钥A解密得到密钥X。
5. 这样双⽅就都拥有密钥X了,且别⼈⽆法知道它。之后双⽅所有数据都通过密钥X加密解密即
可。
成功!HTTPS基本就是采⽤了这种⽅案。
还有⼀个问题,公钥在传输过程中,也有可能被劫持替换,解决办法是数字证书。
(3)CA
认证机构,称为CA。服务端可以向CA申请认证证书,在证书上附加公钥信息,然后发布给客户端。服务端在申请证书的过程中,会提交⽐如DNS主机名等⽹站信息,CA会根据这些信息⽣成证书。
(4)证书
如此⼀来,客户端拿到证书之后,就可以获得证书上⾯我们附带的公钥,再⽤这个公钥加密‘对称加密的密钥’传递给服务端。
(5)数字签名
证书的真假可以通过数字签名来验证。数字签名就相当于学历证书上的证书编号。

四、apache服务

1.特点
模块化设置、开放源代码、跨平台应⽤、⽀持多种 web 编程语⾔、运⾏稳定。
2.⼯作模式
(1)Prefork:使⽤进程处理请求,在该模式中⽐较消耗内存,但稳定性⾼,如某个进程出现问题,不会影响其他请求。
(2)Worker:属于多进程模式,每个进程⽣成多个进程;在该模式下消耗的资源⽐较⼩,适合⾼并发请求,但稳定性没有 Prefork 模式稳定。
(3)Event:该模式与 Worker 模式较为相似,不同之处在于在该模式下可以解决keepalive ⻓连接时占⽤线程资源导致浪费的问题。
(4)keep-alive ⻓连接:TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建⽴新连接所需的时间,还节约了带宽。实现⻓连接要客户端和服务端都⽀持⻓连接。
3.搭建 apache 服务器
安装并设置防⽕墙
安装http服务
[root@server2 ~]# yum -y install httpd
#启 动apache
[root@server2 ~]# systemctl start httpd
#查看端⼝确认apache已启⽤
[root@server2 ~]# netstat -anpt | grep httpd
#查看防⽕墙是否启⽤,若启⽤则设置apache服务可通⾏规则
[root@server2 ~]# systemctl status firewalld.service
#设置防⽕墙放⾏apache
[root@server2 ~]# firewall-cmd --permanent --add-service=http 
#重载防⽕墙规则
[root@server2 ~]# firewall-cmd --reload
#查看当前区域下防⽕墙所有规则
[root@server2 ~]# firewall-cmd --list-all
apache 配置⽂件
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
apache 索引⽂件
[root@server2 ~]# vim /var/www/html/index.html
[root@server2 ~]# systemctl reload httpd #重载配置单
服务器访问测试
浏览器内输⼊搭建好的 httpd 服务器 IP 地址或域名(当前服务器地址为 192.168.33.110)

五、nginx服务

nginx服务器的特点

(1)模块化设计
Nginx 将模块分为核⼼模块、HTTP 模块、事件模块和邮件模块四类。每个模块都有特定的职责,
从⽽实现了整个 Web 服务器的功能。

(2)低内存消耗,⾼并发

Nginx 使⽤ epoll and kqueue 作为开发⼯具,能够⽀持最⼤50000 个并发连接数的响应;不论是系

统资源开销还是 CPU 使⽤效率都很优秀。

(3)事件驱动

nginx 采⽤异步⽅式处理请求。
同步:指在发送⽅发出消息后,需要等待接收到接收⽅发回的响应,或者通过回调函数来接收到对
⽅响应信息。
异步:指在发送⽅发出请求后,接收⽅不需要返回消息或者不等待返回消息,直接提供响应请求机
(4)⾼可靠性,master
⼀个主进程和多个⼯作进程。⼯作进程是单线程的,且不需要特殊授权即可运⾏;
master进程:主要⽤来监控worker进程⼯作状态进⾏相应重启、停⽌等操作。
worker进程:进⾏具体提供服务,接受请求和处理请求。
(5)⽀持热更新配置、⽇志⽂件滚动、平滑升级与 worker 架构
/usr/local/nginx/sbin/nginx -s reloadhtml⽬录中的⽂件发上修改之后,不需要nginx服务
可向 master 发送 USR1、QUIT 等信号,⽆需强制停⽌服务即可完成热更新。
向 master 发送的 USR1,可实现⽇志⽂件滚动。
向 master 发送的 USR2,可实现平滑升级。
(6)丰富的扩展模块
可在编译安装 nginx 时指定拓展模块,例如:nginx-sticky-module 模块(基于 cookie 来进⾏负载
转发)。
Nginx 和 Apache 区别
(1)架构
Apache 采⽤多进程架构,每个请求都由⼀个独⽴的进程处理;⽽Nginx采⽤异步事件驱动的架
构,可以处理更多的并发连接。
(2)性能
由于Nginx的架构设计,它可以处理更多的并发连接,⽽且在⾼负载情况下表现更加稳定和可靠。
因此,Nginx通常被认为是⽐Apache更⾼效的Web服务器。
(3)配置
Apache 的配置⽂件⽐较复杂,需要⼀定的学习和经验才能正确配置;⽽ Nginx 的配置⽂件⽐较简
洁和可读性强,更容易理解和配置。
(4)功能
ngin x有许多模块可以扩展其功能,例如 mod_rewrite ⽤于URL 重写,mod_ssl⽤于 SSL 加密等;
⽽apach 的功能⽐较简单,但是可以通过第三⽅模块扩展其功能。
Nginx 基本功能
静态资源 Web 服务器
nginx 可实现动静资源分离
基于域名/IP/端⼝的虚拟主机
⼀个 nginx 主进程,指定⼀个配置⽂件,配置⽂件内有多个虚拟主机。如果不⽤虚拟机,⼀个域名
就要对应⼀个服务器,浪费资源。
虚拟主机:在Web服务⾥就是⼀个独⽴的⽹站站点,这个站点对应独⽴的域名(也可能是IP或端
⼝),具有独⽴的程序及资源⽬录,可以独⽴地对外提供服务供⽤户访问。
Ⅰ.基于域名的虚拟主机
以不同的多个域名区分不同的虚拟主机(IP 相同),放在⼀个nginx服务上,能够让⽤户有序访问⽣产⽤途
Ⅱ.基于端⼝的虚拟主机
以不同的端⼝,来区分多个虚拟主机,也是放在⼀个nginx服务上,能够让⽤户有序访问
Ⅲ.基于 IP 的虚拟主机
以不同 IP 区分不同的虚拟主机。
HTTP/HTTPS、SMTP、POP3 和 TCP/UDP 反向代理
客户端代理,增强客户端的作⽤
反向代理是保护服务器
反向代理是⼀种代理服务器的配置模式,它代表服务器向客户端提供服务。
客户端发送请求到反向代理服务器,然后代理服务器将请求转发到后端的真实服务器上,并将响应
返回给客户端。简单理解为⽤户直接访问反向代理服务器就可以获得⽬标服务器的资源
负载均衡
所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游的应⽤服务器,这样即使某⼀个服务器宕机也
不会影响请求的处理,或者当应⽤服务器扛不住了,可以随时进⾏扩容。
⻚⾯缓存
Nginx 不仅仅是⼀个 Web 服务器,它还可以作为⼀个缓存服务器使⽤。
通过 Nginx 缓存,可以对⼀些静态资源或者数据更新频率较低的后端服务做缓存,降低静态资源或
后端服务的响应时间,同时也会降低后端的负载。
⽐如对⼀些图⽚,css或js做⼀些缓存,那么在每次刷新浏览器的时候,就不会重新请求了,⽽是
从缓存⾥⾯读取。这样就可以减轻服务器的压⼒。
⽀持代理 FastCGI、uWSGI 等应⽤服务器
CGI:描述了服务器(nginx,apache)和请求处理程序(django,flask,springboot web框架)之间传
输数据的⼀种标准。定义了客户端与服务器之间如何传输数据。
FastCGI:快速通⽤⽹关接⼝(Fast Common Gateway Interface/FastCGI)是⼀种让交互程序与
Web服务器通信的协议。FastCGI是早期通⽤⽹关接⼝(CGI)的增强版本。
WSGI:为Python定义的 web 服务器和 web 框架之间的接⼝标准。
uwsgi:uWSGI 服务器实现的独有的协议,定义传输信息的类型,是⽤于前端服务器与 uwsgi 的
通信规范(uWSGI 服务器⾃由的⼀个协议)。
uWSGI:⼀个Web Server(web服务器),即⼀个实现了WSGI协议的服务器,处理发来的请求及
返回响应。
⽀持 gzip、expires
当运维⼈员将要锁包放到html中,会⾃动部署nginx ⽀持资源压缩和缓存控制。
URL Rewrite
192.168.1.3/abc
192.168.1.3/a/b/c/
Rewrite 主要实现url地址重写,以及重定向,就是把传⼊web的请求重定向到其他 url的过程。
路径别名
资源路径的别名(root 和 alias)。
基于 IP、⽤户的访问控制
nginx 可对指定 IP ⽹段或某个特定 IP 做访问控制(allow:允许;deny:拒绝)。
11 )⽀持访问速率、并发限制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3279716.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

程序员学长 | 快速学会一个算法,ANN

本文来源公众号“程序员学长”,仅用于学术分享,侵权删,干货满满。 原文链接:快速学会一个算法,ANN 今天给大家分享一个强大的算法模型,ANN。 人工神经网络 (ANN) 是一种深度学习方法,源自人类…

5种IO模型简述

文章目录 前言什么是IO模型?阻塞IO非阻塞IO多路复用IO信号驱动IO异步IO 结语 前言 最近学netty,当然无法避免IO模型这部分知识。 我尽量用最简洁的语言来讲清楚这个东西。 什么是IO模型? 既然最近学netty,就拿它来举例子。 比如…

计算机网络必会面经

1.键入网址到网页显示,期间发生了什么 2.在TCP/IP网络模型中。TCP将数据进行分段后,为什么还需要IP层继续分片 3.详细说明tcp三次握手,为什么是三次,若每次握手丢了,解决办法是什么 4.详细说明tcp四次挥手&#xff…

【JS|第22期】深入理解跨域

日期:2024年7月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xff…

esp-idf-v5.1.1所有官方例程讲解(esp32、esp32-C2、esp32-S3)之 a2dp_sink 详解

目录 1. 获取ESP-IDF和示例代码 2. 导航到示例代码 3. 示例代码结构 4. 关键文件解析 main.c 初始化和配置: bt_app_core.c 和 bt_app_core.h bt_app_av.c 和 bt_app_av.h A2DP事件处理: AVRCP事件处理: bt_app_sink.c 和 bt_app_sink.h 5. 编译和烧录 6. 测试…

新一代打工人用什么电脑桌面提醒的备忘录比较好?

在这个为了生活而起早贪黑的时代,新一代的打工人每天都需要处理大量的工作和信息。为了提高工作效率,选择一款合适的电脑桌面备忘录工具显得尤为重要。那么,什么样的备忘录工具才是最适合我们的呢? 首先,我们需要的是…

【研发日记】Matlab/Simulink技能解锁(十一)——Stateflow中的en、du、ex应用对比

文章目录 前言 项目背景 en类型 du类型 ex类型 组合类型 分析和应用 总结 参考资料 前言 见《【研发日记】Matlab/Simulink技能解锁(六)——六种Simulink模型架构》 见《【研发日记】Matlab/Simulink技能解锁(七)——两种复数移相算法》 见《【研发日记】Matlab/Simul…

机械拆装-基于Unity-本地数据持久化

目录 1. 数据结构简介:数据的集合 1.1 线性数据结构 1.2 非线性数据结构 2. 对数据集合的操作: 3. 数据持久化 3.1 数据的序列化存储 3.2 JSON文件硬盘存储 3.2.1 Json文件允许存储的数据类型 3.2.2 Json文件的语法格式 3.2.3 Json文件的读取 3.2.4 …

【C#】ThreadPool的使用

1.Thread的使用 Thread的使用参考:【C#】Thread的使用 2.ThreadPool的使用 .NET Framework 和 .NET Core 提供了 System.Threading.ThreadPool 类来帮助开发者以一种高效的方式管理线程。ThreadPool 是一个线程池,它能够根据需要动态地分配和回收线程…

yolov8pose 部署rknn(rk3588)、部署地平线Horizon、部署TensorRT,部署工程难度小、模型推理速度快,DFL放后处理中

特别说明:参考官方开源的yolov8代码、瑞芯微官方文档、地平线的官方文档,如有侵权告知删,谢谢。 模型和完整仿真测试代码,放在github上参考链接 模型和代码。 之前写了yolov8、yolov8seg、yolov8obb 的 DFL 放在模型中和放在后处理…

XXE-lab-master靶场:PHP_xxe

目录 有回显 测试回显位置 构建payload 无回显数据外带 构建payload 漏洞修复 XXE-lab是一个一个包含php,java,python,C#等各种语言版本的XXE漏洞靶场。 下载地址:https://github.com/c0ny1/xxe-lab 将PHPStudy的中间件与版本信息调制为 php-5.4.29Apache 以…

UCC5320SCDWVR驱动SIC的功耗计算

驱动功耗可以通过分析器件的电气特性和推荐的电源电压来估算。以下是一些关键信息,用于估算功耗: 电源电流: 输入电源静态电流(IVCC1​):最小值为1.67 mA,典型值为2.4 mA。输出电源静态电流&am…

计算机毕业设计选题推荐-零食批发商仓库管理系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

刷题了:226.翻转二叉树 | 101. 对称二叉树

226.翻转二叉树 文章讲解:https://programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html 视频讲解:https://www.bilibili.com/video/BV1sP4y1f7q7/?spm_id_from333.788&vd_sourcee70917aa6392827d1ccc8d85e19e8375 题目链接:https://leetcode.cn…

从PyTorch官方的一篇教程说开去(5 - 神经网络 torch.nn)

神经网络长啥样?有没有四只眼睛八条腿? 借图镇楼 - 真的是非常经典,可以给下面的解释省掉很多力气。 分3个维度阐述 - 1)输入数据集。假如你自己去微调一下大模型就知道,最开始的一步就是要准备(足够大…

视频生成AI工具——PixVerse V2 登场:支持一键生成5段、最长 40S 连续视频!

就在昨天,光源伙伴 「 爱诗科技 」正式发布其视频生成产品 PixVerse V2 , 并全球同步开放,更低门槛,更高质量,更有逻辑,更长时长,这几个“更”,让这款产品受到了超高关注,今天带大家…

GD32手把手教你移植FlashDB(片外Flash) -- 3.FlashDB使用

GD32手把手教你移植FlashDB(片外Flash) – 1.FlashDB-sfud移植 GD32手把手教你移植FlashDB(片外Flash) – 2.FlashDB移植 GD32手把手教你移植FlashDB(片外Flash) – 3.FlashDB使用 示例代码: https://gitee.com/ljmRD/GD32F427_FlashDB 3.FlashDB使用 main() /*************…

华为云上如何创建桶

目录 一、进入对象存储服务(OBS)页面,点击【创建桶】二、输入桶的相关信息三、获取 projectId四、获取 OBS Endpoint五、获取 AK/SK一、进入对象存储服务(OBS)页面,点击【创建桶】 二、输入桶的相关信息 可以勾选购买套餐: 点【立即创建】按钮完成桶的创建。 三、获取…

Vue3开源Tree组件研发:节点勾选支持v-model

自研Tree组件有两个原因:1. 目前开源UI对Tree组件的用户API不太友好,2. 提升Vue3组件自研能力。 目前已实现的功能见上面思维导图。想象Tree组件的一个使用场景:后台管理员通过Tree组件来完成用户角色授权,同时支持对权限进行新增…

【和相同的二元子数组】python刷题记录

R2-前缀和专题 目录 前缀和哈希表 双指针 ps: 第一眼过去,这题应该能用双指针解出来,应该也能用前缀和解题。 前缀和哈希表 适用于 nums[i] 值不固定为 0 和 1 的其他情况 class Solution:def numSubarraysWithSum(self, nums: List[int], goal: i…