云鎖在安裝的時候會自動適配nginx版本,,使用我們已經預編譯好的包含防護模塊的nginx文件替換掉您當前系統(tǒng)中使用的nginx文件,。卸載時,會將備份的系統(tǒng)原始nginx文件替換回來,。因此,,云鎖可保護使用nginx搭建的網(wǎng)站,開創(chuàng)了這個領域的先河,。云鎖自動適配的是nginx的標配設置,,而且攔截過濾是通過反向代理的形式,在很多時候nginx的配置都是經過調整修改設置的,,這就導致無形中反向代理會額外消耗服務器系統(tǒng)的資源,,最明顯的就是安裝寶塔面板再裝云鎖后,如果開啟了web防護功能,,yshttp進程會格外占用系統(tǒng)資源,,往往導致系統(tǒng)負載過高,這也就是很多人說的寶塔面板與云鎖兼容性不好的原因,。其實按云鎖官方的nginx自編譯教程來重新編譯一次nginx就可以完美解決問題,。下面我們把教程搬過來,希望能有需要的站友們提供幫助,。
注意:安裝寶塔面板的nginx,,必須是編譯安裝,如果是快速安裝的話,,請重新編譯安裝,。
友情提示
在安裝防護模塊前先重啟一次Nginx的服務,確保業(yè)務重啟后可以正常運行,,然后再安裝云鎖防護模塊,。
-
編譯前先將已經安裝的Nginx文件進行備份,通過ps命令查看nginx文件的路徑,。以下所有步驟都以自身nginx路徑為準(非寶塔,,但是命令是對的)。
# ps -elf | grep nginx
# cd /www/server/nginx/sbin/ # cp nginx nginx.bak
-
過步驟1查看的路徑跟-v參數(shù)查看當前Nginx版本,,因為寶塔面板nginx已經編譯安裝,,路徑可能跟上面不大一樣,,
-
由于其默認不支持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; }
-
下載云鎖防護模塊壓縮包
# cd /root/ # wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip
-
解壓云鎖防護模塊壓縮包nginx-plugin-master.zip
# unzip nginx-plugin-master.zip
-
獲取當前云鎖模塊所在目錄的全路徑
# cd nginx-plugin-master/ # pwd
-
查看當前nginx加載的模塊,在編譯加載云鎖防護模塊的時候仍需加載這些模塊
# /www/server/nginx/sbin/nginx –V
-
進入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
-
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 ...... };
-
configure完成后進行make(如原本無nginx,,make后還需make install)
# make
-
make完成后將系統(tǒng)中原有的nginx用重新編譯生成的nginx文件替換,,替換后重啟nginx使新編譯nginx生效
# rm -rf /www/server/nginx/sbin/nginx # cp objs/nginx /www/server/nginx/sbin/ # service nginx restart
-
到此通過PC端連接到服務器端,在PC端的界面上可以看到已識別nginx插件,。
寶塔面板nginx編譯安裝后的路徑一般在:/www/server/nginx/src/
關于寶塔面板要用到云鎖自編譯web防護功能的安裝就介紹到這里,,大家如果在編譯過程有中遇到問題可以聯(lián)系小編哦。