Nginx 动态模块

Nginx Plus 是一种模块化架构。我们可以通过软件模块包含新的特性和功能,这些模块可以按需插入到正在运行的 Nginx Plus 实例中。

动态模块包括 Nginx Plus 的功能,例如按 IP 地址定位用户、调整图像大小和将 Lua 脚本嵌入到 Nginx Plus 事件处理模型中。模块由 Nginx、Incorporation 和第三方开发人员创建。

在动态模块的帮助下,我们可以在运行时将单独的共享对象文件作为模块加载-第三方模块以及一些本机 Nginx

下一个 Nginx Plus 版本将建立在这个动态模块功能的基础上。 Nginx Plus 有一个托管模块存储库,其中包含一系列我们已经针对 Nginx Plus 进行测试和认证的第三方模块,使我们能够更轻松地自信地向 Nginx Plus 添加常用扩展。

显示可用模块列表

要显示可用模块列表,请运行以下命令(适用于 Debian 或 Ubuntu 操作系统):

$ apt-cache search Nginx-plus-module
Nginx-plus-module-geoip-Nginx Plus, provided by Nginx, Inc. (GeoIP dynamic modules)
Nginx-plus-module-geoip-dbg-Debugging symbols for the Nginx-plus-module-geoip
Nginx-plus-module-geoip2-Nginx Plus, provided by Nginx, Inc. (3rd-party GeoIP2 dynamic modules)
Nginx-plus-module-geoip2-dbg-Debugging symbols for the Nginx-plus-module-geoip2
Nginx-plus-module-headers-more-Nginx Plus, provided by Nginx, Inc. (3rd-party headers-more dynamic module)
Nginx-plus-module-headers-more-dbg-Debugging symbols for the Nginx-plus-module-headers-more
Nginx-plus-module-image-filter-Nginx Plus, provided by Nginx, Inc. (image filter dynamic module)
Nginx-plus-module-image-filter-dbg-Debugging symbols for the Nginx-plus-module-image-filter

来看看一些重要的动态模块列表:

Brotli

Brotli 是一种通用的无损数据压缩算法,它使用霍夫曼编码、LZ77 算法和二阶上下文建模的变体。其压缩率可与目前可用的最佳通用压缩方法相媲美。

安装步骤:

1.首先,安装 Brotli 模块。

$ apt-get install Nginx-plus-module-brotli

2、在 Nginx Plus 主配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

3、根据模块的需要执行一些额外的配置。

4.要启用该模块,请重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

设置标志 HttpOnly、secure 和 SameSite用于 Set-Cookie 上游响应标头中的 cookie。

安装步骤:

1.安装 Cookie-Flag 模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-cookie-flag

对于 Debian 或 Ubuntu:

$ apt-get install Nginx-plus-module-cookie-flag

对于SLES:

$ zypper install Nginx-plus-module-cookie-flag

2、在 Nginx Plus 主配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ngx_http_cookie_flag_filter_module.so;

3、根据模块的需要执行一些额外的配置。

4.要启用该模块,请重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

加密会话

这个动态模块为基于 AES-256 和 MAC 的 Nginx 变量提供了一些加密和解密支持。它通常与 Set-Misc 动态模块和 Nginx 重写模块一起使用。

安装步骤:

1.安装加密-会话模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-encrypted-session

对于 Debian 或 Ubuntu:

$ apt-get install Nginx-plus-module-encrypted-session

对于SLES:

$ zypper install Nginx-plus-module-encrypted-session

2、在 Nginx Plus 主配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ndk_http_module.so;
load_module modules/ngx_http_encrypted_session_module.so;

3、根据模块的需要执行一些额外的配置。

4.要启用该模块,请重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

GeoIP

使用预编译的 MaxMind GeoIP 数据库为 Http 和 TCP/UDP 流量创建基于客户端 IP 地址的变量:

安装步骤:

1.安装 GeoIP 模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-geoip

对于 Debian 或 Ubuntu:

$ apt-get install Nginx-plus-module-geoip

对于SLES:

$ zypper install Nginx-plus-module-geoip

2、在 Nginx Plus 主配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ngx_http_geoip_module.so;
load_module modules/ngx_stream_geoip_module.so;

3、根据模块的需要执行一些额外的配置。

4.要启用该模块,请重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

GeoIP2

使用预编译的 MaxMind GeoIP2 数据库根据客户端的 IP 地址创建变量,该数据库提供原始 GeoIP 数据库中不存在的本地化名称信息。

安装步骤:

1.安装 GeoIP2 模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-geoip2

对于 Debian 或 Ubuntu:

$ apt-get install Nginx-plus-module-geoip2

2、在 Nginx Plus 主配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;

3、根据模块的需要执行一些额外的配置。

4.要启用该模块,请重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

Headers-More

用于设置和清除输入和输出标题,用于扩展核心Headers模块:

安装步骤:

1.安装 Headers-More 模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-headers-more

对于 Debian 或 Ubuntu:

$ apt-get install Nginx-plus-module-headers-more

对于SLES:

$ zypper install Nginx-plus-module-headers-more

2、在 Nginx Plus 主配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ngx_http_headers_more_filter_module.so;

3、根据模块的需要执行一些额外的配置。

4.要启用该模块,请重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

Image-Filter

对 GIF、JPEG 和 PNG 图像进行裁剪、旋转、调整大小和执行其他转换。

安装步骤:

1.安装 Image-Filter 模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-image-filter

对于 Debian 和 Ubuntu:

$ apt-get install Nginx-plus-module-image-filter

对于SLES:

$ zypper install Nginx-plus-module-image-filter

2、在主 Nginx Plus 配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ngx_http_image_filter_module.so;

3、执行模块需要的额外配置。

4.要启用该模块,请重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

Lua

将Lua协程集成到Nginx的事件处理模块中。

安装步骤:

1.安装 Lua 模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-lua

对于 Debian 和 Ubuntu:

$ apt-get install Nginx-plus-module-lua

对于SLES:

$ zypper install Nginx-plus-module-lua

2、在主 Nginx Plus 配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下两个指令:

load_module modules/ndk_http_module.so;
load_module modules/ngx_http_lua_module.so;

注意: 指令必须按照上述顺序。

3.执行模块需要的额外配置。

4.重新加载 Nginx Plus 以启用模块:

$ Nginx-t && Nginx-s reload

Perl

在 Perl 中实现位置和变量处理程序,并将 Perl 调用插入 SSI(服务器端包含)。

安装步骤:

1.安装 Perl 模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-perl

对于 Debian/Ubuntu:

$ apt-get install Nginx-plus-module-perl

对于SLES:

$ zypper install Nginx-plus-module-perl

2、在主 Nginx Plus 配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ngx_http_perl_module.so;

3、执行模块需要的额外配置。

4.启用模块重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

RTMP

流 RTMP(实时消息传递协议)、Apple HTTP 实时流传输(HLS) 和基于 HTTP 的动态自适应流传输(DASH) 视频格式。

安装步骤:

1.安装 RTMP 媒体流模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-rtmp

对于 Debian 和 Ubuntu:

$ apt-get install Nginx-plus-module-rtmp

对于SLES:

$ zypper install Nginx-plus-module-rtmp

2、在主 Nginx Plus 配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下指令:

load_module modules/ngx_rtmp_module.so;

3、执行模块需要的额外配置。

4.要启用该模块,请重新加载 Nginx Plus:

$ Nginx-t && Nginx-s reload

Set-Misc

通过扩展 Nginx 核心重写模块,实现许多额外的 set_* 指令。

安装步骤:

1.安装 Set-Misc 模块。

对于 CentOS、Amazon Linux、Oracle Linux 和 RHEL:

$ yum install Nginx-plus-module-set-misc

对于 Debian 和 Ubuntu:

$ apt-get install Nginx-plus-module-set-misc

对于SLES:

$ XXXipper install Nginx-plus-module-set-misc

2、在主 Nginx Plus 配置文件/etc/Nginx/Nginx.conf 的顶级("main")上下文中添加以下两个指令:

load_module modules/ndk_http_module.so;
load_module modules/ngx_http_set_misc_module.so;

注意: 指令必须按此顺序。

3.执行模块需要的额外配置。

4.重新加载 Nginx Plus 以启用模块:

$ Nginx-t && Nginx-s reload

下一章:Nginx 最少配置

安全服务器是只允许尽可能多的服务器。理想情况下,我们将通过单独启用附加功能来构建基于最小系统的服务器。使用最少的配置也有助于调试。如果错误在最小系统中不可用,则会单独添加功能并继续搜索错误。这是运行 Nginx 所需的 ...