Nginx是一款輕量級(jí)高性能服務(wù)器軟件,,雖然輕量,,但功能非常強(qiáng)大,,可用于提供WEB服務(wù),、反向代理,、負(fù)載均衡,、緩存服務(wù)、甚至可以通過(guò)添加一些模塊搭建rtmp流媒體服務(wù),。最近碰到一個(gè)客戶需求,,需要用到nginx網(wǎng)頁(yè)內(nèi)容替換模塊,以下是相關(guān)實(shí)驗(yàn)記錄,,貼出來(lái)跟大家交流,,如有不足之處請(qǐng)指出。 ngx_http_sub_module模塊是一個(gè)過(guò)濾器,,它修改網(wǎng)站響應(yīng)內(nèi)容中的字符串,。這個(gè)模塊已經(jīng)內(nèi)置在nginx中,但是默認(rèn)未安裝,,需要安裝需要加上配置參數(shù):--with-http_sub_module 如果已經(jīng)安裝nginx,只需要再添加這個(gè)模塊就可以了,。 一、安裝: nginx官網(wǎng)下載安裝包:http:///en/download.html # wget http:///download/nginx-1.11.5.tar.gz # tar -zxvf nginx-1.11.5.tar.gz # cd nginx-1.11.5 # ./configure --with-http_stub_status_module --with-http_sub_module && make && make install 二,、常用指令: 2.1 sub_filter指令: sub_filter string(原字符串) replacement(用于替換的字符串); 用于設(shè)置需要使用說(shuō)明字符串替換說(shuō)明字符串.string是要被替換的字符串,,replacement是 新的字符串,它里面可以帶變量,。 2.2 sub_filter_last_modified指令: sub_filter_last_modified on | off; 用于設(shè)置網(wǎng)頁(yè)內(nèi)替換后是否修改 可在nginx.conf的 http, server, location三個(gè)位置配置使 用,,默認(rèn)值是off; 2.3 sub_filter_once指令:sub_filter_once on | off; 用于設(shè)置字符串替換次數(shù),,默認(rèn)只替換一次,。如果是on,默認(rèn)只替換第一次匹配到的到字 符,,如果是off,,那么所有匹配到的字符都會(huì)被替換; 2.4 sub_filter_types指令:sub_filter_types * 用于指定需要被替換的MIME類型,默認(rèn)為“text/html”,,如果制定為*,,那么所有的; 說(shuō)明:以上指令可在nginx.conf的http, server, location三個(gè)位置配置使用,; 三,、反向代理動(dòng)態(tài)替換網(wǎng)頁(yè)內(nèi)容實(shí)例參考: upstream www. { server 118.184.180.46:80; } #反向代理,如果有多個(gè)服務(wù)端ip,,還可以添加負(fù)載均衡方式,,權(quán)重等策略# server { listen 80; #監(jiān)聽(tīng)端口# server_name www.; #設(shè)置server name# charset utf-8; #設(shè)置字符編碼為utf-8,可根據(jù)實(shí)際情況調(diào)整# location / { proxy_pass http://www.$request_uri; #反向代理規(guī)則# proxy_set_header Accept-Encoding deflate; #設(shè)置反向代理頭部,有時(shí)候源站響應(yīng)的是gzip格式,,替換的時(shí)候會(huì)有問(wèn)題,,可通過(guò)此項(xiàng)解決# subs_filter '183.251.160.127' '123.181.128.17'; #替換指定ip,此處將183.251.160.127替換成123.181.128.17# subs_filter '福建省龍巖市 移動(dòng)' '河北省唐山市 電信'; #替換城市,、運(yùn)營(yíng)商信息,,nginx此替換模塊支持中文替換# subs_filter_types text/html; #指定被替換的MIME類型# sub_filter_once on; #指定字符串替換次數(shù),,on表示只替換第一次匹配到的字符,off表示替換所有匹配到的字符# } } 說(shuō)明: 1,、此模塊替換不區(qū)分大小寫(xiě); 2,、支持中文替換,; Nginx.conf 完整配置:
實(shí)驗(yàn)效果截圖:
結(jié)束語(yǔ): 另外一個(gè)類似的內(nèi)容替換模塊nginx_substitutions_filter,有興趣的可以做下實(shí)驗(yàn)玩玩,。 |
|
來(lái)自: waitingnothing > 《Nginx》