生产环境还是建议使用nginx 1.14.2版本,此版本为稳定版,内存也比1.15版本占用少
注意nginx一定要编译安装,不要选择快速安装否则无法编译成功!
首先先执行:
cd /www/server/nginx/sbin/
cp nginx nginx.bak
cd ~
/www/server/nginx/sbin/nginx -V (确认你的版本是1.14.2再进行下一步)
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar zxvf nginx-1.14.2.tar.gz
cp nginx nginx.bak
cd ~
/www/server/nginx/sbin/nginx -V (确认你的版本是1.14.2再进行下一步)
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar zxvf nginx-1.14.2.tar.gz
对于 nginx 来说,由于其不支持post过滤,所以需要修改nginx-1.14.2源码目录下的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;
}
在其所在行上方添加:
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;
......
}
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;
......
}
/*这段是添加的*/
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 nginx-1.14.2
./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/nginx-http-concat --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-stream --with-stream_ssl_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 --with-ld-opt=-ljemalloc --add-module=/root/nginx-plugin-master
make
rm -rf /www/server/nginx/sbin/nginx
cp objs/nginx /www/server/nginx/sbin/
service nginx restart
wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip
unzip nginx-plugin-master.zip
cd nginx-1.14.2
./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/nginx-http-concat --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-stream --with-stream_ssl_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 --with-ld-opt=-ljemalloc --add-module=/root/nginx-plugin-master
make
rm -rf /www/server/nginx/sbin/nginx
cp objs/nginx /www/server/nginx/sbin/
service nginx restart
以上就是用最快速的方法自编译云锁的安全模块,make时间长短随机器的CPU性能判定务必耐心等待;安装后需要刷新PC端的控制台才可以正常显示自编译按钮。(如果已经开启web防护,需要先关闭后再刷新一次才能看见自编译功能开启)
注:在一些OVZ内核的机器上,CC防护没用,只有漏洞防护;CC防护只有借助带WAF的CDN或者Voxility、OVH、CeraNetworks等高防来防护。