Nginx基本概述

Nginx-学习目录

1、什么是Nginx

Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。
开源,体现在直接获取Nginx的源代码。
高性能,体现在支持海量的并发。
高可靠,体现在服务稳定。

2、为什么选择Nginx

2.1、高性能、高并发

通常正常情况下,单次请求会得到更快的响应。另一方面在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。

2.2、高扩展性

Nginx功能模块化。Nginx官方提供了非常多的优秀模块提供使用。这些模块都可以实现快速增加和减少。

2.3、高可靠性

所谓高可靠性,是指Nginx可以在服务器上持续不间断的运行,而很多web服务器往往运行几周或几个月就需要进行一次重启。
对于nginx这样的一个高并发、高性能的反向代理服务器而言,他往往运行网站架构的最前端,
那么此时如果我们企业如果想提供9999、99999,对于nginx持续运行能够宕机的时间,一年可能只能以秒来计算,所以在这样的一个角色中,Nginx的高可靠性为我们提供了非常好的保证。

2.4、热部署

热部署是指在不停服务的情况下升级nginx,这个功能非常的重要。
对于普通的服务,只需要kil掉进程在启动,但对于Nginx而言,如果Nginx有很多的客户端连接,那么kill掉Nginx。Nginx会像客户端发送tcp reset复位包,但很多客户端无法很好的理解reset包,就会造成异常。
由于Nginx的master管理进程与worker工作进程的分离设计,使得Nginx能够在7×24小时不间断服务的前提下,升级Nginx的可执行文件。当然,也支持不停止服务更新配置、更换日志文件等功能。

2.5、应用广泛

首先Nginx技术成熟,具备企业最常使用的功能,如代理、代理缓存、负载均衡、静态资源、动静分离、Https、Lnmp、Lnmt等等
其次使用Nginx统一技术栈,降低维护成本,同时降低技术更新成本。

2.6、网络模型

Nginx使用Epool网络模型,而常听到Apache采用的是Select网络模型。
Select:当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
Epoll:当用户发起请求,epoll模型会直接进行处理,效率高效。

3、Nginx应用场景

3.1、应用场景介绍

Nginx的主要使用场景归纳为三个,分为是静态资源服务、代理资源服务、安全服务,场景详细介绍如下
如下图是一个网站的基本架构,首先用户请求先到达nginx,然后在到tomcat或php这样的应用服务器,然后应用服务器在去访问redis、mysql这样的数据库,提供基本的数据功能。

那么这里有一个问题,我们的程序代码要求开发效率高,所以他的运行效率是很低的,或者说它并发是受限,所以我们需要很多应用服务组成一个集群,为更多用户提供访问。
而应用服务一但构成集群,则需要我们的nginx具有反向代理功能,这样可以将动态请求传倒给集群服务。

 

3.2、Nginx应用场景类型

3.2.1、Nginx负载均衡

很多应用构成集群,那么一定会带来两个需求。
1、应用服务器需要动态扩展。
2、有些服务出问题需要做容灾。
那么我们的反向代理必须具备负载均衡功能。

3.2.2、Nginx代理缓存

随着我们网络链路的增长,用户体验到的时延则会增加。如果我们能把一段时间内不会发生变化的"动态"内容,缓存在Nginx,由Nginx直接向用户提供访问,
那么这样用户请求的时延就会减少很多,所以在这里反向代理会演生出另外一个功能"缓存",因为它能加速我们的访问。

3.3.3、Nginx静态服务

我们访问docs、pdf、mp4、png等这样的静态资源时,是没有必要将这些请求通过Nginx交给后端的应用服务,
我们只需要通过Nginx直接处理"静态资源"即可。这是Nginx的静态资源功能。

3.3.4、Nginx安全服务

当我们使用http网站时,可能会遭到劫持和篡改,如果使用https安全通讯协议,那么数据在传输过程中是加密的,从而能有效的避免黑客窃取或者篡改数据信息,同时也能避免网站在传输过程中的信息泄露。大大的提升我们网站安全。

4、Nginx组成部分

在这里我们将Nginx的组成架构比喻为一辆汽车:
这个汽车提供了基本的驾驶功能,但是还需要一个驾驶员控制这辆汽车开往哪个方向,同时该汽车行驶过的地方还会形成GPS轨迹,如果汽车在行驶的过程中出现了任何问题,我们需要一个黑匣子,分析是汽车本身的问题,还是驾驶人员的操作出现了问题。

1、第一个组成部分Nginx二进制可执行文件:
它是Nginx本身框架以及相关模块等构建的一个二进制文件,这个文件就相当于汽车本身,所有的功能都由它提供。

2、第二个组成部分nginx.conf文件:
它相当于驾驶人员,虽然二进制可执行文件已经提供了许多的功能,但是这些功能究竟有没有开启,或者开启后定义怎样的行为去处理请求,都是由
nginx.conf这个文件决定的,所以他就相当于这个汽车的驾驶员,控制这个汽车的行为。

3、第三个组成部分access.log:它相当于这辆汽车经过所有地方形成的GPS轨迹,access.log会记录Nginx处理过的每一条HTTP的请求信息、响应信息。

4、第四个组成部分error.log:它相当于黑匣子,当出现了一些不可预期的问题时,可以通过error.log将问题定位出来。

Nginx组成部分小结:
Nginx的组成部分是相辅相成,Nginx二进制可执行文件和Nginx.conf文件,它定义了Nginx处理请求的方式。
而如果我们想对nginx服务做一些web的运营和运维,需要对access.log做进一步分析。
而如果出现了任何未知的错误,或者预期的行为不一致时,应该通过error.log去定位根本性的问题。 

 

posted @ 2023-04-26 14:14  小粉优化大师  阅读(58)  评论(0编辑  收藏  举报