如何在nginx上安装模块?

时间:2020-01-30 14:59:14

标签: nginx module nginx-config

运行nginx -t时出现此错误:

nginx: [emerg] unknown directive "subs_filter_types" in /etc/nginx/sites-enabled/my.site.com.conf:285
nginx: configuration file /etc/nginx/nginx.conf test failed

因此,我需要安装替换过滤器模块并在nginx文档https://www.nginx.com/resources/wiki/modules/substitutions/#subs-filter-types中安装 表示要运行以下命令:

git clone git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
./configure --add-module=/path/to/module

问题是我的nginx安装中以及 git存储库。我真的不明白 至少我想知道该nginx configure脚本的内容。

2 个答案:

答案 0 :(得分:3)

您所指的说明适用于编译安装。

假设您想将模块添加到现有的 NGINX安装中,以下是使事情运行的通用步骤。

  1. 从nginx.org上将与您安装的NGINX完全匹配的版本提取到系统上,并将其解压缩到/usr/local/src/nginx
  2. git clone NGINX模块的源代码到您的系统上,例如/usr/local/src/nginx-module-foo
  3. cd /usr/local/src/nginx。在这里可以找到configure脚本。您基本上将使用所讨论的特定模块的config的位置来配置NGINX,从而进行下一步:
  4. ./configure --add-dynamic-module=../nginx-module-foo --with-compat
  5. make

作为编译的补充,您将在NGINX源的.so目录中的某个位置放置模块的objs文件。然后,您将其复制到例如/usr/lib64/nginx/modules/目录。

要使您现有的NGINX加载该模块,请在load_module modules/foo.so;的最顶部添加/etc/nginx/nginx.conf

您可以理解整个编译方法的许多弊端:一个是在生产系统上安装编译软件(gcc),另一个是每次升级NGINX或模块时都必须重新执行所有这些步骤。

由于上述原因,您可能需要搜索第三方模块的打包安装。

对于CentOS / RHEL系统,您可能想看看GetPageSpeed仓库(订阅软件,由于我是维护者,我倾向于提及它。但是当时CentOS / RHEL 8是免费的)编写所需的模块,goes down安装到几个命令:

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install nginx-module-substitutions

对于基于Debian的系统,可能存在相同的替代PPA。

答案 1 :(得分:0)

只需将前缀 subs 替换为 sub

对于默认的nginx 1.10.3安装(Ubuntu 16.04.5 LTS)

nginx -V 应该具有标志-with-http_sub_module ,以使用 sub _ *指令。

用法示例:

.ToList();

NGINX documentation link