最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ngx_http_substitutions_filter_module如何幫助你進(jìn)行內(nèi)容替換

2023-07-07 22:24 作者:驛站小西  | 我要投稿

最近琢磨著將靜態(tài)資源鏈接的默認(rèn)驛站域名替換成白嫖的國內(nèi)備案域名方才接觸到這個Module。具體參見:https://post.cplus8.com/d/608

對于替換網(wǎng)頁內(nèi)容,nginx官方自帶的ngx_http_sub已經(jīng)能夠做到了,但對于我這種情況是無能為力的。如果我無腦將靜態(tài)資源路徑post.cplus8.com/assets替換成srcplus.ddwoo.top的話就會把css的也換掉,出現(xiàn)RocketLoader兼容性問題;如果逐條替換那真是閑的蛋疼……

This in image


模塊介紹

ngx_http_sub_module也僅是支持了最基本的字符串替換以及限定MINE類型sub_filter_tpyes(如text/html)和是否多次替換(sub_filter_once)的簡單特性。而相比之下,有

由國人開發(fā)的ngx_http_substitutions_filter_module則顯得極為強(qiáng)大,輕而易舉的幫助我們解決上述問題。

項(xiàng)目地址:https://github.com/yaoweibin/ngx_http_substitutions_filter_module

This in image


先來看一下它的特性


同ngx_http_subs_filter一樣具有的mine類型限制和多次替換有無


支持正則表達(dá)式的匹配,大小寫字母的區(qū)分與匹配


支持指定變量繞過替換


一個使用示例


下文將簡單介紹如何安裝和使用

Details of installation and usage are as follows.


安裝/Installation

由于是第三方非內(nèi)置的模塊,這里需要你重新編譯您的nginx。

如果您在用寶塔面板,您可以下滑


下載ngx_http_substitutions_filter_module源碼

cd /path/to/ngx_http_substitutions_filter_module

git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module.git

2.使用nginx -V查看現(xiàn)在的編譯參數(shù)


root@cpluserver:~# nginx -V

nginx version: nginx/1.23.2

built by gcc 10.2.1 20210110 (Debian 10.2.1-6)

built with OpenSSL 1.1.1q? 5 Jul 2022

TLS SNI support enabled

configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_cache_purge --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_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-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module

將configure arguments后面一串編譯參數(shù)復(fù)制出來備用


3.下載nginx源碼進(jìn)行編譯,替換原來的nginx


Especially

如果您使用的是寶塔面板的話,在最近的安裝的腳本當(dāng)中,他們已經(jīng)默認(rèn)加入了ngx_http_substitutions_filter_module模塊,(這一點(diǎn)我還是吹吹寶塔)您可以通過nginx -V來確認(rèn)是否存在;若無,您只需要將原有版本卸載再安裝一遍即可以;如果還是不行,您可以在安裝時選擇編譯安裝并且添加好這模塊的參數(shù)--add-module:/path/to/ngx_http_substitutions_filter_module完成安裝。

別問為什么我在安裝時看到有報(bào)錯提示:ngx_http_substitutions_filter_module have multiple definitions時困惑了很久。


至此,您的nginx已經(jīng)具備高級的內(nèi)容替換了!


說明和使用范例/Usage & Examples

以下是說明:


你可以看到,這玩意指令叫subs_filter真就對標(biāo)ngx_http_sub_module的sub_filter。

這里簡單說明下:

subs_filter_type [MINE] ,需要設(shè)置proxy_set_header Accept-Encoding "";禁用gzip壓縮與前者一樣,這里不必贅述。

subs_filter允許將nginx響應(yīng)中的源字符串(正則表達(dá)式或固定的)和目標(biāo)字符串。變量

只有在固定字符串模式下,匹配文本中的變量才是可用的,這意味著 匹配的文本不能包含變量,如果它是一個正則表達(dá)式。替換文本可以包含變量。支持每個位置有一個以上的變量。支持每個位置有多個替換規(guī)則。

subs_filter [source_str] [destination_str] 參數(shù)(igor)

參數(shù)說明

g(默認(rèn)):替換匹配項(xiàng)。

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

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

r : 啟用正則匹配。


subs_filter_bypass 變量1 變量2 …


示例

對于驛站的需求,相比您已經(jīng)很快就能想出來的。

我們可以使用正則對特定的文件后綴進(jìn)行匹配

,從而完成替換,像這樣

subs_filter https://post.cplus8.com/assets/([^"\']*?)\.(jpg|png|webp|js|jpeg|bmp|woff2|woff) https://srcplus.ddwoo.top/$1.$2 igr;

變量一包含了任意字符,變量2包含了特定的文件后綴,這樣便可以替換css之外一些常用的靜態(tài)資源到國內(nèi)cdn。然而這也并非什么優(yōu)雅的方法,最好還是去寫個flarum插件修改,這只是個下下策。


其他實(shí)例

全站http資源替換成https

subs_filter http://$host https://$host;


ngx_http_substitutions_filter_module如何幫助你進(jìn)行內(nèi)容替換的評論 (共 條)

分享到微博請遵守國家法律
怀安县| 海伦市| 屏边| 阜南县| 蛟河市| 黄冈市| 登封市| 高要市| 寿宁县| 大兴区| 仁怀市| 新乡市| 玉环县| 华阴市| 余庆县| 太白县| 和硕县| 尤溪县| 芒康县| 巴彦淖尔市| 邵阳县| 乌苏市| 甘孜| 射洪县| 华亭县| 剑河县| 沙坪坝区| 五华县| 襄汾县| 嘉定区| 衡山县| 唐河县| 台南县| 龙井市| 观塘区| 嘉黎县| 新宁县| 收藏| 巢湖市| 平塘县| 五莲县|