nginx模块与工作原理

nginx的模块从结构上分为核心模块,基础模块的第三方模块,HTTP模块,EVENT模块和MAIL模块等属于核心模块,HTTP ACCESS模块,HTTP FASTCGI模块,HTTP PROXY模块和HTTP REWRITE模块属于基础模块,而HTTP UPSTREAM HASH模块,NOTICE模块和HTTP ACCESS KEY模块属于第三方模块,用户根据自动的需要开发的模块都属于第三方模块,正是有了这么多的模块支持,nginx才会如此强大

 

nginx模块从功能上分为三类

 

handlers(处理器模块) 此类模块直接处理请求,并进行输出内容和修改headers信息等操作,handlers处理器模块一般只能有一个.

 

filters(过滤器模块) 此类模块主要是对其他处理器模块输出的内容进行修改操作,最后由nginx输出

 

proxies(代理类模块) 此类模块是nginx的HTTP upstream之类的模块,这些模块主要与后端的一些服务比如fastCGI等进行交互,实现服务代理和负载均衡等功能

 

在工作方式上,nginx分为单工作进程和多工作进程两种模式,在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的,在多工作进程模式下,每个工作进程包含多个线程,nginx默认为单工作进程模式

 

nginx的模块直接被编译进nginx,因此属于静态编译方式,启动nginx后,nginx的模块被自动加载,不像apache首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载,在解析配置文件时,nginx的每个模块都有可能去处理某个请求,但是同一个处理只能由一个模块来完成