Nginx-Http-Footer-Filter想必大家都覺得很陌生,那我們就來認(rèn)識(shí)一下它吧,這是淘寶開發(fā)的Nginx模塊. 它用于nginx在響應(yīng)請求文件底部追加內(nèi)容. 今天抽空研究下這個(gè)插件,希望對(duì)大家有所幫助。為什么發(fā)現(xiàn)了這個(gè)插件,因?yàn)檫@幾天公司需要在所有shtml文件后面追加一個(gè)js代碼用來做統(tǒng)計(jì)(之前統(tǒng)計(jì) 代碼沒加齊全),在尋求解決方法的過程中找到了它認(rèn)識(shí)了它最后喜歡上了它,你可能以為我用這個(gè)插件去實(shí)現(xiàn)了我要的功能,其實(shí)在認(rèn)識(shí)他之前我用shell腳 本替換齊全了. 不過我還是決定研究測試一下Nginx-Http-Footer-Filter,或許以后的需求上能有幫助,更或許能幫上其他需要幫助的人.進(jìn)入正題吧.
1. Nginx-Http-Footer-Filter到底是做什么的?
說白了,就是在請求的頁面底部插入你要插入的代碼。
2. 我們能用Nginx-Http-Footer-Filter來做什么?
1、統(tǒng)一追加js代碼用于統(tǒng)計(jì)(我是這么想的)
2、底部追加響應(yīng)這個(gè)請求的realsver(后端真實(shí)服務(wù)器)信息,便于系統(tǒng)管理員排查故障.
3、你管理著數(shù)量龐大的虛擬主機(jī),在所有web后面追加你的廣告代碼,黑鏈?zhǔn)裁吹模ê軣o恥)
4、舉一反三吧,自己想想能用來做什么吧. 淘寶用它來做什么? 打開淘寶首頁,查看他源代碼,拖到最下面,內(nèi)容如下: - <!--city: fuzhou-->
- <!--province: unknown-->
- <!--hostname: -->
- <!--hostname: home1.cn199-->
我們可以很清晰的看到,這邊有省和地區(qū)還有主機(jī)名,也就是淘寶真實(shí)服務(wù)器的主機(jī)名,處理我這個(gè)請求的主機(jī)名為home1.cn199, city取到了fuzhou,provinece省份沒取到,估計(jì)是它Geo的問題 或者隨便打開一個(gè)商品頁面, 查看源代碼,如下: - </html>
- <script type="text/javascript">TShop.initFoot({});</script>
可以看到他這邊給這頁面追加了一個(gè)js代碼,淘寶開發(fā)這個(gè)模塊的用意想必大家都明白了,集思廣益,或許大家還有更好的用處.
3. 怎么安裝Nginx-Http-Footer-Filter
3.1 下載地址:
https://github.com/alibaba/Nginx-Http-Footer-Filter/tree/1.2.2
3.2 安裝Nginx-Footer模塊
之前已經(jīng)安裝過Nginx,所以我選擇覆蓋Nginx文件。 - # cd /usr/local/src/
- # wget https://codeload.github.com/alibaba/Nginx-Http-Footer-Filter/zip/1.2.2
- # unzip 1.2.2
-
- # http://nginx.org/download/nginx-1.4.1.tar.gz
- # tar -xzvf nginx-1.4.1.tar.gz
- # cd nginx-1.4.1
- # ./configure --prefix=/usr/local/nginx-1.4.1 \
- --with-http_stub_status_module --with-http_realip_module \
- --add-module=../Nginx-Http-Footer-Filter-1.2.2
- # make
- # mv /usr/local/nginx-1.4.1/sbin/nginx /usr/local/nginx-1.4.1/sbin/old_nginx
- # mv objs/nginx /usr/local/nginx-1.4.1/sbin/
- # /usr/local/nginx-1.4.1/sbin/nginx -s stop
- # /usr/local/nginx-1.4.1/sbin/nginx
3.3 驗(yàn)證模塊是否安裝成功 - # /usr/local/nginx-1.4.1/sbin/nginx -V
- nginx version: nginx/1.4.1
- built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
- TLS SNI support enabled
- configure arguments: --prefix=/usr/local/nginx-1.4.1
- --with-http_stub_status_module
- --with-http_realip_module
- --add-module=../Nginx-Http-Footer-Filter-1.2.2
4. 怎么使用Nginx-Http-Footer-Filter模塊
4.1 配置location
在location中使用footer "你的內(nèi)容" 即可.看如下配置 - server {
- listen 173.255.219.122:80;
- server_name test.ttlsa.com;
- access_log /data/logs/nginx/test.ttlsa.com.access.log main;
-
- index index.html index.php index.html;
- root /data/site/test.ttlsa.com;
- location / {
- footer "<!-- $date_gmt -->";
- index index.html;
- }
-
- location =/html/2252.css {
- footer_types text/css;
- footer "/* host: $server_name - $date_local */";
- }
4.2 測試Nginx-Footer效果 - # cat 2252.shtml
- <html>
- <head>
- <title>test</title>
- </head>
- <body>
- this is webpage
- </body>
- </html>
訪問站點(diǎn)test.ttlsa.com/html/2252.shtml
nginx追加底部代碼
如圖,我們可以看到文件最底部加上了<!-- 1376063369 -->,怎么變成了時(shí)間撮了,因?yàn)槲疫@邊是ssi的語法,如果你不知道什么是ssi,那么請參考文章什么是ssi.
他僅僅是在文件的最后一行追加,而不是<body>里面.這點(diǎn)大家要注意了.
4.3 再來測試一下css文件- # cat 2242.css
- # this is css file
如下是訪問結(jié)果: - # this is css file
- /* host: test.ttlsa.com - 1376064324 */
看圖:
nginx footer追加底部代碼css
|