詳解Nginx服務(wù)器的nginx-http-footer-filter模塊配置
nginx-http-footer-filter想必大家都覺(jué)得很陌生,那我們就來(lái)認(rèn)識(shí)一下它吧,這是淘寶開(kāi)發(fā)的nginx模塊. 它用于nginx在響應(yīng)請(qǐng)求文件底部追加內(nèi)容. 今天抽空研究下這個(gè)插件,希望對(duì)大家有所幫助。為什么發(fā)現(xiàn)了這個(gè)插件,因?yàn)檫@幾天公司需要在所有shtml文件后面追加一個(gè)js代碼用來(lái)做統(tǒng)計(jì)(之前統(tǒng)計(jì)代碼沒(méi)加齊全),在尋求解決方法的過(guò)程中找到了它認(rèn)識(shí)了它最后喜歡上了它,你可能以為我用這個(gè)插件去實(shí)現(xiàn)了我要的功能,其實(shí)在認(rèn)識(shí)他之前我用shell腳本替換齊全了. 不過(guò)我還是決定研究測(cè)試一下nginx-http-footer-filter,或許以后的需求上能有幫助,更或許能幫上其他需要幫助的人.進(jìn)入正題吧.
1. nginx-http-footer-filter到底是做什么的?
說(shuō)白了,就是在請(qǐng)求的頁(yè)面底部插入你要插入的代碼。
2. 我們能用nginx-http-footer-filter來(lái)做什么?
1、統(tǒng)一追加js代碼用于統(tǒng)計(jì)(我是這么想的)
2、底部追加響應(yīng)這個(gè)請(qǐng)求的realsver(后端真實(shí)服務(wù)器)信息,便于系統(tǒng)管理員排查故障.
3、你管理著數(shù)量龐大的虛擬主機(jī),在所有web后面追加你的廣告代碼,黑鏈?zhǔn)裁吹模ê軣o(wú)恥)
4、舉一反三吧,自己想想能用來(lái)做什么吧.
淘寶用它來(lái)做什么?
打開(kāi)淘寶首頁(yè),查看他源代碼,拖到最下面,內(nèi)容如下:
<!--city: fuzhou--> <!--province: unknown--> <!--hostname: --> <!--hostname: home1.cn199-->
我們可以很清晰的看到,這邊有省和地區(qū)還有主機(jī)名,也就是淘寶真實(shí)服務(wù)器的主機(jī)名,處理我這個(gè)請(qǐng)求的主機(jī)名為home1.cn199, city取到了fuzhou,provinece省份沒(méi)取到,估計(jì)是它Geo的問(wèn)題
或者隨便打開(kāi)一個(gè)商品頁(yè)面, 查看源代碼,如下:
</html>
<script type="text/javascript">TShop.initFoot({});</script>
可以看到他這邊給這頁(yè)面追加了一個(gè)js代碼,淘寶開(kāi)發(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)安裝過(guò)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 測(cè)試nginx-footer效果
# cat 2252.shtml
<html>
<head>
<title>test</title>
</head>
<body>
this is webpage
</body>
</html>
訪問(wèn)站點(diǎn)test.ttlsa.com/html/2252.shtml

如圖,我們可以看到文件最底部加上了<!-- 1376063369 -->,怎么變成了時(shí)間撮了,因?yàn)槲疫@邊是ssi的語(yǔ)法,如果你不知道什么是ssi,那么請(qǐng)參考文章什么是ssi.
[warning]他僅僅是在文件的最后一行追加,而不是<body>里面.這點(diǎn)大家要注意了.[/warning]
4.3 再來(lái)測(cè)試一下css文件
# cat 2242.css # this is css file
如下是訪問(wèn)結(jié)果:
# this is css file /* host: test.ttlsa.com - 1376064324 */
看圖:

5. 我能寫(xiě)多個(gè)footer指令嗎?
不行,以下我寫(xiě)了兩個(gè)footer
location / {
footer "12312321321";
footer "<!-- $date_gmt -->";
index index.html;
}
如下測(cè)試,提示footer指令重復(fù)了
# /usr/local/nginx-1.4.1/sbin/nginx -t nginx: [emerg] "footer" directive is duplicate in /usr/local/nginx-1.4.1/conf/vhost/test.ttlsa.com.conf:13 nginx: configuration file /usr/local/nginx-1.4.1/conf/nginx.conf test failed
6. 只能用ssi變量嗎?
當(dāng)然不是,隨便你寫(xiě),可以是ssi指令,也可以是nginx變量,也可以是任何無(wú)意義的字符串
如下:
footer "12312321321"; footer "<!--12312321321-->"; footer "<!--$remote_addr-->";
比如我想知道這個(gè)頁(yè)面是哪臺(tái)web服務(wù)器處理的,那么我在底部插入主機(jī)名即可.這樣,有500錯(cuò)誤,我便可以馬上定位到具體的服務(wù)器了
footer "<!--$hostname-->";
返回結(jié)果如下:

7. 服務(wù)器返回500,404,403等錯(cuò)誤, 是否還會(huì)追加內(nèi)容到底部
會(huì),如果不追加,就無(wú)法通過(guò)返回的頁(yè)面得知哪臺(tái)web出現(xiàn)故障,這明顯就不符合作者的初衷了
配置如下:
location / {
return 500;
footer "<!--$hostname-->";
}
結(jié)果如下:

8. 模塊指令說(shuō)明:
footer模塊非常簡(jiǎn)單,就只有兩個(gè)指令,具體說(shuō)明如下
footer字符串
默認(rèn)值:
配置段: http, server, location
這個(gè)定義了將什么內(nèi)容追加到文件內(nèi)容的底部
footer_types MIME類(lèi)型
默認(rèn)值: footer_types: text/html
配置段: http, server, location
定義被追加底部文件的MIME返回類(lèi)型,默認(rèn)值是text/html
- Linux下用Nginx作Perl程序服務(wù)器及其中Perl模塊的配置
- 詳解Nginx服務(wù)器中配置Sysguard模塊預(yù)防高負(fù)載的方案
- Nginx服務(wù)器中用于生成縮略圖的模塊配置教程
- 詳解Nginx服務(wù)器中map模塊的配置與使用
- 記錄Nginx服務(wù)器的Split Clients模塊配置過(guò)程
- 詳解Nginx中的geo模塊與利用其配置負(fù)載均衡的示例
- Nginx配置srcache_nginx模塊搭配Redis建立緩存系統(tǒng)
- 詳解Nginx服務(wù)器中HTTP Headers相關(guān)的模塊配置使用
- 在Nginx中配置image filter模塊來(lái)實(shí)現(xiàn)動(dòng)態(tài)生成縮略圖
- 詳解Nginx的核心配置模塊中對(duì)于請(qǐng)求體的接受流程
- Nginx服務(wù)器中的模塊編寫(xiě)及相關(guān)內(nèi)核源碼初探
- 使用Lua編寫(xiě)Nginx服務(wù)器的認(rèn)證模塊的方法
- Nginx服務(wù)器基本的模塊配置和使用全攻略
相關(guān)文章
基于nginx反向代理獲取用戶(hù)真實(shí)Ip地址詳解
我們?cè)L問(wèn)互聯(lián)網(wǎng)上的服務(wù)時(shí),大多數(shù)時(shí)客戶(hù)端并不是直接訪問(wèn)到服務(wù)端的,而是客戶(hù)端首先請(qǐng)求到反向代理,反向代理再轉(zhuǎn)發(fā)到服務(wù)端實(shí)現(xiàn)服務(wù)訪問(wèn),這篇文章主要給大家介紹了關(guān)于如何基于nginx反向代理獲取用戶(hù)真實(shí)Ip地址的相關(guān)資料,需要的朋友可以參考下2022-03-03
詳解用ELK來(lái)分析Nginx服務(wù)器日志的方法
這篇文章主要介紹了用ELK來(lái)分析Nginx服務(wù)器日志的方法,ELK是三個(gè)開(kāi)源軟件的縮寫(xiě),分別表示Elasticsearch,Logstash,Kibana,需要的朋友可以參考下2016-03-03
Nginx禁止IP訪問(wèn)只允許域名訪問(wèn)及防盜鏈設(shè)置
我們?cè)谑褂玫臅r(shí)候會(huì)遇到很多的惡意IP攻擊,這個(gè)時(shí)候就要用到Nginx 禁止IP訪問(wèn)了,本文主要介紹了Nginx禁止IP訪問(wèn)只允許域名訪問(wèn)及Nginx防盜鏈設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
關(guān)于使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用問(wèn)題
這篇文章主要介紹了使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用,本文通過(guò)幾個(gè)問(wèn)題解析幫助大家學(xué)習(xí)Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟的相關(guān)知識(shí),需要的朋友可以參考下2021-09-09
Nginx反向代理實(shí)現(xiàn)支持長(zhǎng)連接詳解
這篇文章主要給大家介紹了關(guān)于Nginx反向代理實(shí)現(xiàn)支持長(zhǎng)連接的相關(guān)資料,文字介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-06-06
Kubernetes中Nginx配置熱加載的全過(guò)程
Nginx已經(jīng)是互聯(lián)網(wǎng)IT業(yè)界一個(gè)無(wú)敵的存在,作為反向代理、負(fù)載均衡、Web服務(wù)器等多種角色的扮演者,下面這篇文章主要給大家介紹了關(guān)于Kubernetes中Nginx配置熱加載的相關(guān)資料,需要的朋友可以參考下2022-01-01
Nginx部署https網(wǎng)站并配置地址重寫(xiě)的步驟詳解
今天小編就為大家分享一篇關(guān)于Nginx部署https網(wǎng)站并配置地址重寫(xiě)的步驟詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03

