陈奇网络工作室

Nginx的工作原理

云计算

Nginx工作原理

Nginx由内核和模块组成。

Nginx本身做的工作很少。当它接收到一个HTTP请求时,只是通过查找配置文件把请求映射到一个位置块,这个位置分配的指令会启动不同的模块来完成工作,所以模块可以算是Nginx真正的工作器。

通常一个位置中的指令会涉及一个handler模块和多个filter模块(当然多个位置可以重用同一个模块)。Handler模块负责处理请求并完成响应内容的生成,而filter模块处理响应内容。用户根据自身需求开发的模块属于第三方模块。正是有了这么多模块的支持,Nginx才如此强大。

Nginx的模块在结构上分为核心模块、基础模块和第三方模块:

核心模块:HTTP模块、事件模块和邮件模块;

基本模块:HTTP访问模块、HTTP FastCGI模块、HTTP代理模块和HTTP重写模块;

第三方模块:HTTP上游请求哈希模块、通知模块和HTTP访问密钥模块。

Nginx的模块在功能上分为以下三类:

处理程序(处理器模块):这个模块直接处理请求,并执行输出内容和修改头信息等操作。处理程序处理器模块一般只能有一个;Filters(过滤模块):这个模块主要修改其他处理器模块的输出,最后由Nginx输出;proxy(代理模块):这些模块是Nginx的HTTP上游等模块,主要是与FastCGI等一些后端服务进行交互,实现服务代理和负载均衡的功能。

Nginx的进程模型分为单工作进程和多工作进程两种模式。

在单工作进程模式下,主进程之外还有一个工作进程,工作进程是单线程的;

在多工作进程模式下,每个工作进程包含多个线程。Nginx默认为单工作进程模式。

Nginx启动后,会有一个主进程和多个工作进程。

主进程主要用于管理工作进程,主要包括:接收外界的信号,向各个工作进程发送信号,监控工作进程的运行状态,工作进程退出时(异常情况下)自动重启新的工作进程。主流程作为整个流程组与用户的交互界面,同时对流程进行监控。不需要处理网络事件,不负责业务执行,只管理worker进程实现重启服务、平滑升级、替换日志文件、配置文件实时生效等功能。

3.3的工作原理。Nginx FastCGI

Nginx不支持直接调用或解析外部程序,所有外部程序(包括PHP)都必须通过FastCGI接口调用。FastCGI接口是Linux下的一个套接字(这个套接字可以是文件套接字,也可以是ip套接字)。Wrapper为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为启动另一个程序的程序),它绑定到一个固定的套接字,比如端口或文件套接字。当Nginx向这个socket发送CGI请求时,包装器通过FastCGI接口接收请求,然后分叉出一个新的线程,这个线程调用解释器或者外部程序处理脚本,读取返回的数据;然后包装器将返回的数据传递给Nginx通过FastCGI接口沿固定套接字;最后,Nginx将返回的数据(html页面或图片)发送给客户端。

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3