nginx工作原理

来源:互联网 发布:电网运行数据 编辑:程序博客网 时间:2024/04/26 02:08

 

 

 

nginx的几大模块以结构来分

核心模块:HTTP模块、EVENT模块和MAIL模块、

基础模块:HTTPAccess模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,

第三方模块:HTTPUpstream Request Hash模块、Notice模块和HTTP Access Key模块。

 

功能来分

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

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

Proxies(代理类模块):此类模块是NginxHTTPUpstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。

 

 

Nginx流程图

 

 

nginx 本身做的工作实际很少,当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block,而此location中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者。通常一个 location中的指令会涉及一个handler模块和多个filter模块(当然,多个location可以复用同一个模块)。handler模块负责处理请求,完成响应内容的生成,而filter模块对响应内容进行处理。

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

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

nginx -s reload 重启nginx

nginx -s stop 停止nginx

/usr/local/www/nginx/sbin/nginx -t -c /usr/local/www/nginx/conf/nginx.conf

 检查配置文件是否正确

启动nginx :

/home/lnamp/nginx/sbin/nginx -c /home/lnamp/nginx/conf/nginx.conf