导航

让云锁支持 Nginx 高版本

2017-5-08 根据内容自己重新部署云锁,顺便修复内容。
环境:Debian 8 x64、nginx 1.12.0


目前 OneinStack 自带 nginx-1.10.2,但云锁却只支持到 nginx 1.9,在官方论坛找到了解决办法。

所有步骤基于 OneinStack 。

编译升级安装 nginx

cd ~/oneinstack/src
NGINX_VERSION=1.12.0
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/

先修改
cd ~/oneinstack/src/nginx-1.12.0/src/http/ngx_http_upstream.c

1.搜索关键字
ngx_http_upstream_init_request(ngx_http_request_t *r)

2.添加代码

- - - - - - 添加区 1- - - - - -
int
ngx_http_yunsuo_post_in_handler(ngx_http_request_t *r);
- - - - - - 添加区 1- - - - - -
static void
ngx_http_upstream_init_request(ngx_http_request_t *r)
{
    ngx_str_t                      *host;
    ngx_uint_t                      i;
    ngx_resolver_ctx_t             *ctx, temp;
    ngx_http_cleanup_t             *cln;
    ngx_http_upstream_t            *u;
    ngx_http_core_loc_conf_t       *clcf;
    ngx_http_upstream_srv_conf_t   *uscf, **uscfp;
    ngx_http_upstream_main_conf_t  *umcf;
- - - - - - 添加区 2- - - - - -
    if (ngx_http_yunsuo_post_in_handler(r)) {
        return;
    }
- - - - - - 添加区 2- - - - - -
    if (r->aio) {
        return;
    }
    u = r->upstream;

3.下载防护插件

cd ~/oneinstack/src
wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip
unzip nginx-plugin-master.zip
cd ~/oneinstack/src/nginx-1.12.0

4.nginx -V 查看编译参数

--prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2k --with-pcre=../pcre-8.40 --with-pcre-jit --with-ld-opt=-ljemalloc

参数前增加 ./configure 末尾增加 --add-module=../nginx-plugin-master
例:

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2k --with-pcre=../pcre-8.40 --with-pcre-jit --with-ld-opt=-ljemalloc --add-module=../nginx-plugin-master

5.编译 make

6.备份原文件,再替换编译出来的文件

mv /usr/local/nginx/sbin/nginx{,_`date +%F`}
cp objs/nginx /usr/local/nginx/sbin
service nginx reload

nginx -v

安装云锁

V2 云锁(不建议)

x86:
cd ~
wget http://download.yunsuo.com.cn/yunsuo_agent_32bit.tar.gz
tar zxvf yunsuo_agent_32bit.tar.gz
chmod +x yunsuo_agent_32bit.bin

x64:
cd ~
wget http://download.yunsuo.com.cn/yunsuo_agent_64bit.tar.gz
tar zxvf yunsuo_agent_64bit.tar.gz
chmod +x yunsuo_agent_64bit.bin

安装:
./yunsuo_agent_32bit.bin
./yunsuo_agent_64bit.bin

卸载 /usr/local/yunsuo_agent/uninstall

V3 云锁(建议安装)

x86:
cd ~
wget http://download.yunsuo.com.cn/v3/yunsuo_agent_32bit.tar.gz
tar zxvf yunsuo_agent_32bit.tar.gz

x64:
cd ~
wget http://download.yunsuo.com.cn/v3/yunsuo_agent_64bit.tar.gz
tar zxvf yunsuo_agent_64bit.tar.gz
cd yunsuo_install

安装 ./install
卸载 /usr/local/yunsuo_agent/uninstall
状态 ps -ef | grep yunsuo_agent

会显示如下信息:

checking installation environment:                         [ OK ]
decompression package:                                     [ OK ]
Initialize Configuration Information:                      [ OK ]
Install Auto-start Script:                                 [ OK ]
Configure Firewall Rules:                                  [ OK ]
Install Protection Driver:                                 [ OK ]
Check And Install WebServer Plugin:
        [1]: Nginx      443                                [ Found ]
                Nginx contains third party plug-ins, temporarily not install plug-ins
        [2]: Nginx      80                                 [ Found ]
                Nginx contains third party plug-ins, temporarily not install plug-ins
Starting SoftWare:                                         [ OK ]

让云锁识别新 nginx(这步 V2 不用操作,反正我是没能让它识别。V3 随意~)

cd /usr/local/yunsuo_agent/nginx/
./configure_compile_nginx /usr/local/nginx/

完成识别

calc md5sum : 25c7363e2b6c8d0b89xfakex22ce37c8
arch=64-bit, ver=1.12.0, path=/usr/local/nginx
save nginx info sucessfully!

云锁端口

-A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT
-A INPUT -p udp -m udp --dport 5555 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 5555 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 5555 -j ACCEPT

修改防火墙
Debian:
路径:/etc/iptables.up.rules
生效:iptables-restore < /etc/iptables.up.rules

Centos:
路径:/etc/sysconfig/iptables
生效:service iptables restart

云锁命令

service yunsuo start | stop | restart | status

云锁自启

/etc/rc.local 添加 /etc/init.d/yunsuo start

最后

一定要重启系统。

成果

问题

连接失败解决:

  1. 添加云锁自启,重启服务器,查看状态 ps -ef | grep yunsuo_agent,客户端再次连接。
  2. 另一种情况就是防火墙端口未打开。
  3. 有可能是因为 nginx 版本确实太新,可以降级云锁旧版

2016-09-09
选择表情