OneinStack编译云锁Nginx防护插件

本帖最后由 fanshichenlun 于 2016-10-10 10:28 编辑

编译安装

      由于OneinStack使用的是Nginx1.10.0,而云锁现阶段支持Nginx最高版本为1.9.*,所以Oneinstack的用户需要自己编译Nginx,使云锁识别。具体编译执行步骤如下:
1.  编译前先将已经安装的Nginx文件进行备份
    cd /usr/local/nginx/sbin/
    cp nginx nginx.bak
01备份原有nginx.png
2.  进入OneinStack的src目录,解压Nginx1.10.0压缩包
    cd /root/oneinstack/src/
    tar zxvf nginx-1.10.0.tar.gz
02解压nginx源码.png
3.   由于其不支持post过滤,所以需要修改nginx源码目录下ngx_http_upstream.c 文件,在static void ngx_http_upstream_init_request(ngx_http_request_t *r);行上方添加:“intngx_http_yunsuo_post_in_handler(ngx_http_request_t *r);”和在ngx_http_upstream_init_request后,添加:
if(ngx_http_yunsuo_post_in_handler(r)) {
return;
}
    cd nginx-1.10.0/src/http/
    vim ngx_http_upstream.c
  1. int
  2. ngx_http_yunsuo_post_in_handler(ngx_http_request_t *r);
  3. -------------------上面这段是添加的---------------------

  4. static void
  5. ngx_http_upstream_init_request(ngx_http_request_t *r)
  6. {
  7.     ngx_str_t                      *host;
  8.     ngx_uint_t                      i;
  9.     ngx_resolver_ctx_t             *ctx, temp;
  10.     ngx_http_cleanup_t             *cln;
  11.     ngx_http_upstream_t            *u;
  12.     ngx_http_core_loc_conf_t       *clcf;
  13.     ngx_http_upstream_srv_conf_t   *uscf, **uscfp;
  14.     ngx_http_upstream_main_conf_t  *umcf;

  15.    --------------------这段是添加的----------------
  16.     if (ngx_http_yunsuo_post_in_handler(r)) {
  17.         return;
  18.     }
  19.    ------------------------------------------------

  20.     if (r->aio) {
  21.         return;
  22.     }
复制代码
03 vim post_1.png
03 vim post_2.png
4.  
下载云锁防护插件压缩包
    cd /root
04下载云锁防护插件.png
5.  解压云锁防护插件压缩包nginx-plugin-master.zip
    unzip nginx-plugin-master.zip
05解压云锁防护插件.png
6.  获取当前云锁插件源码所在目录的全路径
    pwd
06获取插件路径.png
7.  查看当前nginx加载的模块,在编译加载云锁防护模块的时候仍需加载这些模块
    /usr/local/nginx/sbin/nginx –V
07查看当前nginx加载模块.png
8.  进入nginx源码目录,根据第7步获取的编译参数对nginx进行编译;编译时添加云锁防护模块,路径为第6步获取的云锁防护模块源码全路径“/root/nginx-plugin-master”;
    cd oneinstack/src/nginx-1.10.0/
    ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-pcre=../pcre-8.38 --with-pcre-jit --with-ld-opt='-ljemalloc' --add-module=/root/nginx-plugin-master
08编译云锁插件_1.png
configure完成后进行make
    make
08编译云锁插件_2.png
9.  将系统中原有的nginx用重新编译生成的nginx文件替换,替换后重启nginx使新编译nginx生效
    rm -rf /usr/local/nginx/sbin/nginx
    cp objs/nginx /usr/local/nginx/sbin/
09替换.png
10.  让云锁识别新编译的nginx
①  安装云锁,如已经安装则忽略此步骤。安装步骤参照“云锁v1.0-“Linux版”安装步骤
②  编译nginx路径,使云锁识别
    cd /usr/local/yunsuo_agent/nginx/
    ./configure_compile_nginx /usr/local/nginx/
10识别.png
       到此通过PC端连接到服务器端,在PC端的界面上可以看到已识别nginx插件。

卸载插件

1.  通过PC端卸载
    将安装是备份的nginx.bak文件复制到云锁nginx目录的back下,覆盖原有nginx.bak文件。这样就可以在云锁PC端直接卸载了。
    cd /usr/local/nginx/sbin/
    rm -rf /usr/local/yunsuo_agent/nginx/backup/nginx.bak
    cp nginx.bak /usr/local/yunsuo_agent/nginx/backup/
11卸载插件.png

2.  删除文件
    手动删除或者重命名 /usr/local/yunsuo_agent/nginx/ 目录下的 libnginx_plugin.so(此操作需要关闭云锁自保护功能), 重启 nginx 服务即可。

3.  使用原文件替换
    手动使用系统原有的nginx直接替换当前使用的带有云锁插件的nginx。

FAQ

1.  编译时可能出现的几种错误解决方法
① 遇如下错误信息 : cc1: all warnings being treated as errors, 编译器把警告信息作为错误处理了
    解决: 修改 objs/Makefile
      把CFLAGS = -pipe -O -W -Wall -Wpointer-arith-Wno-unused-parameter -Werror -g修改为:CFLAGS = -pipe -O -W -Wall -Wpointer-arith-Wno-unused-parameter -g即去掉-Werror选项
   重新make,注意是重新make而不是重新./configure
② 遇如下错误信息:undefined reference to `dlclose',由于编译器版本过高,需要在链接时,加入-ldl 选项
    解决: 修改 objs/Makefile
    搜索 -lpthread,定位到该行结束,加入 -ldl
    形如 -lpthread -lcrypt 修改为 -lpthread -lcrypt -ldl
    重新 make,注意是重新make而不是重新./configure
云锁官方群:462326426,欢迎加入;个人qq:1011094267
发表于 2016-5-19 23:04:13 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

该帖共收到 2 条回复!
第八步注意with-pcre=../pcre-8.38   版本号,在当前目录可以看到,不更正会编译失败
发表于 2016-10-4 00:21:05 | 显示全部楼层

回复 | 支持 | 反对 使用道具 举报

一只唐同学 发表于 2016-10-4 00:21
第八步注意with-pcre=../pcre-8.38   版本号,在当前目录可以看到,不更正会编译失败 ...

第八步是根据第七步来的,不是要复制教程的内容
云锁官方群:462326426,欢迎加入;个人qq:1011094267
发表于 2016-10-10 10:23:33 | 显示全部楼层

回复 | 支持 | 反对 使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

QQ|论坛首页|站点统计|小黑屋|云锁论坛-服务器安全技术讨论专业论坛、云锁软件技术讨论 ( 京ICP备14002707号-3  

GMT+8, 2017-5-29 21:29 , Processed in 0.244451 second(s), 30 queries .

Powered by 云锁

© 2014-2018 JOWTO Inc.

快速回复 返回顶部 返回列表