已安装的 Nginx,需要添加一个新模块,需要怎么弄呢?

步骤

以模块 nginx-sticky-module-ng 为例

  • 查看 Nginx 上次编译安装参数
1
2
3
4
5
6
[~]$ nginx -V
nginx version: nginx/1.10.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
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-ipv6 --with-http_sub_module

命令输出的数据中,configure arguments项内容即上次的编译参数,需要重复用到。

  • 备份原 Nginx 执行文件

  • 下载原版本的 Nginx 源码包,并解压

  • 下载第三方扩展模块

1
git clone https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng.git
  • 加入需要安装的新模块,重新编译

如果是第三方模块,则指定目录;如果是内置模块,则指定模块名。

1
./configure --prefix=/你的安装目录  --add-module=/第三方模块目录
1
2
3
4
5
6
7
./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-ipv6 --with-http_sub_module --add-module=./nginx-sticky-module-ng

// make后不要执行install,改用手动拷贝
make

// 强制覆盖执行文件
sudo cp -rfp objs/nginx /usr/local/nginx/sbin/nginx