运维SRE-19 网站Web中间件服务-http-nginx

Ans自动化流程

在这里插入图片描述

1.网站集群核心协议:HTTP

1.1概述

web服务:网站服务,网站协议即可.
协议:http协议,https协议
服务:Nginx服务,Tengine服务....

1.2 HTTP协议

  • http超文本传输协议,负责数据在网站与客户间互相传输(客户要页面,网站给页面.)
  • 超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在[TCP]之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

2)发展

http版本http0.9/1.0http1.1http2.0http3.0
共同点请求-响应请求-响应请求-响应请求-响应
区别短连接(耗费服务端资源)长连接(不会立即断开,连接(会话)保持断开)长连接,效率更高,仅支持https…
tcptcptcpudp
tcp3次握手,建立连接.
发出请求要页面,服务端给你响应页面.
tcp4次挥手,断开连接.

http1.1 vs 2.0 速度区别:http1.1 vs 2.0 速度区别

3)HTTP请求与响应
在这里插入图片描述

4)HTTP请求详解
a)http请求概述

HTTP请求报文(数据包)内容:
	携带用户的基本信息:浏览器,版本
	携带用户的请求信息:http协议版本,域名,请求文件及路径
	还有一些额外信息...
curl -v www.baidu.com或者通过wireshark抓包
这里通过wget --debug www.baidu.com获取请求报文

DEBUG output created by Wget 1.14 on linux-gnu.

URI encoding = “UTF-8”
Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8)
Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8)
--2023-11-08 02:23:05--  http://www.baidu.com/
正在解析主机 www.baidu.com (www.baidu.com)... 120.232.145.144, 120.232.145.185, 2409:8c54:870:28:0:ff:b049:5cef, ...
Caching www.baidu.com => 120.232.145.144 120.232.145.185 2409:8c54:870:28:0:ff:b049:5cef 2409:8c54:870:2a:0:ff:b0ae:1bcf
正在连接 www.baidu.com (www.baidu.com)|120.232.145.144|:80... 已连接。
Created socket 3.
Releasing 0x0000000002080cb0 (new refcount 1).

---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.14 (linux-gnu)
Accept: */*
Host: www.baidu.com
Connection: Keep-Alive

---request end---
已发出 HTTP 请求,正在等待回应... 
---response begin---
HTTP/1.1 200 OK
Content-Length: 2381
Content-Type: text/html
Server: bfe
Date: Tue, 07 Nov 2023 18:23:06 GMT

---response end---
200 OK
Registered socket 3 for persistent reuse.
长度:2381 (2.3K) [text/html]
正在保存至: “index.html”

在这里插入图片描述

b)http请求-起始行
请求办法: 用户如何访问网站(上传,下载)

http请求办法
GET请求下载,一般对应"看"
POST请求上传,一般对应的是"登录",“上传图片,视频,头像”
HEAD请求只查看,响应头部信息(服务端),一般应用"检查网站是否可以访问",“查看服务端信息”
URL:统一资源定位符,url地址.网址.用于让用户找出网站及资源的位置.
URI:统一资源标识符:正常来说URI范围会更广泛. web服务器中uri仅仅表示域名/(斜线后面的内容)

在这里插入图片描述
在这里插入图片描述

http协议版本
http1.0/1.1
请求起始行核心

请求方法: GET/POST/HEAD
URI:知道URL哪一部分即可

c) http请求-请求头

提供客户端的基本信息:浏览器,访问域名
  • User-Agent: Windows NT 10.0; Win64; x64
  • User-Agent:用户的客户端(用户使用什么访问的网站
谷歌浏览器信息:
#windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36

#苹果
mac/ios

#移动设备
iphone/android
  • Host: www.baidu.com
  • 用户访问域名部分

浏览器调试

1.打开网站与页面
2.找出 请求起始行信息和请求头信息
3.浏览器F12功能

5)http响应详解

http响应报文中主要显示的是服务端的信息
	服务端是否有这个文件,文件类型..
	服务端基本信息:服务名字,版本..

a)http响应起始行
http状态码

  • 服务端发送给客户端,表示索要资源的状态(有/没有)
  • 应用场景: 排错与监控分析网站情况.
http状态码分类含义
2xx正常:找到了,有这个,这个文件存在…
3xx正常:搬家了,跳转
4xx错误:客户端原因
5xx错误:服务端原因
http常见错误码含义
200表示正常,索要的内容已经得到,上传成功.
301 Moved Permanently永久跳转
302 Found或Moved Temporarily临时跳转
304 Not modified用户访问的是浏览器缓存.浏览器访问网站的时候,用户访问的是缓存.
403 Forbidden拒绝访问/权限拒绝.一般是网站权限设置,网站首页文件问题
404 Not Found没有这个文件/目录, 你访问的资源服务器的站点目录上没有. 用户访问写错了. 网站配置文件.
500 Internal ServerError服务器内部错误,原因一般是服务端配置文件,selinux开启,服务模块没安装…一般配合服务的错误日志一起查看
502 Bad GateWay网关错误,一般在负载均衡,代理服务器中出现,后端的节点都挂了(无法访问)
503 Service Unavaliable服务临时不可用故障:后端节点因为负载高,导致临时不可用,显示这个提示.系统升级:网站升级的时候可以显示这个状态码
504 Gateway Timeout与上面类型:临时不可用,网络,负载…

在这里插入图片描述

在这里插入图片描述

状态码大全
Server:
web服务器使用的是什么:nginx,tengine
6)http请求与响应小结

应用:nginx相关web服务排错必备.面试常问.
http请求报文结构与核心内容
	http请求起始行:请求办法 url
	http请求头中:User-Agent客户端浏览器,Host域名
http响应报文结构:
	响应报文起始行:状态码
	响应报文头部:Server:什么web服务

1.3 用户请求与http协议

面试题:用户访问网站流程/介绍公司网站架构/介绍你公司app数据流

  • 1.用户输入域名,域名进行DNS解析(得到域名的ip)
  • 2.tcp3次握手(ip+端口80/443) 建立连接
  • 3.客户端向服务端发出http请求报文: 请求起始行,客户端信息
  • 4.服务端收到请求后进行处理(未来可以讲解网站架构).
  • 5.服务端给客户端发出http响应报文: 响应起始行,服务端信息
  • 6.tcp 4次挥手,断开连接

在这里插入图片描述

在这里插入图片描述

1.4网站核心指标

衡量网站访问情况的一些指标.

网站的访问情况指标含义应用如何计算
IP访问你网站的ip数量(公网ip)分析用户访问情况,只看这个指标容易估算访问量的小了.统计访问日志对ip去重.
PVPage View页面访问量(每个页面被访问的次数)分析用户访问情况的时候,只看这个指标容易导致估算过大统计日志行数
UVUnique Vistor独立访客数量(用户)分析用户访问情况的时候,相对准确些.统计的加上客户端的浏览器类型…未来通过第三方插件实现
DAUDaily Active User日活:日活跃用户.(app)用于分析app活跃度通过代码与数据库分析
MAU月活:月度活跃用户.用于分析app活跃度.通过代码与数据库分析.
如何统计这些指标:
	ip,pv,uv,通过日志统计.
	一般的统计方法,第3方插件/代码,进行统计,比如:百度,谷歌统计.
	通过开源统计工具: matomo(原名piwiki) 测试网站:https://demo.matomo.org
	
	查询网站访问情况:https://alexa.chinaz.com

2.网站核心WEB服务: Nginx

2.1 概述

网站架构中的WEB服务.
web服务(网站服务)也可以叫做WEB中间件.
Nginx : Engine X,俄罗斯人开发出来.被F5(硬件负载均衡企业)收购.
Apache: web服务.

2.2 WEB中间件

WEB中间件特点官网
Nginx高性能,配置简单,要求对http://nginx.org
Tengine淘宝对ngx二次开发,增加内置功能,优化.http://tengine.taobao.org
OpenResty对ngx进行二次开发,lua的web服务.https://openresty.org
Tomcat主要处理JAVA语言http://tomcat.apache.org
apacheweb服务,目前应用较少http://httpd.apache.org

2.3Nginx-特点

1)Nginx功能

nginx作为web服务.
nginx作为负载均衡与代理服务. (lvs,haproxy)
nginx作为缓存服务.
nginx安全功能.

2)Nginx特点

1.支持高并发:能支持几万并发连接(特别是静态小文件业务环境)
2.资源消耗少:在3万并发连接下,开启10个Nginx线程消耗不到200MB内存
3.可以做HTTP反向代理及加速缓存,即负载均衡功能。内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或者lvs的功能
4.具备squid等专业缓存软件等的缓存功能
5.支持异步网络IO事件原型epoll(linux 2.6+)

3)Ngx vs Apache

ginx使用的是一种异步网络IO模型。
Apache使用的是一种同步的网络io模式。

同步:网站处理慢。 用户发出请求,网站立刻处理,如果不处理客户排队或丢弃。
异步:网站处理快,一般利用缓存实现。 用户发出请求,网站不立刻处理,网站找个地方把请求存放起来,然后网站一个一个快速处理。。

步目标:通过缓存,队列把用户请求临时存放,减轻用户大量访问对服务器要求。网站优化的一句话:缓存无处不在。


su-幼儿园叔叔。
su-同步模式: 挨个去问小朋友,是否要去洗手间。
su-异步模式: 画个圈圈,需要去洗手间的小朋友,请进入圈中,su定时把圈里的带到洗手间。


su-舍管大爷(女生)郑同学来女朋友。
su-同步模式: 苏大爷带着郑同学一个一个寝室找。
su-异步模式: 苏大爷拿出本本说你要找的人叫啥,根据本子找出寝室,然后找人。

4)Ngx vs Tengine
Tengine需要编译安装。

NgxTengine
安装方式yum/rpm/编译编译安装.
使用增加额外功能,编译安装。Tengine编译安装.软件包中自带很多常用软件(功能)。使用方法,错误提示优化。最新的是基于nginx 1.18.0.
使用使用方便,错误提示默认的。使用方便,错误提示优化。
版本新版本。1.20.2最新的是基于nginx 1.18.0.

在这里插入图片描述

2.4 Ngx版本选择

  • 1.稳定版本。 (偶数)
  • 2.距今6个月-1年版本。1.18 2020年 1.14 2018年
  • 3.日常搜搜准备要用的版本的漏洞情况 nginx 1.20.2 漏洞

2.5 Ngx急速使用指南

nginx yum安装
CentOS 7的epel源中有nginx 1.20.1  #旧的。
手动在linux配置nginx源:1.20.2  1.21.xxx

安装过程

1.配置yum源
cat nginx.repo
[nginx]
baseurl = http://nginx.org/packages/centos/$releasever/$basearch/
enabled = 1
gpgcheck = 0
name = nginx stable repo

#安装
yum install -y nginx

#安装并配置自启动
3.systemctl start nginx
4.systemctl enable nginx

#查状态以及端口和线程
5.systemctl status nginx
6.ss -lntup|grep nginx
7.ps -ef|grep nginx

在这里插入图片描述

总结

1.HTTP请求报文结构和核心内容. ⭐⭐ ⭐ ⭐ ⭐ 
2.HTTP响应报文结构和核心内容.⭐⭐ ⭐ ⭐ ⭐ 
3.用户访问网站流程⭐⭐ ⭐ 
4.网站访问量指标.知道(熟悉)常见WEB中间件(web服务)Nginx vs Apache (同步vs异步)⭐⭐ ⭐ ⭐ 
5.部署nginx(手动配置yum源)安装nginx启动nginx
6.	常用命令:查看端口,查看进程,curl/wget

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NXP实战笔记(七):S32K3xx基于RTD-SDK在S32DS上配置ICU输入捕获

目录 1、概述 2、输入捕获SDK配置 2.1、SAIC中断方式 2.2、IPWM或者IPM 1、概述 输入捕获,可以抓取高电平时间、低电平时间、占空比、周期、边沿检测与回调函数、边沿计数(ABZ解码)、时间戳、唤醒中断。 记录一下根据Emios模块实现上述部分…

应对电脑重新分区文件消失:预防措施、常见成因与恢复关键要点

电脑重新分区文件不见了是一个常见的问题,通常发生在用户对硬盘进行重新分区、格式化或操作系统重装过程中,可能导致已存在的文件和数据暂时不可见或永久丢失。 **预防文件丢失的方法:** 1. **提前备份**: 在进行任何重大磁盘操作前&#xff…

3分钟看懂设计模式01:策略模式

一、什么是策略模式 定义一些列算法类,将每一个算法封装起来,并让它们可以互相替换。 策略模式让算法独立于使用它的客户而变化,是一种对象行为型模式。 以上是策略模式的一般定义,属于是课本内容。 在没有真正理解策略模式之…

数据结构与算法——排序算法

目录 文章目录 前言 一.排序的基本概念 1.什么是就地排序 2.什么是内部排序和外部排序 3.什么是稳定排序 4.判定一个排序算法的是稳定的 二.插入排序算法 1.直接插入排序 1.1基本思想 1.2复杂度 1.3稳定性 1.4代码演示 2.折半插入排序 2.1基本思想 2.2性能 3.…

AIGC 实战:如何使用 Docker 在 Ollama 上离线运行大模型(LLM)

Ollama简介 Ollama 是一个开源平台,用于管理和运行各种大型语言模型 (LLM),例如 Llama 2、Mistral 和 Tinyllama。它提供命令行界面 (CLI) 用于安装、模型管理和交互。您可以使用 Ollama 根据您的需求下载、加载和运行不同的 LLM 模型。 Docker简介 D…

【Unity】Unity与安卓交互

问题描述 Unity和安卓手机进行交互,是我们开发游戏中最常见的场景。本教程将从一个简单的例子来演示一下。 本教程需要用到Android Studio2021.1.1 1.Android Studio新建一个工程 2.选择Empty Activity 然后点击Next 3.点击Finish完成创建 4.选择File-New-New Mo…

#LLM入门|Prompt#1.3_迭代优化_Iterative

有了任务想法后,可以先编写初版 Prompt,注意清晰明确并给模型充足思考时间。运行后检查结果,如果不理想,则分析 Prompt 不够清楚或思考时间不够等原因,做出改进,再次运行。如此循环多次,终将找到…

国际联合行动“克罗诺斯”成功打击LockBit勒索软件组织,基础设施遭查封

在一场旷日持久的执法行动中,美国联邦调查局(FBI)和其国际盟友终于成功打击了臭名昭著的网络犯罪团伙LockBit。通过名为“克罗诺斯”的联合执法行动,执法部门取得了阶段性的胜利,但与网络犯罪的斗争依然任重道远。 第一章 克罗诺斯行动的进展…

关于el-select值的回显问题 : 框内显示label值还是value值

<el-form-item label"状态" prop""><el-selectv-model"roleForm.state"class"m-2"size"large"style"width: 240px"placeholder"请选择状态"value-key"value"//value-key 与下面的ke…

【Python笔记-设计模式】适配器模式

一、说明 适配器模式是一种结构型模式&#xff0c;它使接口不兼容的对象能够相互合作 (一) 解决问题 主要解决接口不兼容问题 (二) 使用场景 当系统需要使用现有的类&#xff0c;但类的接口不符合需求时当需要一个统一的输出接口&#xff0c;但输入类型不可预知时当需要创…

使用openai-whisper实现语音转文字

使用openai-whisper实现语音转文字 1 安装依赖 1.1 Windows下安装ffmpeg FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 # ffmpeg官网 https://ffm…

React18源码: reconcliler启动过程

Reconcliler启动过程 Reconcliler启动过程实际就是React的启动过程位于react-dom包&#xff0c;衔接reconciler运作流程中的输入步骤.在调用入口函数之前&#xff0c;reactElement(<App/>) 和 DOM对象 div#root 之间没有关联&#xff0c;用图片表示如下&#xff1a; 在启…

多线程-day4

1>多线程完成文件拷贝 代码&#xff1a; #include<myhead.h>//参数结构体创建 typedef struct INFO {const char *srcfile;const char *destfile;int length; }Info;//定义获取文件长度的函数 int get_file_len(const char *srcfile,const char *destfile){int srcf…

C++秋招必知必会(常用排序算法)

参考引用 Hello 算法 常用排序算法 1. 选择排序 1.1 算法原理与流程 开启一个循环&#xff0c;每轮从未排序区间选择最小的元素&#xff0c;将其放到已排序区间的末尾设数组的长度为 n n n&#xff0c;选择排序的算法流程如下图 初始状态下&#xff0c;所有元素未排序&…

QEMU源码全解析 —— virtio(22)

接前一篇文章&#xff1a;QEMU源码全解析 —— virtio&#xff08;21&#xff09; 前几回讲解了virtio驱动的加载。本回开始讲解virtio驱动的初始化。 在讲解virtio驱动的初始化之前&#xff0c;先要介绍virtio配置的函数集合变量virtio_pci_config_ops。实际上前文书也有提到…

电脑亮度怎么调节?一文详解,亮度调整随心所欲!

在我们日常使用电脑的时候&#xff0c;屏幕亮度的合理调节是关乎舒适度和视觉体验的一项重要任务。无论是在白天面对明亮的阳光&#xff0c;还是在夜晚为了减少眼睛疲劳&#xff0c;灵活地调整电脑屏幕亮度&#xff0c;让其适应不同环境和个人需求&#xff0c;成为了提高工作效…

虚拟列表【vue】等高虚拟列表/非等高虚拟列表

文章目录 1、等高虚拟列表2、非等高虚拟列表 1、等高虚拟列表 参考文章1 参考文章2 <!-- eslint-disable vue/multi-word-component-names --> <template><divclass"waterfall-wrapper"ref"waterfallWrapperRef"scroll"handleScro…

vue里echarts的使用:画饼图和面积折线图

vue里echarts的使用,我们要先安装echarts,然后在main.js里引入: //命令安装echarts npm i echarts//main.js里引入挂载到原型上 import echarts from echarts Vue.prototype.$echarts = echarts最终我们实现的效果如下: 头部标题这里我们封装了一个全局公共组件common-he…

Spark: a little summary

转眼写spark一年半了&#xff0c;从之前写机器学习组件、做olap到后面做图计算&#xff0c;一直都是用的spark&#xff0c;惭愧的是没太看过里面的源码。这篇文章的目的是总结一下Spark里面比较重要的point&#xff0c;重点部分会稍微看一下源代码&#xff0c;因为spark是跟cli…

基于springboot+vue的靓车汽车销售网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…