Nginx是一款輕量級高性能服務器軟件,雖然輕量,但功能很是強大,可用於提供WEB服務、反向代理、負載均衡、緩存服務、甚至能夠經過添加一些模塊搭建rtmp流媒體服務。最近碰到一個客戶需求,須要用到nginx網頁內容替換模塊,如下是相關實驗記錄,貼出來跟你們交流,若有不足之處請指出。html
ngx_http_sub_module模塊是一個過濾器,它修改網站響應內容中的字符串。這個模塊已經內置在nginx中,可是默認未安裝,須要安裝須要加上配置參數:--with-http_sub_module 若是已經安裝nginx,只須要再添加這個模塊就能夠了。nginx
1、安裝:緩存
nginx官網下載安裝包:http://nginx.org/en/download.html服務器
# wget http://nginx.org/download/nginx-1.11.5.tar.gz負載均衡
# tar -zxvf nginx-1.11.5.tar.gzpost
# cd nginx-1.11.5性能
# ./configure --with-http_stub_status_module --with-http_sub_module && make && make install網站
2、經常使用指令:編碼
2.1 sub_filter指令: sub_filter string(原字符串) replacement(用於替換的字符串);spa
用於設置須要使用說明字符串替換說明字符串.string是要被替換的字符串,replacement是 新的字符串,它裏面能夠帶變量。
2.2 sub_filter_last_modified指令: sub_filter_last_modified on | off;
用於設置網頁內替換後是否修改 可在nginx.conf的 http, server, location三個位置配置使 用,默認值是off;
2.3 sub_filter_once指令:sub_filter_once on | off;
用於設置字符串替換次數,默認只替換一次。若是是on,默認只替換第一次匹配到的到字 符,若是是off,那麼全部匹配到的字符都會被替換;
2.4 sub_filter_types指令:sub_filter_types *
用於指定須要被替換的MIME類型,默認爲「text/html」,若是制定爲*,那麼全部的;
說明:以上指令可在nginx.conf的http, server, location三個位置配置使用;
3、反向代理動態替換網頁內容實例參考:
upstream www.iptest.cn {
server 118.184.180.46:80;
}
#反向代理,若是有多個服務端ip,還能夠添加負載均衡方式,權重等策略#
server {
listen 80;
#監聽端口#
server_name www.iptest.cn;
#設置server name#
charset utf-8;
#設置字符編碼爲utf-8,可根據實際狀況調整#
location / {
proxy_pass http://www.iptest.cn$request_uri;
#反向代理規則#
proxy_set_header Accept-Encoding deflate;
#設置反向代理頭部,有時候源站響應的是gzip格式,替換的時候會有問題,可經過此項解決#
subs_filter '183.251.160.127' '123.181.128.17';
#替換指定ip,此處將183.251.160.127替換成123.181.128.17#
subs_filter '福建省龍巖市 移動' '河北省唐山市 電信';
#替換城市、運營商信息,nginx此替換模塊支持中文替換#
subs_filter_types text/html;
#指定被替換的MIME類型#
sub_filter_once on;
#指定字符串替換次數,on表示只替換第一次匹配到的字符,off表示替換全部匹配到的字符#
}
}
說明:
一、此模塊替換不區分大小寫;
二、支持中文替換;
Nginx.conf 完整配置:
實驗效果截圖:
結束語:
另一個相似的內容替換模塊nginx_substitutions_filter,有興趣的能夠作下實驗玩玩。