国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Nginx內(nèi)容替換模塊http_substitutions_filter_module及實用案例分享

說到Nginx的內(nèi)容替換功能,大部分人應該都聽說過Nginx內(nèi)置的的subs_filter替換模塊,但是這個模塊有個缺憾,就是只能替換一次,而且還不支持正則表達式,這就有些雞肋了。

不過,我們可以集成一個第三方的替換模塊:ngx_http_substitutions_filter_module,來實現(xiàn)我們的各種需求。

經(jīng)過測試,這個模塊至少有如下實用功能:

①、支持多次替換

②、支持正則替換

③、支持中文替換

Ps:略有遺憾的是,這個替換不能使用到 if 判斷模塊內(nèi),否則就超神了。。。

下面,簡單介紹下 ngx_http_substitutions_filter_module 的安裝實用以及一些實用案例。

一、編譯集成

和所有Nginx非內(nèi)置模塊一樣,添加模塊需要在編譯的時候指定模塊源碼包來集成。當然,Tengine可以使用動態(tài)模塊加載的功能,這里就不細說了。

①、下載模塊源碼包并解壓,最后列出目錄位置備用

1
2
3
4
[root@MyServer ~]# wget -O ngx_http_substitutions_filter_module-master.zip https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.zip
[root@MyServer ~]# unzip ngx_http_substitutions_filter_module-master.zip
[root@MyServer ~]# cd ngx_http_substitutions_filter_module-master && pwd
/root/ngx_http_substitutions_filter_module-master

github手動下載地址:https://github.com/yaoweibin/ngx_http_substitutions_filter_module/

②、在服務(wù)器上執(zhí)行 nginx -V 查看當前  Nginx 編譯參數(shù),比如:

1
2
3
4
5
[root@MyServer ~]# /usr/local/nginx/sbin/nginx  -V
Tengine version: Tengine/2.1.2 (nginx/1.6.2)
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --add-module=../ngx_cache_purge-2.3 --with-http_sub_module

③、加上模塊參數(shù),重新編譯Nginx

找到服務(wù)器上原來安裝時留下的 Nginx 源碼目錄(如果沒有請重新下載并解壓,此處不贅述),進入目錄后,在第②步中的參數(shù)基礎(chǔ)上新增集成替換模塊(請注意前面需要加上  ./configure ):

./configure [+原有參數(shù)+] --add-module=/root/ngx_http_substitutions_filter_module-master/

例如:

1
./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --add-module=../ngx_cache_purge-2.3 --with-http_sub_module --add-module=/root/ngx_http_substitutions_filter_module-master/

再往后,則是make以及平滑升級,請參考之前的文章完成:

Nginx在線服務(wù)狀態(tài)下平滑升級或新增模塊的詳細操作記錄

正確完成后,Nginx就具備內(nèi)容替換功能了。

二、使用說明

模塊的github主頁其實已經(jīng)有了很詳細的說明了,這里就簡單的做下搬運工。

使用示例:

1
2
3
4
5
6
location / {
    subs_filter_types text/html text/css text/xml;
    subs_filter st(\d*).example.com $1.example.com ir;
    subs_filter a.example.com s.example.com;
    subs_filter http://$host https://$host;
}

github給出的使用示例來看,這個模塊涉及2個指令:

subs_filter_types

subs_filter_types 語法: subs_filter_types mime-type [mime-types]

默認: subs_filter_types text/html

適用: http, server, location

subs_filter_types 是用來指定替換文件類型的 默認僅僅替換text/html類型的文件。

 

subs_filter

subs_filter 語法: subs_filter source_str destination_str [gior]

默認: none

適用: http,server,location

subs_filter 是用來替換文本的,可以使用正則

g(默認):替換匹配項。

i  :區(qū)分大小寫的匹配

o : 只匹配發(fā)現(xiàn)的第一個。

r  : 正則匹配。

三、案例分享

①、全站https

有了這個功能,要實現(xiàn)全站https也就是非常簡單了,只要把本站的http://協(xié)議代碼全部替換成https即可。當然,替換時要注意匹配范圍,免得把不支持https的外鏈也一起替換了。。。

比如,將如下代碼添加到網(wǎng)站Nginx配置內(nèi)即可完成替換

1
2
location / { # 新增如下代碼
    subs_filter http:// https:// gr; #將頁面中的http鏈接全部替換為https

②、CDN域名替換

這個模塊在CDN方面同樣簡單實用!比如,我們網(wǎng)站要用到七牛CDN,不管是純代碼還是插件,那都是靠PHP代碼來進行替換的,性能肯定就不如Nginx直接替換來的簡單粗暴了。

1
2
location / { # 新增如下代碼,將靜態(tài)文件域名替換成七牛
    subs_filter https://zhangge.net/([^"\']*?)\.(jpg|png|js|css|jpeg|bmp) https://example.qiniudn.com/$1.$2 igr;

Ps:經(jīng)測試,在使用正則模式時,不能使用nginx內(nèi)置變量,比如:$host,否則會出現(xiàn)如下報錯:

nginx: [emerg] match part cannot contain variable during regex mode in ***

③、解決前臺暴露管理員賬號風險

前段時間,看到有博客在說 WordPress 會在前臺暴露管理員登陸賬戶的問題,然后給出了較為復雜的解決辦法:通過修改 WordPress 內(nèi)核函數(shù)來隱藏賬戶名。

修改內(nèi)核函數(shù),一般是非常無奈,沒有其他解決方法的時候才會用到,所以,我看到這個問題第一件時間想到的辦法就是替換。

使用PHP替換是非常簡單的,參考博客之前分享的文章即可搞定:

WordPress簡單代碼開啟七牛CDN及集成七??s略圖的方法

而對于本文來說,PHP替換方案依然過于復雜,因為本文一行規(guī)則即可解決問題,比如將登錄名admin替換為null:

1
2
3
location / {
    # 替換管理員登錄名 admin 為 null
    subs_filter  'author-admin' 'author-null';

其他登錄名,請自行參考,若有多個登錄名可以另起多行或使用正則表達式均可。

鑒于篇幅有限,就分享這三個實用技巧吧,其他就靠自己發(fā)掘了,比如鏡像網(wǎng)站做內(nèi)容替換什么的....

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【Nginx18】Nginx學習:WebDav文件存儲與圖片媒體處理模塊
Nginx開源web服務(wù)器軟件本周發(fā)布更新,修復多個拒絕服務(wù)(DoS)漏洞
用Nginx禁止國外IP訪問我的網(wǎng)站...
安裝成功的nginx如何添加未編譯安裝模塊
常用的Nginx重要模塊有什么?linux網(wǎng)絡(luò)管理學習
nginx中處理http header詳解(1)
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服