有时我们需要在现有的web服务器上增加新的模块实现更为丰富的功能,Nginx算是比较常用的web服务器,但是nginx也不仅仅只可以做web服务器,只要有对应的插件还可用作反向代理、即时通讯、文件下载、流媒体服务等功能,如果已经安装好了Nginx有不想重新安装覆盖的前提下如何新增模块呢?下面通过安装nginx-push-stream-module作为示例进行说明,安装其他模块也是同样的道理。

首先需要下载模块源码,这里在git上直接克隆

git clone http://github.com/wandenberg/nginx-push-stream-module.git

将欲增加的模块路径定义为一个变量(此步骤非必要步骤,且定义的变量只能当前会话可用,只是为了后续操作方便)

NGINX_PUSH_STREAM_MODULE_PATH=$PWD/nginx-push-stream-module

以下是nginx已经安装过的情况下增加模块,因为以前nginx安装在/usr/local/nginx目录下,所以下面的操作都是以此目录为路径进行操作,如果安装到其他目录有些命令需要做对应的更改。

先查看原有nginx的配置参数并拷贝出来

/usr/local/nginx/sbin/nginx -V

解压相同版本的nginx源码包(以前安装时的源码包),如果已经删除了课重新下载,版本相同即可(这里以1.12.2版本为例)

tar zxvf nginx-1.12.2.tar.gz

进入nginx的目录

cd nginx-1.12.2

进行配置(其中***是前面记录的nginx原始的配置,这个务必加上

./configure --add-module=$NGINX_PUSH_STREAM_MODULE_PATH ***

编译

make

不要执行make install避免覆盖,备份原来的nginx可执行文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak

将编译好的nginx复制到原始nginx的sbin目录

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

到此为止已经安装完毕,可以再执行/usr/local/nginx/sbin/nginx -V查看一下nginx的模块情况。