注:以下请用root用户执行
1、 下载tcp模块
cd /data/tools/soft
wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip
unzip master.zip
2、下载nginx
wget https://nginx.org/download/nginx-1.8.0.tar.gz
3、添加tcp模块重新编译nginx(切记不可执行make install)
tar -zxf nginx-1.8.0.tar.gz
cd nginx-1.8.0
4、下载NDK,解压缩
wget -c https://github.com/simpl/ngx_devel_kit/archive/v0.2.18.tar.gz
tar zxvf v0.2.18
5、下载Lua_module,解压缩
wget -c https://github.com/chaoslawful/lua-nginx-module/archive/v0.8.6.tar.gz
tar zxvf v0.8.6
6、导入tcp补丁文件
patch -p1 < /data/tools/soft/nginx_tcp_proxy_module-master/tcp.patch(注:只能在当前目录执行此操作)
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=/data/tools/soft/nginx_tcp_proxy_module-master --add-module=/data/tools/soft/ngx_devel_kit-0.2.18 --add-module=/data/tools/soft/lua-nginx-module
make
4、备份nginx旧版本二进制文件(期间nginx并不会停止服务)
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
5、拷贝新的二进制文件去nginx
cp objs/nginx /usr/local/nginx/sbin/
6、平滑升级
make upgrade(切记不可执行make install)
可以看到主进程号已经变了。
检测无问题,可查看到刚才添加的tcp模块,说明tcp模块成功。
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx –V
注: 为了解释 -p 参数,需要看看如下patch文件片段:
--- old/modules/pcitable Mon Sep 27 11:03:56 1999
+++ new/modules/pcitable Tue Dec 19 20:05:41 2000
如果使用参数 -p0,那就表示从当前目录找一个叫做old的文件夹,
再在它下面寻找 modules/pcitable 文件来执行patch操作。 而如果使用参数 -p1,
那就表示忽略第一层目录(即不管old),从当前目录寻找 modules 的文件夹,再在它下面找pcitable。
tcp {
upstream appmqtt {
server 172.16.16.170:9876;
}
server {
listen 9877;
server_name open.szjyy.demo.changyan.cn;
proxy_pass appmqtt;
}
}
tcp {
upstream appmqtt {
server 172.16.16.170:9876;
}
server {
listen 9876;
server_name open.szjyy.demo.changyan.cn;
proxy_pass appmqtt;
}
}
cd /usr/local/nginx/sbin
./nginx -s reload