NGINX学习笔记 - 一篇了解NGINX的基本概念(一)

news2024/11/15 19:59:28

NGINX是什么?

NGINX是一款由俄罗斯人伊戈尔·赛索耶夫使用C语言开发的、支持热部署的、轻量级的WEB服务器/反向代理服务器/电子邮件代理服务器,因为占用内存较少,启动极快,高并发能力强,所以在互联网项目中广泛应用。可以在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及 Microsoft Windows 等操作系统中运行。

  • 官网:NGINX官方网站
  • 中文:NGINX中文网站

NGINX可以干什么?

NGINX可以作为静态页面的WEB服务器,同时还支持CGI协议的动态语言,比如Perl、PHP等。NGINX专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,NGINX在官方测试中,能够支持五万个平行链接,而在实际的运作中,可以支持二万至四万个平行链接,总结如下:

  • 静态页面的WEB服务器
  • 动静分离
  • 客户端的正向代理
  • 服务端的反向代理
  • 服务端的负载均衡

什么是简单请求?

请求同时满足以下两个条件,称为简单请求,否则为复杂请求

  1. 请求方式是HEAD、GET、POST 三种之一;
  2. 请求头包含但不超过这五个字段:Accept,Accept-Language,content-Language,Last-Event-ID,Content-Type。其中Content-Type的值只能是application/x-www-form-urlencoded,text/plain,multipart/form-data 三种之一。

什么是复杂请求?

凡是不简单请求的,都属于复杂请求,常见的复杂请求:

  1. 请求方法是 PUT 或 DELETE的请求;
  2. 请求头的Content-Type 值为application/json的请求

什么是动静分离?

动静分离,其实就是使用NGINX的特性,将客户端发来的请求分为动态请求和静态请求。静态请求直接从NGINX服务器所设定的根目录去获取对应的资源,动态请求则转发给真实的后端服务去处理。这样不仅能够减轻应用服务器的压力,将后台API接口服务化,还能将前后端代码分开并行开发和部署。一般常见于SPRINGBOOT + VUE的项目中。
那么,如何配置呢?

什么是正向代理?

正向代理隐藏了真实的客户端,VPN其实就是一个正向代理工具。当使用VPN访问墙外网站是,VPN将访问请求,代理到一个可以访问该网站的代理服务器上,代理服务器把墙外服务器上获取的请求结果,再转发给客户端,这就是正向代理。
在这里插入图片描述

什么是反向代理?

反向代理隐藏了真实的服务端,当我们访问百度时,其实内部会进行一个转发,将请求代理到内网去,但是具体是哪一台,我们不知道,我们也不需要知道,这就是所谓的反向代理,即反向代理“代理”的是服务器端,且这个过程对于客户端而言是透明的。
负载均衡采用的就是反向代理。
在这里插入图片描述

什么是负载均衡?

在互联网项目中,当遇到请求爆发式增长的情况时,单个服务器无法处理客户端请求,需要使用多个服务器来分摊压力,这就是负载均衡的初衷。
在这里插入图片描述

NGINX是如何工作的?

NGINX采用MASTER-WORKER的模式,NGINX在启动后,会以守候进程的方式在后台运行,启动后包含一个MASTER进程和多个WORKER进程,WORKER进程以非root用户运行,当然也可以在配置文件中配置运行 WORKER进程的用户。
在这里插入图片描述
WORKER进程的个数由配置文件决定,一般和CPU个数相关(有利于进程切换),配置几个就有几个WORKER进程。
在这里插入图片描述

那么,如何配置WORKER的用户以及进程数呢?

NGINX的整体架构在这里插入图片描述

  1. MASTER进程:不处理请求,主要负责加载和分析配置文件、分配请求给WORKER节点、管理WORKER进程、平滑升级、服务重启、热加载、热部署等;
  2. WORKER进程:接收客户端请求、将请求一次送入各模块过滤、I/O 调用、数据缓存、发送响应;
  3. 缓存相关进程:包括cache loader(缓存索引重建) 与 cache manager( 缓存索引管理) 两部分:
    • Cache loader ,在NGINX服务启动后由主进程生成,根据本地磁盘上缓存建立索引元数据库后退出;
    • Cache manager ,在元数据更新完成后,对元数据是否过期做出判断。

NGINX是如何热加载的?

所谓热部署,就是配置文件nginx.conf修改后,不需要停止NGINX服务,不需要中断请求,就能让配置文件生效!但是,NGINX必须重新加载一下nginx.conf,否则修改不生效。
使用如下命令,重新加载配置文件:

nginx -s reload

当配置文件nginx.conf修改后,需要执行重新加载配置的指令,此时NGINX接收到热加载的信号后,会重新生成新的WORKER进程,当然也是以新的配置进行请求处理的,而且新的请求一定会交给新的WORKER进程。当老的WORKER进程处理完请求后,进程会被杀死。

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

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

相关文章

十二、面向切面编程AOP

IoC使软件组件松耦合。AOP让你能够捕捉系统中经常使用的功能,把它转化成组件。 AOP(Aspect Oriented Programming):面向切面编程,面向方面编程。(AOP是一种编程技术) AOP是对OOP的补充延伸。 …

互联互通新里程,数字城轨助力城市繁荣!

轨道交通是城市间互通互联的命脉,是当下人们出行的首要选择之一,也是我国“新基建”的重点建设对象。将城轨交通各链路系统及多类型服务,与空间感知、移动互联、云计算等技术深度融合,集中实现城市空间、城轨分布、城轨运行动态的…

有哪些平价好用的台灯推荐?台灯买什么光的比较好

随着社会的发展,生产水平逐渐提高,很多东西都得到长足的发展,对咱们的生活水平的提高帮助也越来越大,台灯也不例外。台灯是现在各个年龄段人群都在使用的产品,晚上熬夜工作、学习、看书、休闲等等都很合适,…

Linux学习第十七节-Apache httpd的web服务

1.简介 适用于Unix/Linux下的web服务器软件。 Apache httpd(开源且免费),虚拟主机,支持HTTPS协议,支持用户认证,支持单个目录的访问控制,支持URL地址重写,支持路径别名,…

北斗RTK高精度定位在AI领域的应用

随着北斗高精度定位技术越来越成熟,通过GNSS高精度定位与机器人结合,越来越多的智能机器人走进我们生活中。像驾培机器人、智能除草机器人、智能巡检机器人、北斗划线机器人等智能机器人已经广泛的投入使用。驾培机器人驾培机器人:通考车安装…

java基础——类加载机制

类加载机制一、背景知识补充二、类加载过程/机制1、浅层理解2、大致步骤3、具体步骤(3.1)装载loading:查找和导入相应的class文件(3.2)链接linking:把类的二进制数据合并到JRE中(3.3&#xff09…

计算机的操作系统

目录 ❤ 什么是操作系统? ❤ 什么是文件? ❤ 什么是应用程序? ❤ 为什么要有操作系统? ​❤ 操作系统有什么用? ❤ 操作系统和应用程序的启动 python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm1001.201…

json-server的使用

流程 1.安装json-server的两个依赖 npm -g i json-server npm install -g json-server 2.安装axios依赖 npm i axios 3.全局导入axios使用src目录下main.js文件内 import axios from ‘axios’; 4.配置全局默认地址:src目录下main.js文件内 axios.defaults.bas…

十九、java虚拟机堆

堆的核心概述 1.一个JVM实例只存在一个堆内存,堆也是java内存管理的核心区域。 2.Java堆区子啊JVM启动的时候即被创建,其空间大小也就确定了,是jvm管理的最大一块内存空间, 1)堆内存的大小是可以调节的。 3.《java虚拟…

运行时数据区及程序计数器

运行时数据区 概述 运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时…

记录Paint部分常用的方法

Paint部分常用的方法1、实例化之后Paint的基本配置2、shader 和 ShadowLayer3、pathEffect4、maskFilter5、colorFilter6、xfermode1、实例化之后Paint的基本配置 Paint.Align Align指定drawText如何将其文本相对于[x,y]坐标进行对齐。默认为LEFTPaint.Cap Cap指定了笔画线和路…

SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)

SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊) 目录SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)1.概述2.最佳实践2.1创建项目引入依赖(mail)2.2 修改yml配置文件2.3 启动类添加EnableScheduling注解2.4 执行的…

设计模式(三)--适配器模式(Adapter Pattern)

将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作.比如我们日常开发中使用到的slf4j就使用了适配器模式,slf4j提供了一系列打日志的api,底层调用的是log4j或者logback来打日志,而作为调用者,不需…

C++基础(二)—— 类和对象(类的封装)、对象的构造和析构(浅拷贝、深拷贝、explicit、动态分配内存)

【上一篇】C基础(一)—— C概述、C对C的扩展(作用域、struct类型、引用、内联函数、函数默认参数、函数占位参数、函数重载)1. 类和对象的基本概念1.1 C和C中struct区别c语言struct只有变量c语言struct 既有变量,也有函数1.2 类的封装我们编写…

【建议收藏】超详细的Canal入门,看这篇就够了!!!

概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。 背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部…

Vue3 核心模块源码解析(中)

【Vue3 核心模块源码解析(上)】讲到了 Vue2 与 Vue3的一些区别,Vue3 新特性的使用,以及略微带了一点源码。那么这篇文章就要从Vue3 模块源码解析 与 Vue3 执行逻辑解析这两个方面去给大家剖析 Vue3 的深层次,一起学习起来吧! 这里…

6.深入理解SecurityConfigurer

深入理解SecurityConfigurer 一、SecurityConfigurer SecurityConfigurer 在 Spring Security 中是一个非常重要的角色。在前面的内容中曾经多次提到过, Spring Security 过滤器链中的每一个过滤器,都是通过 xxxConfigurer 来进行配置的,而这…

文件跳过回收站删除了常见原因|找回方法

演示机型:技嘉 H310M HD22.0系统版本:Windows 10 专业版软件版本:云骑士数据恢复软件3.21.0.92你有没有遇到文件跳过回收站而直接删除的情况?如果有的话,你是知道是什么原因吗?文件跳过回收站删除了怎么办&…

【JavaScript速成之路】JavaScript数组

📃个人主页:「小杨」的csdn博客 🔥系列专栏:【JavaScript速成之路】 🐳希望大家多多支持🥰一起进步呀! 文章目录前言1,初识数组1.1,数组1.2,创建数组1.3&…

SCI期刊收不收费也有门道,你知道吗?

什么是OA期刊? OA期刊是在互联网上在线出版的学术刊物,英文全称是OpenAccess Journal,中文译为“开放存取期刊”。OA期刊不同于传统的学术期刊如《自然》、《科学》等,采取的是向读者收费的运营模式,读者只有付费订阅&#xff0…