Nginx由内核和模块组成的,其中内核完成的工作比较简单,仅仅通过查找配置文件见客户端请求映射到一个location block,然后又这个location block中所配置的每个指令将会启动不同的模块去完成相应的工作。

一、nginx模块

(1)从结构上nginx分为核心模块,基础模块和第三方模块,例如

HTTP模块、MAIL模块、EVENT模块属于核心模块;

HTTP ACCESS模块、HTTP REWRITE模块、HTTP FastCGI模块、HTTP PROXY模块属于基础模块;

HTPP UPSTREAM REQUEST HASH模块属于第三方模块;

(2)从功能上分为HANDLERS、PROXIES、FILTERS三类

HANDLERS只能有一个,它直接处理请求并进行输出内容和修改HEADERS信息等操作;

PROXIES这些模块主要与后端一些服务比如real server等进行交互,实现服务代理和负载均衡等功能;

FILTERS模块主要是对输出的内容进行修改,最后由Nginx输出;


二、nginx模块常规处理HTTP请求和响应的过程,见下图

wKiom1UBrsXgGjsqAAD8eJA61UQ852.jpg