nginx重新编译添加新模块方式

        有时候我们需要添加一些新的nginx模块实现一些功能上的需求,那就要重新编译nginx,加载需要添加的模块,在重新编译前先检查一下版本和已经安装了哪些模块;

nginx启动指令后加 -v 和-V 分别是查看软件的版本和已经安装的模块

[root@nginx-1 ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.0
[root@nginx-1 ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module 
--with-pcre=/mnt/lnmp/pcre-8.31 --with-http_realip_module

重新编译要进入nginx安装的源码目录里,执行configure 时加上新增的模块选项,这里新增编译gzip模块

[root@nginx-1 nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre=/mnt/lnmp/pcre-8.31
 --with-http_realip_module --with-http_gzip_static_module

configure执行结束后执行 make指令

[root@nginx-1 nginx-1.8.0]# make

make指令执行结束后就完成了,不能执行make install,否则会覆盖安装,这时在源码目录的objs目录中会新生成一个nginx文件

[root@nginx-1 nginx-1.8.0]# ls objs
autoconf.err  Makefile  nginx  nginx.8  ngx_auto_config.h  ngx_auto_headers.h  ngx_modules.c  ngx_modules.o  src

将这nginx执行文件复制到安装目录的启动位置,复制前先备份一下

[root@nginx-1 ~]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

再将新生成的文件复制过去

[root@nginx-1 ~]# cp /mnt/lnmp/nginx-1.8.0/objs/nginx /usr/local/nginx/sbin/
cp:是否覆盖"/usr/local/nginx/sbin/nginx"? y  #覆盖即可

然后再查看

[root@nginx-1 ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
 --with-pcre=/mnt/lnmp/pcre-8.31 --with-http_realip_module --with-http_gzip_static_module

 看到最后gzip模块已经被安装了。最后重载nginx即可。

点赞