有时我们需要在现有的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的模块情况。
windows下需要安装vs环境,生产环境几乎没有用win下的nginx,所以个人觉得太耗时间但是用处不大的应该放弃.