博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《高性能Linux服务器构建实战》——1.3节Nginx的模块与工作原理
阅读量:5740 次
发布时间:2019-06-18

本文共 924 字,大约阅读时间需要 3 分钟。

1.3 Nginx的模块与工作原理

Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
Nginx的模块从结构上分为核心模块、基础模块和第三方模块, HTTP模块、EVENT模块和MAIL模块等属于核心模块,HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块属于基础模块,而HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块属于第三方模块,用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。
Nginx的模块从功能上分为如下三类。
Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers处理器模块一般只能有一个。
Filters (过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。
Proxies (代理类模块)。此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。
图1-1展示了Nginx模块常规的HTTP请求和响应的过程。

d29722e419fb09eb713941196e99a094dfd0370f

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

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

转载地址:http://lnbzx.baihongyu.com/

你可能感兴趣的文章
在html标签外写的div,包含div以外的文件,即使HTML代码中的内部标签
查看>>
html文件中top什么意思,margin-top在html中的意思是什么
查看>>
html 报告模板,HttpRunner 实现 Jinja2 自定义报告模板
查看>>
人生与算法
查看>>
软件系统架构师成长之路(一)
查看>>
Cocos2d-x Eclipse下程序运行产生错误Effect initCheck() returned -1
查看>>
oracle命令行格式化输出的几个常用命令
查看>>
Drupal8系列(四):主题制作的前期准备-Ubuntu 14.04 LTS
查看>>
自动化运维与网站安全技术沙龙活动分享
查看>>
第6章核心代码《跟老男孩学习Linux运维:Shell编程实战》
查看>>
思科和华为路由器OSPF之对比学习
查看>>
python运维开发之socket网络编程04
查看>>
6426C Lab2 部署和配置证书服务
查看>>
以"小刀会“的成败论当今创业成败
查看>>
SCOM 2012系列③导入管理包
查看>>
读《做单--成交的秘密》有感
查看>>
shell脚本如何监控程序占用带宽?
查看>>
如何定位cpu占用率高的java线程?
查看>>
GRE over IPSEC 同时NAT-T(Profile PAT)
查看>>
Excel 2016中的新增函数之SWITCH
查看>>