推广 热搜: 后台  帝国cms  DESTOON  位置  网站  Wordpress教程  内容  帝国cms建站  MAC系统  destoon模板 

云锁防火墙 Nginx/Tengine 自编译教程说明

   日期:2019-04-22     浏览:367    违规举报
 

云锁在安装的时候会自动适配nginx版本,使用我们已经预编译好的包含防护模块的nginx文件替换掉您当前系统中使用的nginx文件。卸载时,会将备份的系统原始nginx文件替换回来。因此,云锁可保护使用nginx搭建的网站,开创了这个领域的先河。云锁自动适配的是nginx的标配设置,而且拦截过滤是通过反向代理的形式,在很多时候nginx的配置都是经过调整修改设置的,这就导致无形中反向代理会额外消耗服务器系统的资源,最明显的就是安装宝塔面板再装云锁后,如果开启了web防护功能,yshttp进程会格外占用系统资源,往往导致系统负载过高,这也就是很多人说的宝塔面板与云锁兼容性不好的原因。其实按云锁官方的nginx自编译教程来重新编译一次nginx就可以完美解决问题。下面我们把教程搬过来,希望能有需要的站友们提供帮助。

注意:安装宝塔面板的nginx,必须是编译安装,如果是快速安装的话,请重新编译安装。

友情提示

在安装防护模块前先重启一次Nginx的服务,确保业务重启后可以正常运行,然后再安装云锁防护模块。

  1. 编译前先将已经安装的Nginx文件进行备份,通过ps命令查看nginx文件的路径。以下所有步骤都以自身nginx路径为准(非宝塔,但是命令是对的)。

    # ps -elf | grep nginx 

    # cd /www/server/nginx/sbin/
    # cp nginx nginx.bak

  2. 过步骤1查看的路径跟-v参数查看当前Nginx版本,因为宝塔面板nginx已经编译安装,路径可能跟上面不大一样,

  3. 宝塔面板nginx编译安装后的路径一般在:/www/server/nginx/src/


  4. 由于其默认不支持post过滤,所以需要修改Nginx文件。1.8.0 版本以下修改源码目录下ngx_http_upstream.c文件(Nginx 1.8.0 及以上版本和Tengine跳过该步骤)。在static void ngx_http_upstream_init_request(ngx_http_request_t \*r);行上方添加:int ngx_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.1/src/http/
    # vi ngx_http_upstream.c
    --------------------下面这段是添加的----------------
    int
    ngx_http_yunsuo_post_in_handler(ngx_http_request_t *r);
    --------------------------------------------------
    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;
    --------------------下面这段是添加的---------------- if (ngx_http_yunsuo_post_in_handler(r)) { return;
    }
    -------------------------------------------------- if (r->aio) { return;
    }

  5. 下载云锁防护模块压缩包

    # cd /root/
    # wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip

  6. 解压云锁防护模块压缩包nginx-plugin-master.zip

    # unzip nginx-plugin-master.zip

  7. 获取当前云锁模块所在目录的全路径

    # cd nginx-plugin-master/
    # pwd

  8. 查看当前nginx加载的模块,在编译加载云锁防护模块的时候仍需加载这些模块

    # /www/server/nginx/sbin/nginx –V

  9. 进入nginx源码目录,对nginx进行编译;编译时在第8步获取的nginx原有模块后添加云锁防护模块,模块路径为第7步获取的云锁防护模块源码全路径“/root/nginx-plugin-master”

    # cd nginx-1.10.1/
    # ./configure --prefix=/www/server/nginx --with... --add-module=/root/nginx-plugin-master

  10. Nginx1.8.0 以上和 Tengine 2.2.0 则需要修改objs/Makefile文件和objs/ngx_modules.c来支持post过滤和内容过滤。

    首先,在Makefile文件中的CFLAGS=...-Werror -g后追加宏定义-DHIGHERTHAN8

    # vi objs/Makefile
    CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -DHIGHERTHAN8

    其次,将ngx_modules.c中的&ngx_http_yunsuo_module,向下移动到ngx_http_userid_filter_module和ngx_http_headers_filter_module之间。(已在此之间的则可忽略)

    # vi objs/ngx_modules.c
    ngx_module_t *ngx_modules[] = {
       &ngx_core_module,
       ......
       &ngx_http_upstream_keepalive_module,
       &ngx_http_upstream_zone_module,
    -----------下面这行向下移动----------------   
       &ngx_http_yunsuo_module,
    ------------------------------------------     
       &ngx_http_stub_status_module,
       ......
       &ngx_http_userid_filter_module,
    ---------------移动到该位置-----------------  
       &ngx_http_yunsuo_module,
    -------------------------------------------
       &ngx_http_headers_filter_module,
       &ngx_http_copy_filter_module,
       &ngx_http_range_body_filter_module,
       &ngx_http_not_modified_filter_module,
       NULL
    };
    
    char *ngx_module_names[] = { "objs/ngx_modules.c" 186L, 6441C
       ......
    };

  11. configure完成后进行make(如原本无nginx,make后还需make install)

    # make

  12. make完成后将系统中原有的nginx用重新编译生成的nginx文件替换,替换后重启nginx使新编译nginx生效

    # rm -rf /www/server/nginx/sbin/nginx
    # cp objs/nginx /www/server/nginx/sbin/
    # service nginx restart

  13. 到此通过PC端连接到服务器端,在PC端的界面上可以看到已识别nginx插件。


关于宝塔面板要用到云锁自编译web防护功能的安装就介绍到这里,大家如果在编译过程有中遇到问题可以联系小编哦。




免责声明:
1、本站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
2、本站部分作品内容是由网友自主投稿和发布、编辑整理上传,对此类内容本站仅提供交流平台,不为其版权负责,更不为其观点承担任何责任。
3、因行业及专业性有限,故未能核验会员发布内容的真实性及有效性,不为其负责,如有虚假或违规内容敬请准备材料图片发邮件到info@n360.cn举报,本站核实后积极配合删除。
4、如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时处理或删除。
 
打赏
 
更多>同类网站技术
0相关评论

推荐图文
推荐网站技术
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  免责声明  |  版权隐私  |  信息发布规则  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2020081222号
Powered By DESTOON