为NGINX 安装第三方模块

Nginx 1.9.11 之前安装第三方模块时,由于并不支持动态的加载,因此都是覆盖 nginx 的执行文件安装的。但是在 1.9.11 版本之后有了 --add-dynamic-module 就可以动态添加模块了。操作之前还是需要检查已经安装的模块配置

[root@kaixinlab ~]# cd /usr/local/nginx/sbin/
[root@kaixinlab sbin]# ./nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2o  27 Mar 2018
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-openssl=/root/software/lnmp1.5/src/openssl-1.0.2o

在最后一行的输出中,configure arguments 部分是之后要用到的,我这里使用的 nginx 版本是 1.16.1,由于之前的源码包已经删除,这里重新下载一份

curl -LO http://nginx.org/download/nginx-1.16.1.tar.gz
tar xzvf nginx-1.16.1.tar.gz

下载需要安装的第三方模块,我这里使用的是 ngx-fancyindex,解压扔一边就可以了。

curl -LO https://github.com/aperezdc/ngx-fancyindex/archive/v0.4.3.zip

对 nginx 源码进行重新编译,安装

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-openssl=/root/software/lnmp1.5/src/openssl-1.0.2o --add-dynamic-module=/root/software/ngx-fancyindex-0.4.3
make modules

完成之后,将 objs 目录下新生成的 ngx_http_fancyindex_module.so 复制到 nginx 的 modules 目录中,在配置文件中加载此模块,让 nginx 重新 reload 即可。

# nginx.conf
load_module modules/ngx_http_fancyindex_module.so;
nginx -s reload