Nginx基本介绍

来源:互联网 发布:电商产品 知乎 编辑:程序博客网 时间:2024/06/11 05:31

一、什么是Nginx

Nginx是一款高性能的HTTP和反向代理服务器软件,还是一个IMAP、POP3、SMTP代理服务器。由俄罗斯程序设计师开发,可以运行在多种操作系统上。


二、为什么选择Nginx

2.1、Nginx和Apache的异同

Nginx和Apache都是HTTP服务器软件,都采用模块化的结构设计,都支持PHP、Python、Perl等语言,支持正向/反向代理、虚拟主机、URL重写、压缩传输、SSL加密等功能。

区别是,Apache的处理速度很慢,并且要占用许多的资源,而Nginx的模块都是静态编译的。同时Apache对于fcgi的支持不好,而Nginx对fcgi的支持非常好。连接方式上Nginx支持epoll,而Apache不支持。空间使用上Nginx安装包只有几百K,而Apache却很大。Nginx的模块直接编译进Nginx,属于静态编译方式。启动Nginx后,模块自动加载。而Apache则会将模块编译为一个so文件,然后在配置文件中指定是否加载。

2.2、Nginx的优势

作为web服务器:在处理静态文件、索引文件,自动索引的效率非常高。

作为代理服务器:可以实现无缓存的反向代理加速,提高网站的运行速度。

作为负载均衡器:可以在内部直接支持redis和php,也可以支持HTTP代理服务器对外进行服务,同时支
持简单的容错和利用算法进行负载均衡。

性能方面:采用内核poll模型,支持更多的并发连接,最大可以响应50000个并发连接,且只占用极少的内存。

稳定性方面:采用分阶段资源分配技术,使CPU与内存占用率非常低。

高可用性方面:Nginx支持热部署,启动速度十分迅速,因此可以在不中断服务的前提下对软件版本或者配置进行升级,可以长时间不需要重新启动。

2.3、Nginx的模块与工作原理

Nginx由内核与模块组成。

内核:仅完成通过查找配置文件将客户端请求映射到一个location block,而这个location中配置的每个命令将会启动不同的模块去完成相应工作。

模块:从结构上分为核心模块、基础模块、第三方模块。

核心模块:HTTP模块、EVENT模块、MAIL模块
基本模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块、HTTP Rewrite模块
第三方模块:HTTP Upstream Request Hash模块、Notice模块、HTTP Access Key模块

Nginx的模块从功能上分为如下三代类:

Handlers(处理器模块):直接处理请求,并进行输出内容和修改headers信息等操作。一般只有一个。
Filter(过滤器模块):对其他模块的输出信息进行修改操作,最后由Nginx输出。
Proxies(代理类模块):与后端例如FastCGI进行交互,实现服务代理和负载均衡。

Nginx常规的HTTP相应过程:

HTTP发出请求 –> Nginx内核 –> 选择一个Handlers处理器模块生成内容 –> 经过一个或多个Filter过滤模块 –> Nginx输出响应

Nginx的每个模块都有可能去处理某个请求,但是每个请求只能由一个模块处理。

Nginx工作方式

工作方式可以分为单工作进程和多工作进程,默认为单工作进程。

单工作进程:除主进程外,还有一个工作的单线程。
多工作进程:每个工作进程包含多个线程。

原创粉丝点击