运维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.0 | http1.1 | http2.0 | http3.0 |
---|---|---|---|---|
共同点 | 请求-响应 | 请求-响应 | 请求-响应 | 请求-响应 |
区别 | 短连接(耗费服务端资源) | 长连接(不会立即断开,连接(会话)保持断开) | 长连接,效率更高,仅支持https… | … |
tcp | tcp | tcp | udp |
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请求起始行:请求办法 urlhttp请求头中: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去重. |
PV | Page View页面访问量(每个页面被访问的次数) | 分析用户访问情况的时候,只看这个指标容易导致估算过大 | 统计日志行数 |
UV | Unique Vistor独立访客数量(用户) | 分析用户访问情况的时候,相对准确些. | 统计的加上客户端的浏览器类型…未来通过第三方插件实现 |
DAU | Daily 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 |
apache | web服务,目前应用较少 | 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需要编译安装。
Ngx | Tengine | ||
---|---|---|---|
安装方式 | 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
相关文章:

运维SRE-19 网站Web中间件服务-http-nginx
Ans自动化流程 1.网站集群核心协议:HTTP 1.1概述 web服务:网站服务,网站协议即可. 协议:http协议,https协议 服务:Nginx服务,Tengine服务....1.2 HTTP协议 http超文本传输协议,负责数据在网站…...

C语言—自定义(构造)类型
2.20,17.56 1.只有当我们使用结构体类型定义变量/结构体数组,系统才会为结构体的成员分配内存空间,用于存储对应类型的数据 2.strct 结构体 一起作为结构体类型标识符 嘿嘿暂时先这样,我会回来改的1、定义一个表示公交线路的结构体,要…...

ArcgisForJS如何实现添加含图片样式的点要素?
文章目录 0.引言1.加载底图2.获取点要素的坐标3.添加含图片样式的几何要素4.完整实现 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。本文在ArcGIS For JavaScript中使用Graphic对象来创建包含图片样式的点要素。 …...

C#之WPF学习之路(2)
目录 控件的父类 DispatcherObject类 DependencyObject类 DependencyObject 类的关键成员和方法 Visual类 Visual 类的主要成员和方法 UIElement类 UIElement 类的主要成员和功能 FrameworkElement类 FrameworkElement 类的主要成员和功能 控件的父类 在 WPF (Windo…...

胶原抗体诱导小鼠关节炎模型
胶原诱导性关节炎小鼠(CIA)作为人类类风湿关节炎模型应用广泛,但CIA引起的关节炎起病比较缓慢,造模周期较长,一般为6-8周(1-12)。Chondrex公司已开发出单一种单克隆抗体合剂诱导的小鼠关节炎模型(CAIA),明显缩短了造模…...

集百家所长的开放世界游戏,艾尔莎H311-PRO带你玩转《幻兽帕鲁》
随着近几年开放世界游戏热潮的兴起,如今这类游戏可以说是像雨后春笋般不断推出,比如《幻兽帕鲁》就是近期非常火热的一个代表,它不仅集合了生存、建造、宠物养成等多种元素,而且可爱的卡通画风格更是老少皆宜。那么,这…...

机器人内部传感器阅读笔记及心得-位置传感器-旋转变压器、激光干涉式编码器
旋转变压器 旋转变压器是一种输出电压随转角变化的检测装置,是用来检测角位移的,其基本结构与交流绕线式异步电动机相似,由定子和转子组成。 旋转变压器的原理如图1所示,定子相当于变压器的一次侧,有两组在空间位置上…...

深度学习的学习笔记帖子2
人脸数据集的介绍: https://zhuanlan.zhihu.com/p/362356480 https://blog.csdn.net/bjbz_cxy/article/details/122210641 CASIAWebFace人脸数据集等的github: https://github.com/deepinsight/insightface/blob/master/recognition/datasets/README.md…...

【机器学习学习脉络】
机器学习学习脉络 基础知识 数学基础 线性代数概率论与数理统计微积分最优化理论 编程基础 Python编程语言数据结构与算法软件工程原则 计算机科学基础 操作系统网络通信数据库系统 机器学习概论 定义与发展历程机器学习的主要任务和应用领域基本术语和概念 监督学习 线…...

golang命令行工具gtcli,实现了完美集成与结构化的gin脚手架,gin-restful-api开箱即用
关于gtools golang非常奈斯,gin作为web框架也非常奈斯,但我们在开发过程中,前期搭建会花费大量的时间,且还不尽人意。 为此我集成了gin-restful-api的模板gin-layout,还有脚手架一键生成项目。 集成相关 ginviperz…...

Qt 事件
1. 事件 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。在Qt中使用一个对象来表示一个事件,它继承自QEvent类。 2. 事件和信号 事件与信号并不相同,比如我们使用鼠标点击了一下界面上的按钮,那么就会产生…...

JAVA高并发——并行算法
文章目录 1、并行流水线2、并行搜索3、并行排序3.1、分离数据相关性:奇偶交换排序3.2、改进的插入排序:希尔排序 4、并行算法:矩阵乘法 1、并行流水线 并行算法虽然可以充分发挥多核CPU的性能,但并非所有的运算都可以改造成并行的…...

HTTP 与 HTTPS-HTTP 解决了 HTTP 哪些问题?
资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 解决了 HTTP 哪些问题? HTTP 由于是明文传输,所以安全上存在以下三个风险: 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。篡改风险,比如…...

S32 Design Studio PE工具配置TMR
配置步骤 配置内容 生成的配置结构体如下,在Generated_Code路径下的lpTmr.c文件和lpTmr.h文件。 /*! lpTmr1 configuration structure */ const lptmr_config_t lpTmr1_config0 {.workMode LPTMR_WORKMODE_PULSECOUNTER,.dmaRequest false,.interruptEnable tr…...

Typescript中常用的数据类型
文章目录 概要TS的数据类型1.基础类型-- 简单的类型-- Array类型-- Object类型- 可选类型 -- Function类型- 函数的参数类型- 函数的返回值类型- 匿名函数的参数- 函数参数为对象类型- 函数的调用签名- 函数的构造签名(了解)- 剩余参数- 函数的重载(了解)- 函数的this(了解) 2.…...

【推荐】渗透测试面试(问题+答案)
1、介绍一下自认为有趣的挖洞经历 2、你平时用的比较多的漏洞是哪些?相关漏洞的原理?以及对应漏洞的修复方案? 3、php/java反序列化漏洞的原理?解决方案? 4、如果一台服务器被入侵后,你会如何做应急响应? 5、你平时使用哪些工具?以及对应工具的特点? 6、如果遇到waf的情…...

基于java+springboot+vue实现的美食信息推荐系统(文末源码+Lw)23-170
1 摘 要 使用旧方法对美食信息推荐系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在美食信息推荐系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发…...

HGAME week2 web
1.What the cow say? 测试发现可以反引号命令执行 ls /f* tac /f*/f* 2.myflask import pickle import base64 from flask import Flask, session, request, send_file from datetime import datetime from pytz import timezonecurrentDateAndTime datetime.now(timezone(…...

SQL注入:网鼎杯2018-unfinish
目录 使用dirmap扫描 使用dirsearch扫描 使用acunetix扫描 爆破后端过滤的字符 绕过限制获取数据 这次的进行SQL注入的靶机是:BUUCTF在线评测 进入到主页面后发现是可以进行登录的,那么我们作为一个安全人员,那肯定不会按照常规的方式来…...

C 标准库 - <limits.h>
在C语言编程中,<limits.h> 头文件扮演着关键角色,它为各种基本数据类型定义了最小和最大限制。通过使用这些预定义的宏,程序员可以确保程序代码不会尝试存储超出特定类型范围的值。 简介 <limits.h> 头文件包含了关于不同类型&…...

《游戏引擎架构》--学习3
内存管理 优化动态内存分配 维持最低限度的堆分配,并且永不在紧凑循环中使用堆分配 容器 迭代器 Unicode...

c语言中的大小写字母转换怎么转?
在C语言中,大小写字母转换是基于ASCII码表的特性实现的。ASCII码中,小写字母从’a’到’z’的ASCII码值是连续的(97到122),而大写字母从’A’到’Z’的ASCII码值也是连续的(65到90)。它们之间有…...

java面试题之SpringMVC篇
Spring MVC的工作原理 Spring MVC的工作原理如下: DispatcherServlet 接收用户的请求找到用于处理request的 handler 和 Interceptors,构造成 HandlerExecutionChain 执行链找到 handler 相对应的 HandlerAdapter执行所有注册拦截器的preHandler方法调…...

基于FPGA的I2C接口控制器(包含单字节和多字节读写)
1、概括 前文对IIC的时序做了详细的讲解,还有不懂的可以获取TI的IIC数据手册查看原理。通过手册需要知道的是IIC读、写数据都是以字节为单位,每次操作后接收方都需要进行应答。主机向从机写入数据后,从机接收数据,需要把总线拉低来…...

使用sql判断两段时间是否重叠
使用sql判断两段时间是否重叠 1. 时间点重叠判断a)时间重叠有以下4种情况a)时间不重叠只有以下2种情况 判断条件, 不重叠的判断判断条件, 重叠的判断 假设现在有时间 [startTime, endTime], 数据库存在字段 sql_start_time 和 sql_end_time, 分别表示要判断的时间段和数据库的时…...

C++模板从入门到入土
1. 泛型编程 如果我们需要实现一个不同类型的交换函数,如果是学的C语言,你要交换哪些类型,不同的类型就需要重新写一个来实现,所以这是很麻烦的,虽然可以cv一下,有了模板就可以减轻负担。 下面写一个适…...

Kotlin 中注解 @JvmOverloads 的作用
JvmOverloads 注解的作用就是:在有默认参数值的方法加上 JvmOverloads 注解,则 Kotlin 就会暴露多个重载方法。 例如,没有加注解,默认参数没有起到任何作用。 fun f(a: String, b: Int 0, c: String "abc") {}那相当…...

EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比
EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比 目录 EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 【EI级】Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间…...

MongoDB文档插入
文章目录 MongoDB文档插入对比增删改查文档插入 MongoDB写安全机制非确认式写入 MongoDB文档查询参数说明查询操作符比较查询操作符逻辑查询操作符元素查询操作符数组查询操作符 模糊查询区别:$regex操作符中的option选项 MongoDB游标介绍游标函数手动迭代游标示例游标介绍 Mon…...

涵盖5大领域的机器学习工具介绍
随着数据的产生及其使用量的不断增加,对机器学习模型的需求也在成倍增加。由于ML系统包含了算法和丰富的ML库,它有助于分析数据和做出决策。难怪机器学习的知名度越来越高,因为ML应用几乎主导了现代世界的每一个方面。随着企业对这项技术的探…...