Nginx重新编译添加模块

你有没有遇到过这种情况:你需要用到nginx的某一个模块,但是你现在的模块没有你需要新增的这个模块,今天以我自己的服务器讲一下如何操作

服务器说明

nginx 
源码路径 /usr/local/src/nginx-1.12.0
编译路径 /usr/local/bin/nginx/sbin/nginx

先执行nginx -V 查看nginx编译情况,注意这里是大写的V

nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/bin/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 

比如我想添加http_v2_module模块

1.停止现在运行的nginx并备份原来编译好的nginx

nginx -s stop 
cp /usr/local/bin/nginx/sbin/nginx /usr/local/bin/nginx/sbin/nginx.bak

2.在源码路径下重新编译

cd /usr/local/src/nginx-1.12.0

./configure --prefix=/usr/local/bin/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-http_v2_module

3.编译

make

千万不要make install

4.覆盖原有的nginx编译文件

cp objs/nginx /usr/local/bin/nginx/sbin/nginx

5.启动nginx并查看nginx的编译模块

sudo nginx
nginx -V

现有模块

nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/bin/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-http_v2_module

有一些模块是需要去下载安装包的,但是总体的思路是一样的

比如我需要安装echo-nginx-module这个模块

1.cd /usr/local/src
2.wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz
3.tar -zxvf v0.61.tar.gz
然后和上面的操作一样 只是在编译的时候最后加了一行 --add-module=/usr/local/src/v0.61.tar
点赞