前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx技术总结之一——Nginx模块与工作原理

Nginx技术总结之一——Nginx模块与工作原理

作者头像
剑影啸清寒
发布2020-07-20 10:30:48
8821
发布2020-07-20 10:30:48
举报
文章被收录于专栏:琦小虾的Binary

一. Nginx 的模块与工作原理

Nginx 由内核模块组成。其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个 location block(location 是 Nginx 配置中的一个指令,用于 URL 匹配),而在这个 location 中所配置的每个指令,将会启动不同的模块去完成相应的工作。 Nginx 的模块从结构上分为核心模块、基础模块和第三方模块

  • 核心模块:HTTP 模块、EVENT 模块和 MAIL 模块
  • 基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP
  • 第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTPAccess Key 模块;
    • 用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx 的功能才会如此强大。

Nginx 的模块从功能上分为如下三类:

  • Handlers:即处理器模块。此类模块直接处理请求,并进行输出内容和修改 headers 信息等操作。Handlers 处理器模块一般只能有一个。
  • Filters:即过滤器模块。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由 Nginx 输出。
  • Proxies:即代理类模块。此类模块是 Nginx 的 HTTP Upstream 之类的模块,这些模块主要与后端一些服务比如 FastCGI 等进行交互,实现服务代理和负载均衡等功能。

下图展示了 Nginx 模块常规的 HTTP 请求和响应的过程。

Nginx模块常规的HTTP请求和响应的过程
Nginx模块常规的HTTP请求和响应的过程

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. Nginx 的模块与工作原理
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档