1. HTTP 过滤模块

ngx_http_not_modified_module

仅对 HTTP 头部做处理。在返回 200 成功时,根据请求中 If-Modified-Since 或者 If-Unmodified-Since 头部取得浏览器缓存文件的时间,再分析返回用户文件的最后修改时间,以此决定是否直接发送 304 Not Modified 响应给用户。

ngx_http_range_body_filter_module

处理请求中 Range 信息,根据 Rrange 中的要求返回文件的一部分给用户

ngx_http_copy_filter_module

仅对HTTP包体做处理。将用户发送的 ngx_chain_t 结构的 HTTP 包体复制到新的 ngx_chain_t 结构中(都是各种指针的复制,不包括实际 HTTP 响应内容),后续的 HTTP 过滤模块处理的 ngx_chain_t 类型的成员都是 ngx_http_copy_filter_module 模块处理后的变量。

ngx_http_headers_filter_module

仅对 HTTP 头部做处理。允许通过修改 nginx.conf 配置文件,在返回给用户的响应中添加任意的 HTTP 头部。

ngx_http_userid_filter_module

仅对 HTTP 头部做处理。这就是执行 configure 命令时得到的 http_userid_module 模块,它基于 cookie 提供了简单的认证管理功能。

ngx_http_charset_filter_module

可以将文本类型返回给用户的响应包,按照 nginx.conf 中的配置重新进行编码,再返回给用户

ngx_http_ssi_filter_module

支持 SSI(Server Side Include,服务器端嵌入)功能,将文件内容包含到网页中并返回给用户

ngx_http_postpone_filter_module

仅对 HTTP 包体做处理。它仅应用于 subrequest 产生的子请求。它使得多个子请求同时向客户端发送响应时能够有序,所谓的"有序"是指按照构造子请求的顺序发送响应。

ngx_http_gzip_filter_module

对特定的 HTTP 响应包体(如网页或者文本文件)进行gzip压缩,再把压缩后的内容返回给用户

ngx_http_range_header_filter_module

支持range协议

ngx_chunked_filter_module

支持 chunk 编码

ngx_http_header_filter_module

仅对 HTTP 头部做处理。该过滤模块将会把 r->headers_out 结构体中的成员序列化为返回给用户的 HTTP 响应字节流,包括响应行(如 HTTP/1.1 200 OK)和响应头部,并通过调用 ngx_http_write_filter_module 过滤模块中的过滤方法直接将 HTTP 包头发送到客户端

ngx_http_write_filter_module

仅对 HTTP 包体做处理。该模块负责向客户端发送 HTTP 响应

2. HTTP 过滤模块开发步骤

  1. 确定源代码文件名称
  2. 创建 config 文件,HTTP_MODULES 改为 HTTP_FILTER_MODULES 变量,多个源代码文件实现 1 个 HTTP 过滤模块时,需在 NGX_ADDON_SRCS 变量中添加其他源代码文件
  3. 定义过滤模块
  4. 处理感兴趣的配置项
  5. 实现初始化方法:初始化方法就是把模块中处理HTTP头部的ngx_http_output_header_filter_pt方法与处理HTTP包体的ngx_http_output_body_filter_pt方法插入到过滤模块链表的首部。
  6. 实现处理 HTTP 头部的方法:实现 ngx_http_ouput_header_filter_pt 原型的方法,用于处理 HTTP 头部
  7. 实现处理 HTTP 包体的方法:实现 ngx_http_ouput_body_filter_pt 原型的方法,用于处理 HTTP 包体
  8. 编译安装

Nginx之HTTP过滤模块的更多相关文章

  1. 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块

    一.Nginx的HTTP过滤模块特征 一个请求可以被任意个HTTP模块处理: 在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或调用ngx_http_o ...

  2. Nginx模块开发(5)————开发简单的HTTP过滤模块

    该模块可实现如下的功能,在浏览器输入http://你的IP/lcw.text,能够读出你在根目录下创建的lcw.txt里面的内容,并在前面加上一句字符串where there is a will,th ...

  3. 简单的HTTP过滤模块

    简单的HTTP过滤模块 一.Nginx的HTTP过滤模块特征 一个请求可以被任意个HTTP模块处理: 在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或 ...

  4. Nginx:HTTP过滤模块

    参考资料<深入理解Nginx> HTTP过滤模块也是一种HTTP模块,与普通HTTP处理模块不同在于: 1.一个请求仅由一个HTTP处理模块处理,而可以被任意个HTTP过滤模块处理 2.普 ...

  5. 【Nginx】开发一个HTTP过滤模块

    与HTTP处理模块不同.HTTP过滤模块的工作是对发送给用户的HTTP响应做一些加工. server返回的一个响应能够被随意多个HTTP过滤模块以流水线的方式依次处理.HTTP响应分为头部和包体,ng ...

  6. nginx日志模块与HTTP过滤模块与sub模块修改返回内容

    日志格式使用指令 指令介绍 Syntax: log_format name [escape=default|json|none] string ...; Default: log_format com ...

  7. Nginx 的过滤模块是干啥用的?

    上一篇文章我写了 Nginx 的 11 个阶段,很多人都说太长了.这是出于文章完整性的考虑的,11 个阶段嘛,一次性说完就完事了.今天这篇文章比较短,看完没问题. 过滤模块的位置 之前我们介绍了 Ng ...

  8. Nginx 返回响应过滤响应内容

    陶辉94课 过滤模块 从下到上顺序 ngx_http_proxy_module 模块 Syntax: proxy_ignore_headers field ...; Default: — Contex ...

  9. Nginx核心流程及模块介绍

    Nginx核心流程及模块介绍 1. Nginx简介以及特点 Nginx简介: Nginx (engine x) 是一个高性能的web服务器和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 ...

随机推荐

  1. HTML中由于DIV(块元素)浮动,导致的父元素高度塌陷问题的解决方案

    费话不多说,直接上问题: 1.开始时,页面只有两个DIV的嵌套(见图) 运行结果是: 现在看运行的是正常的,但是当我设置让 class="box2" 的DIV浮动时 运行结果是这样 ...

  2. Python-memcached的使用用法

    Memcached API set(key,val,time=0,min_compress_len=0) 无条件键值对的设置,其中的time用于设置超时,单位是秒,而min_compress_len则 ...

  3. Mac下使用Charles抓包https接口

    1 官方网站下载,安装好Charles https://www.charlesproxy.com/download/ 2 安装ssl证书 3 信任证书 4 手机iPhone配置 ,获取证书url 5 ...

  4. C# 接口的作用浅谈举例(转)

    转:http://blog.csdn.net/liuqinghui1990/article/details/77171051 我初次接触接口(Interface),对接口的作用有点迷茫,C#接口中包含 ...

  5. C#Socket编程(一)简介

    一.TCP与UDP简介 https://blog.csdn.net/subin_iecas/article/details/80289513 二.单播.多播.广播 https://blog.csdn. ...

  6. R的数据结构--向量

    向量:用于存储数值型.字符型或逻辑型数据的一维数组,只可以包含一种数据 向量的创建与运算 创建向量 # 创建简单向量 l <- c(2, 2, 1, 3, 8) # [1] 2 2 1 3 8 ...

  7. Webpack v4.8.3 快速入门指南

    一.进入 https://webpack.docschina.org/ 官方文档,点击 "文档" 进入 文档页面,文档中包含  “概念,配置,API,指南,LOADERS,插件&q ...

  8. Elasticsearch:fuzzy 搜索 (模糊搜索)

    在实际的搜索中,我们有时候会打错字,从而导致搜索不到.在Elasticsearch中,我们可以使用fuzziness属性来进行模糊查询,从而达到搜索有错别字的情形. match查询具有"fu ...

  9. Cow Hopscotch (单调队列 + DP)

    链接:https://ac.nowcoder.com/acm/contest/1113/K来源:牛客网 The cows have reverted to their childhood and ar ...

  10. opengles reference card

    https://www.khronos.org/files/opengles31-quick-reference-card.pdf https://www.khronos.org/opengles/s ...