【nginx】

文章目录

概述

一、nginx是一款轻量级的web服务器/反向代理服务器及电子邮件imap/pop3/smtp服务器,在bsd-like协议下发行。其特点是占有内存少,并发能力强。

二、核心应用场景:

  1. 高性能的静态web服务器:只能处理静态资源

静态资源:图片、样式、flash等不会随着用户的请求改变而改变的资源

动态资源:账户余额、商品剩余货源等,这些依赖于后端应用服务器在数据库查询、处理后返回的结果

  1. 反向代理:客户端点击一个网页后,本质上是向nginx发送了一个http/https请求,nginx可以将静态资源返回客户端,虽然nginx无法返回动态资源,但是他可以将请求代理的发送给后端的应用服务器,由应用服务器查询数据库并处理完数据后返回给nginx,nginx将动态资源、静态资源通过http/https返回给客户端,由客户端在浏览器展示。在这个过程中,对于动态资源来说,nginx就是一个反向代理,反向代理的过程中就有负载均衡,比如在应用服务器是多台的情况下,nginx能够将这些请求负载均衡的以此转发给每个应用服务器。后面讲到的限速、动静分离都是nginx的辅助能力

应用服务器:有很多种类型,如果后端是基于Java开发的,那么应用服务器可能是tomcat,还有些商用的应用服务器:weblogic

三、nginx为什么出现并流行:

主要应用场景

一、一个http请求的全流程

用户在浏览器上输入一个网站的地址,客户端会发送一个http请求到nginx,nginx会将动态资源请求转发给应用服务器,应用服务器与数据库交互进行业务逻辑处理,处理完后,将数据返回给nginx,nginx将动态资源和自身的静态资源进行封装后返回给客户端。

二、nginx处理请求的过程

说明:

  1. 红色箭头表示客户端发送到nginx的请求,静态资源放在本地文件系统(Linux系统下的某个目录),nginx对于静态资源的响应非常高,但是应用服务器对动态资源的响应急剧下降,数据库对请求的处理就更低了,为了缓解nginx、应用服务器、数据库之间的处理差异,我们需要部署一个缓存服务器(具体还是需要根据系统的规模决定要不要部署缓存服务器)。
  2. 反向代理代理中还有缓存加速、负载均衡:假如应用服务器有多台,反向代理就不能代理给某一台应用服务器了,而需要通过一些算法将请求进行分发,以达到负载均衡;nginx可以将应用服务器从数据库获取到的数据缓存起来,下次请求过来时,就不需要再去应用服务器获取结果,可以直接返回结果
  3. api服务:nginx诞生初期是没有这个能力的,随着nginx不断发展,有了openResty后才有的能力。openResty是nginx和弱脚本的结合,可以通过api服务自己开发一个高性能的web服务器

nginx核心优势

一、高并发、高性能:随着互联网数据和用户量的增长,之前使用的apache的web服务器已无法满足。高并发的场景下我们只用增加进程数就能解决,依赖于事件驱动模型、进程处理请求模型,他是用一个进程来处理多个请求;高性能依赖于良好的设计;

二、扩展性好:

  1. nginx自身是模块化设计的,模块化设计最强的优点就是解耦,所有功能的耦合性是很低的,意味着一个模块出现问题,是不会对其他模块造成影响的;
  2. nginx允许开发第三方模块,如openResty、阿里巴巴的tngine
  3. 生态圈发展好

三、异步非阻塞的事件驱动模型:比如餐厅点餐这一场景,在阻塞式场景中,第一个顾客点完餐,就在那里等,等厨师做完并交付给这个顾客后,顾客走了,老板才能接待下一个客户,对于异步来说,顾客点完餐后拿了个号牌,下一个顾客可以继续上前点单,对于老板来说,他可以接待的人更多了(处理的请求更多了),后续老板可以增加个叫号器,这就是编程开销,所以,对于异步非阻塞的事件驱动模型增加了编程难度、编程开销,但是处理更高效

四、高可靠性:nginx通常运行在系统的边缘节点,用于接收用户的请求,nginx连续运行几年可能都不需要重启服务,但是对于其他服务器(如apache),可能运行几周就需要重启服务器,为保证业务连续性,我们是不能接受这种情况的。

五、热部署、平滑升级:不需要关机就能对后端应用程序进行更换,同时不中断连接请求的处理

六、bsd许可:允许nginx使用者根据自己的需求对nginx进行二开,并将二开代码运用到nginx中,同时能运用到商业场景

安装第一个rpm包形式的nginx

相关推荐
无敌糖果7 分钟前
Linux-LVM逻辑卷管理
linux·运维
橘子真甜~10 分钟前
Linux基础3-基础工具3(make,makefile,gdb详解)
linux·运维·服务器·makefile·make·gbd
TIF星空43 分钟前
【从0开始在CentOS 9中安装redis】
linux·运维·服务器·经验分享·redis·笔记·centos
元素之窗44 分钟前
CentOS 系统设置与维护教程
linux·运维·centos
降世神童1 小时前
828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统
mysql·nginx·华为云
EterNity_TiMe_2 小时前
【Linux进程】Linux Shell编程实战:构建简易脚本示例与技巧详解
linux·运维·服务器·学习·centos·bash
吃面不喝汤664 小时前
如何为子域名配置 Nginx 反向代理到 Flask 应用
运维·nginx·flask
soladuor4 小时前
xray 与 nginx 多网站共存(443端口复用方案)
nginx·https·ssl
嵌入式开发15 小时前
Linux开发讲课44---linux性能查看命令和工具
linux·运维·服务器
Zfox_6 小时前
【Linux】精通GDB:打造你的Linux调试超能力
linux·运维·服务器