01. Nginx入门-Nginx简介

Web基础知识

Web协议通信原理

Web协议通信过程

  1. 浏览器本身是一个客户端,当输入URL后,首先浏览器会请求DNS服务器,通过DNS获取相应的域名对应的IP。
  2. 通过IP地址找到对应的服务器后,监理TCP连接。
  3. 等浏览器发送完HTTP Request(请求)请求后,服务器接收到请求包才会开始处理请求包。
  4. 服务器调用自身的服务,返回HTTP Response(响应)包。
  5. 客户端收到来自服务器的响应后开始渲染这个Response包的主体,等收到全部的内容后断开与服务器直接的TCP连接。

Web协议通信图解

Web服务器工作原理

  1. 客户端通过TCP/IP协议建立到服务器的TCP连接;
  2. 客户端向服务器发送HTTP协议请求包,请求服务器里的资源;
  3. 服务器向客户端发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解析引擎负责处理动态内容,并将处理得到的数据返回给客户端;
  4. 客户端与服务器断开,由客户端解释HTML文档,在客户端屏幕上渲染图形结果;

客户端请求到达服务端流程

  1. 当客户端拿到服务端域名对应的IP后,浏览器会以一个随机端口(端口范围:1024<随机端口<65535)向服务器的web程序(nginx、apache)的80端口发起TCP连接请求;
  2. 该请求经过负载的网络环境后到达服务端,进入到服务器的对应网卡,再进入Linux内核的TCP/IP协议栈,一层一层的解开数据包,甚至经过防火墙,最终到达nginx程序,确认TCP/IP连接;
  3. 确认TCP连接之后,客户端继续发起HTTP请求,常见请求有:get、post请求方法。

TCP/IP和HTTP协议

TCP/IP协议

TCP(TCP,Transmission Control Protocol)协议是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议;TCP协议就是控制数据包再传输过程中的规范格式。
IP(Internet Protocol)就是网际互连协议,是TCP/IP体系中的网络层协议。
设计IP的目的是提高网络的可扩展性:
一是解决互联网问题,实现大规模、异构网络的互联互通;
二是分割顶层网络应用和底层网络技术直接的耦合关系,利于两者独立发展;
TCP/IP协议指的不仅仅是TCP和IP两个协议,TCP/IP协议是由FTP、SMTP、TCP、UDP、IP等各种协议组成的协议簇,只因为TCP和IP协议最具有代表性,因此称为TCP/IP协议

HTTP协议

简介

HTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,主要用于服务器传输超文本到本地浏览器的传输协议。
超文本指的是HTML、css、JavaScript和图片等,HTTP的出现是为了接收和发布HTML页面,经过不断地发展也可以用于接收一些音频、视频、文件等内容。

HTTP的基本工作流程
  1. 客户端发送的一个HTTP请求,说明客户端想要访问的资源和请求的动作。
  2. 服务端收到请求之后,服务端开始处理请求,并根据请求做出响应的动作访问服务器资源。
  3. 最后通过发送HTTP响应把结果返回给客户端。
  4. 其中一个请求的开始到一个响应的结束称为事务,当一个事务结束后还会在服务端添加一条日志条目。
包含内容

请求模式、响应模式、报文、端口号、URL、特性、状态码、请求字段。

请求响应模式

HTTP是一个客户端和服务器端请求和应答的标准(客户端是终端用户,服务器端是网站)。
由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认端口80)的TCP连接。HTTP服务器则在那个端口监听客户端的请求,一旦收到请求,服务器会向客户端防火一个状态,比如“ HTTP/1.1 200 OK ”,以及返回的内容,如请求的文件、错误消息、或其他信息。

请求响应报文

客户端发送一个HTTP请求到服务器的请求包含一下格式:请求行(Request Line)、请求头部(Header)、空行和请求数据。
具体格式如下:
image.png

HTTP协议的8中请求类型介绍

HTTP 协议中共定义了八种方法或者叫“动作”来表明对 Request-URI 指定的资源的不同操作方式。

  1. OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送“*”请求来测试服务器的功能性。
  2. HEAD:向服务器索要与GET请求一致的响应,只不过响应体不会被返回。
  3. GET:向特定的资源发出请求。
  4. POST:向指定资源提交数据进行处理请求。数据被包含在请求体中。POST请求可能会导致新资源的创建或已有资源的修改。
  5. PUT:向指定资源位置上传其最新内容。
  6. DELETE:请求服务器删除Request-URI所表示的资源。
  7. TRACE:回显服务器收到的请求,主要用于测试或诊断。
  8. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

虽然 HTTP 的请求方式有 8 种,但是我们在实际应用中常用的也就是 get 和 post,其他请求方式也都可以通过这两种方式间接的来实现。

状态码分类

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误
常见状态码

200:请求成功
301:资源(网页等)被永久转移到其他URL
302:资源(网页等)被临时转移到其他URL,以后客户端继续使用原URL
305:必须使用代理访问
400:语法错误,服务器无法理解
401:要求身份认证
403:拒绝,服务器理解需求但是拒绝执行
404:请求的资源(网页等)不存在
405:客户端请求中的方法被禁止
500:内部服务器错误
502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
503:由于临时的服务器维护或者过载,服务器当前无法处理请求
504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器

URI简介

什么是URI?

URI(Uniform Resource Identifier)是统一资源标识符。
HTTP请求的内容通称为“资源”。每个资源都由一个URI进行表示。
而URL是统一资源定位符,他是URI的一种。

什么是URL?

URL(Uniform Resource Locator)是统一资源定位符,也称为网页网址。
URL的组成:

  1. 示例:http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
  2. 协议:“http://”告诉浏览器使用什么协议访问。
  3. 主机:“www.example.com”即域名,域名分一级域名如:www.example.com;二级域名如:example.com;三级域名如:wang.ming.example.com。此处是二级域名。
  4. 端口:“80”主机使用的访问端口。
  5. 路径:“/path/to/myfile.html”是web服务器上资源的路径。
  6. 查询:“key1=value1&key2=value2”是提供给web服务器的额外参数,使用“&”作为分隔符分割键值对。
  7. 片段:“SomewhereInTheDocument”是资源本身的一部分的一个锚点。

OSI七层模型

image.png

TCP/IP的握手与挥手

抓包分析三次握手

图解三次握手流程

抓包分析四次挥手

套接字socket学习

Nginx简介

什么是Nginx

Nginx是一个高性能的web和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
Nginx支持高并发,内存占用小;
Nginx支持配置文件动态修改;

Nginx是如何工作的

Nginx进程

  1. nginx 在启动后,会以 daemon 的方式在后台运行,后台进程包含一个 master 进程和多个 worker 进程,worker 进程以非 root 用户运行,可以在配置文件中配置运行 worker 进程的用户。
  2. master 进程主要用来管理 worker 进程,包含:接收来自外界的信号,向各 worker 进程发送信号,监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动重新启动新的 worker 进程。
  3. worker 进程则是处理基本的网络事件。多个 worker 进程之间是对等的,他们同等竞争来自客户端的请求,各进程相互之间是独立的。一个请求,只可能在一个 worker 进程中处理,一个 worker 进程,不可能处理其它进程的请求。

主进程

主进程(master process)的功能:

  1. 读取 Nginx 配置文件并验证其有效性和正确性
  2. 按照配置启动、管理和关闭工作进程
  3. 接受外界指令,比如重启、升级及关闭服务器等指令
  4. 不中断服务,实现平滑升级,重启服务并应用新的配置
  5. 开启日志文件

工作进程

工作进程(woker process)的功能:

  1. 接收处理客户端的请求
  2. 将请求以此送入各个功能模块进行处理
  3. IO 调用,获取响应数据
  4. 与后端服务器通信,接收后端服务器的处理结果
  5. 缓存数据,访问缓存索引,查询和调用缓存数据
  6. 发送请求结果,响应客户端的请求
  7. 接收主程序指令,比如重启、升级和退出等

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掘根宝典之C语言字符串输入函数(gets(),fgets(),get_s())

字符串输入前的注意事项 如果想把一个字符串读入程序&#xff0c;首先必须预留该字符串的空间&#xff0c;然后用输入函数获取该字符串 这意味着必须要为字符串分配足够的空间。 不要指望计算机在读取字符串时顺便计算它的长度&#xff0c;然后再分配空间(计算机不会这样做&a…

#QT(网络编程-UDP)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;UDP 不分客户端和服务端 3.记录 &#xff08;1&#xff09;做一个UI界面 &#xff08;2&#xff09;编写open按钮代码进行测试&#xff08;用网络调试助手测试&#xff09; &#xff08;3&#xff09;完善其他功能测试 4.代码 …

Git 远程仓库之Github

目前我们使用到的 Git 命令都是在本地执行&#xff0c;如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。 目前最出名的代码托管平台是Github&#xff0c;我们将使用了 Github 作为远程仓库。 添加远程库 要添…

【Python】进阶学习:__len__()方法的使用介绍

【Python】进阶学习&#xff1a;__len__()方法的使用介绍 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您的订…

209.长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 第一次写&#xff0c;越界了 in…

链式插补 (MICE):弥合不完整数据分析的差距

导 读 数据缺失可能会扭曲结果&#xff0c;降低统计功效&#xff0c;并且在某些情况下&#xff0c;导致估计有偏差&#xff0c;从而破坏从数据中得出的结论的可靠性。 处理缺失数据的传统方法&#xff08;例如剔除或均值插补&#xff09;通常会引入自己的偏差或无法充分利用数…

MySQL王国:从基础到高级的完整指南【文末送书-28】

文章目录 MySQL从入门到精通第一部分&#xff1a;MySQL基础第二部分&#xff1a;MySQL进阶第三部分&#xff1a;MySQL高级应用 MySQL从入门到精通&#xff08;第3版&#xff09;&#xff08;软件开发视频大讲堂&#xff09;【文末送书-28】 MySQL从入门到精通 MySQL是一种开源…

Linux中汇编语言的学习(加法、乘法、除法、左移、右移、按位与等多种命令操作实例以及ARM的 N、Z、C、V 标志位的解释)

汇编概述 汇编需要学习的大致框架如下&#xff1a; 汇编中的符号 1.指令&#xff1b;能够北嘁肷梢惶?2bit机器码&#xff0c;并且能够被cpui识别和执行 2.伪指令&#xff1a;本身不是指令&#xff0c;编译器可以将其替换成若干条指令 3.伪操作&#xff1a;不会生成指令…

技术指标的买入形态之均线形成多头排列

一、技术特征 1、在股价横盘整理过程中&#xff0c;其短期均线、中期均线持续纠缠在一起。 2、整理一段时间后&#xff0c;短期均线向上突破了中期均线&#xff0c;中期均线也向上突破了长期均线。 均线多头排列是股价处于上涨行情中的信号。 二、买点描述 当均线的多头排列…

tomcat nginx 动静分离

实验目的:当访问静态资源的时候&#xff0c;nginx自己处理 当访问动态资源的时候&#xff0c;转给tomcat处理 第一步 关闭防火墙 关闭防护 代理服务器操作&#xff1a; 用yum安装nginx tomcat &#xff08;centos 3&#xff09;下载 跟tomcat&#xff08;centos 4&#xff0…

3分钟开通GPT-4

AI从前年12月份到现在已经伴随我们一年多了&#xff0c;还有很多小伙伴不会开通&#xff0c;其实开通很简单&#xff0c;环境需要自己搞定&#xff0c;升级的话就需要一张visa卡&#xff0c;办理visa卡就可以直接升级chatgptPLSU 一、虚拟卡支付 这种方式的优点是操作简单&…

AI-RAN联盟在MWC24上正式启动

AI-RAN联盟在MWC24上正式启动。它的logo是这个样的&#xff1a; 2月26日&#xff0c;AI-RAN联盟&#xff08;AI-RAN Alliance&#xff09;在2024年世界移动通信大会&#xff08;MWC 2024&#xff09;上成立。创始成员包括亚马逊云科技、Arm、DeepSig、爱立信、微软、诺基亚、美…

mysql高可用架构设计

一、主从架构 主从架构一般如下所示 这里从节点一般设置成只读&#xff08;readonly&#xff09;模式。这样做&#xff0c;有以下几个考虑&#xff1a; 有时候一些运营类的查询语句会被放到备库上去查&#xff0c;设置为只读可以防止误操作&#xff1b; 防止切换逻辑有 bug&a…

Unity2023.1.19_ECS_DOTS

Unity2023.1.19_ECS_DOTS 盲学-盲目的学习&#xff1a; 懒着自己整理就看看别人整理的吧&#xff0c;整合一下逻辑通了不少&#xff1a; DOTS/data oriented technology stack-面向数据的技术栈 ECS/Entities-Component-System Unity-Entities包 Entities提供ECS架构面向数…

javaWebssh教师荣誉库管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh在线授课辅导系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0…

云计算时代的运维: 职业发展方向与岗位选择

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

基于Spring Boot + Vue的网上订餐系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

10kV/35kV并网分布式光伏系统-实现错峰有序用电

根据国家电网 Q/GDW1480-2015 《分布式电源接入电网技术规定》&#xff1a;分布式电源并网电压等级可根据各 并网点装机容量进行初步选择&#xff0c;推荐如下&#xff1a; • 8kW 及以下可接入 220V &#xff1b; • 8kW~400kW 可接入 380V &#xff1b; • 400kW~60…

实名制交友-智能匹配-仿二狗交友系统-TP6+uni-APP小程序H5公众号-源码交付-支持二开!

一、代码风格 通常不同的开发者具备不同的代码风格&#xff0c;但为了保证语音交友系统开发质量&#xff0c;在编码前需要进行代码风格的统一&#xff0c;通过制定一定的规则&#xff0c;约束开发者的行为。具有统一风格的代码才能更清晰、更完整、更容易理解、更方便后期维护…

springboot,druid动态数据源切换

关键字&#xff1a;springboot&#xff0c;druid数据库连接池&#xff0c;两个数据源&#xff08;可以切换成多个&#xff09;&#xff0c;事务管理 关于druid简介传送门&#xff1a;https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具体分为四…