宝塔Tengine 2.2.4(2.3)编译云锁

Tengine是由淘宝网发起的Web服务器项目,兼容Nginx的配置。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。
 
特性:
继承Nginx-1.15.9的所有特性,兼容Nginx的配置;
支持HTTP的CONNECT方法,可用于正向代理场景;
支持异步OpenSSL,可使用硬件如:QAT进行HTTPS的加速与卸载;
增强相关运维、监控能力,比如异步打印日志及回滚,本地DNS缓存,内存监控等;
Stream模块支持server_name指令;
更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
动态脚本语言Lua支持。扩展功能非常高效简单;
支持按指定关键字(域名,url等)收集Tengine运行状态;
组合多个CSS、JavaScript文件的访问请求变成一个请求;
自动去除空白字符和注释从而减小页面的体积
自动根据CPU数目设置进程个数和绑定CPU亲缘性;
监控系统的负载和资源占用从而对系统进行保护;
显示对运维人员更友好的出错信息,便于定位出错机器;
更强大的防攻击(访问速度限制)模块;
更方便的命令行参数,如列出编译的模块列表、支持的指令等;
可以根据访问文件类型设置过期时间;
……

 
注意nginx-Tengine 2.2.4(2.3.0)一定要编译安装,不要选择快速安装否则无法编译成功!

首先先执行:

cd /www/server/nginx/sbin/

cp nginx nginx.bak

cd ~

/www/server/nginx/sbin/nginx -V (确认你的版本是Tengine/2.3.0 (nginx/1.15.9)再进行下一步)

wget https://tengine.taobao.org/download/tengine-2.3.0.tar.gz

tar zxvf tengine-2.3.0.tar.gz

 
然后添加POST过滤模块;你可以用宝塔面板自带的“文件”功能来编辑,修改解压后tengine-2.3.0源码目录下的src/http/ngx_http_upstream.c 文件,步骤如下:

1、查找 static void ngx_http_upstream_init_request(ngx_http_request_t *r)函数,
在其所在行上方添加:

  int ngx_http_yunsuo_post_in_handler(ngx_http_request_t *r);

2、在ngx_http_upstream_init_request函数开头,变量声明后,添加:

  if(ngx_http_yunsuo_post_in_handler(r))
  {
      return;

 
举个栗子:

修改前源码:

  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 (r->aio) {
          return;
      }

      u = r->upstream;
     
      ......
  }
修改后源码:

  /*这段是添加的*/
  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;
      }

      u = r->upstream;
     
      ......
     
  }

 
保存以上文件后接下来执行:

cd /root

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

unzip nginx-plugin-master.zip

cd tengine-2.3.0

./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/lua_nginx_module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=/www/server/nginx/src/pcre-8.42 --with-cc-opt=-Wno-error --add-module=/root/nginx-plugin-master

make

rm -rf /www/server/nginx/sbin/nginx

cp objs/nginx /www/server/nginx/sbin/

service nginx restart

 
通过PC端登陆云锁,PC端刷新后可以看到已识别nginx自编译插件(按钮由灰色变为绿色)
输入你的网址后面加上/?order%20by,测试云锁GET拦截
在搜索框中输入?order%20by进行搜索,测试云锁POST拦截
如果都能成功显示云锁的拦截页面则表示模块编译成功
 
以上就是用最快速的方法自编译云锁的安全模块,make时间长短随机器的CPU性能判定务必耐心等待;安装后需要刷新PC端的控制台才可以正常显示自编译按钮。(如果已经开启web防护,需要先关闭后再刷新一次才能看见自编译功能开启)
 
注:在一些OVZ内核的机器上,CC防护没用,只有漏洞防护;CC防护只有借助带WAF的CDN或者Voxility、OVH、CeraNetworks等高防来防护。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 9 = 15