Nginx学习笔记(一)——概述

一、Nginx概述

1.1 什么是Nginx?

Nginx (engine x) 是一个轻量级的高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP服务。 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

Nginx特点:占有内存少,并发能力强

1.2 为什么用Nginx?

(1)跨平台、配置简单;

(2)非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发;

(3)内存消耗小:开启10个nginx才占150M内存,Nginx采取了分阶段资源分配技术;

(4)nginx处理静态文件好,耗费内存少;

(5)内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。

(6)节省宽带:支持GZIP压缩,可以添加浏览器本地缓存;

(7)稳定性高:宕机的概率非常小

(7)master/worker结构:一个master进程,生成一个或者多个worker进程。

(8)接收用户请求是异步的:浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力;

(9)一边接收web服务器的返回数据,一边发送给浏览器客户端;

(10)网络依赖性比较低,只要ping通就可以负载均衡;

(11)可以有多台nginx服务器;

(12)事件驱动:通信机制采用epoll模型。

1.3 Nginx工作模式

1、Nginx 由内核和模块组成。

  • 内核的设计十分微小和简洁,完成的工作也很简单。仅通过查找配置文件将客户端请求映射到一个 location block(location 是Nginx配置中的一个指令,用于 URL 匹配),而在这个 location 中所配置的每个指令将会启动不同的模块去完成相应的工作。
  • Nginx 的模块从结构上分为核心模块、基础模块和第三方模块:
    核心模块:HTTP 模块、 EVENT 模块和 MAIL 模块
    基础模块: HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite模块,
    第三方模块:HTTP Upstream Request Hash 模块、 Notice 模块和 HTTP Access Key模块。

2、Nginx有两种工作模式:master-worker模式单进程模式

master-worker 模式:一个master 进程和至少一个的worker进程

该模式下,nginx 启动成功后,会有一个 master 进程和至少一个的 worker 进程。多用于生产环境。

  • master 进程负责处理系统信号,加载配置,管理 worker 进程(启动、杀死、监控、发送消息/信号等)。

  • worker 进程负责处理具体的业务逻辑,也就是说,对外部来说,真正提供服务的是 worker 进程。

1. 稳定性高,只要还有 worker 进程存活,就能够提供服务,并且一个 worker 进程挂掉 master 进程会立即启动一个新的 worker 进程,保证 worker 进程数量不变,降低服务中断的概率。
2. 配合 linux 的 cpu 亲和性配置,可以充分利用多核 cpu 的优势,提升性能
3. 处理信号/配置重新加载/升级时可以做到尽可能少或者不中断服务(热重启–>不中断服务)

在这里插入图片描述
单进程模式:只有一个进程

单进程模式下, nginx 启动后只有一个进程, nginx 的所有工作都由这个进程负责。
由于只有一个进程,因此可以很方便地利用 gdb 等工具进行调试。
该模式不支持 nginx 的平滑升级功能,任何的信号处理都可能造成服务中断,并且由于是单进程,进程挂掉后,在没有外部监控的情况下,无法重启服务。
因此,该模式一般只在开发阶段和调试时使用,生产环境下不会使用。(了解)

1.4 Nginx的应用

  • 反向代理:

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简单来说,就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。

  • 负载均衡:

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。

  • Http服务器

Nginx本身也是一个 静态资源的服务器。 当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现。动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。

  • 正向代理

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用正向代理。

发布了102 篇原创文章 · 获赞 21 · 访问量 5335

猜你喜欢

转载自blog.csdn.net/ranrancc_/article/details/102657684