已经安装Nginx的基础上增加新模块(例子nginx-upstream-fair)

有时我们需要在现有的web服务器上增加新的模块实现更为丰富的功能,Nginx算是比较常用的web服务器,但是nginx也不仅仅只可以做web服务器,只要有对应的插件还可用作反向代理、即时通讯、文件下载、流媒体服务等功能,

如果已经安装好了Nginx有不想重新安装覆盖的前提下如何新增模块呢?下面通过安装nginx-upstream-fair作为示例进行说明,

安装其他模块也是同样的道理。

我下文中的 插件 跟 模块一个意思 :)

1. 预备开始: nginx version: nginx/1.6.3

2. 查看现有nginx版本 和 nginx模块
3. 下载跟现有 nginx 版本一样的源文件
4. 下载插件,所有插件一个套路 例如:https://github.com/gnosek/nginx-upstream-fair
5. nginx源文件解压缩,
a. 生成 Makefile,为下一步的编译做准备,注意这里很关键,要加上之前已经安装好的模块。
b. 开始编译,但别安装 (make install会直接覆盖安装)
6. 替换之前 nginx目录下的 nginx执行文件
7. 配置文件修改, 重启,查看

demo: upstream-fair 插件, 动态调度算法

1. 查看版本
    sbin/nginx -v
    nginx version: nginx/1.6.3
2. 先查看原有nginx的配置参数并拷贝出来
    sbin/nginx -V
    [root@localhost nginx]# sbin/nginx -V
    nginx version: nginx/1.6.3
    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
    TLS SNI support enabled
    configure arguments: --user=nginx --group=nginx --prefix=/application/nginx-1.6.3/ --with-http_stub_status_module --with-http_ssl_module

3. 下载要安装的nginx插件 nginx-upstream-fair 并且解压缩


4. 下载相同版本的nginx源文件 http://nginx.org/en/download.html
    1> 解压缩,进入目录
   
    2> 生成 Makefile,为下一步的编译做准备,注意这里很关键,要加上之前已经安装好的模块。
    ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3/ --with-http_stub_status_module --with-http_ssl_module --add-module=/home/oldboy/tools/nginx-upstream-fair-master
    红色部分是:已经安装好的模块
    蓝色部分是: 我们要添加的, /home/oldboy/tools/nginx-upstream-fair-master 这个目录是我们要安装的插件目录
    3> 开始编译,但别安装 (make install会直接覆盖安装)
    #make

5. 1> 现在版本的 application/nginx/sbin/nginx 源文件,备份一下 (可以省略)
    mv application/nginx/sbin/nginx application/nginx/sbin/nginx.ori

    2> 用新编译好的 nginx 执行文件, 替换一下 现有版本的 nginx 执行文件
    cp -f objs/nginx /application/nginx/sbin/nginx


6. 查看现在的 nginx 已安装的模块
    /application/nginx/sbin/nginx -V


7. 配置 nginx-upstream-fair ,

## 负载均衡
upstream www_server_pools {
fair;
server 192.168.190.131:80;
server 192.168.190.132:80;
}

#blog
server {
listen 80;
server_name www.blog.com;

location / {
root html/blog;
index index.html index.htm;
proxy_pass http://www_server_pools; //反向代理
}

}
--------------------------------------------------------------------------------

完整 命令如下:
rz linux 上传文件命令 我的插件是下载到本地后上传服务器的
unzip nginx-upstream-fair-master.zip 解压
mkdir tmp 创建临时目录,给新编译的 nginx使用
cp nginx-1.6.3.tar.gz tmp/
cd tmp/
tar xf nginx-1.6.3.tar.gz tar解压
cd nginx-1.6.3
./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3/ --with-http_stub_status_module --with-http_ssl_module --add-module=/home/oldboy/tools/nginx-upstream-fair-master
make
cd objs/ 查看新编译好的 nginx 执行文件
cd ../
cp -f objs/nginx /application/nginx/sbin 新编译的 nignx 替换 现有版本的 nginx
cd /application/nginx

vim conf/extra/blog.conf 修改 nginx 配置文件,这里给出 fair的配置
upstream www_server_pools {
fair;
server 192.168.190.131:80;
server 192.168.190.132:80;
}
#blog
server {
listen 80;
server_name www.blog.com;

location / {
root html/blog;
index index.html index.htm;
proxy_pass http://www_server_pools;
}

}

测试配置文件 并 重启nginx
./sbin/nginx -t
./sbin/nginx -s reload

搞定:😊


*文章为作者原创或网络转载
转载此文请于文首标明作者姓名,保持文章完整性,并请附上出处
未按照规范转载者,陈帅同学保留追究相应责任的权利
编程改变世界

干了这碗鸡汤