Nginx記錄分析響應(yīng)慢的請求及替換網(wǎng)站響應(yīng)內(nèi)容的配置
nginx記錄分析網(wǎng)站響應(yīng)慢的請求(ngx_http_log_request_speed)
nginx模塊ngx_http_log_request_speed可以用來找出網(wǎng)站哪些請求很慢,針對站點很多,文件以及請求很多想找出哪些請求比較慢的話,這個插件非常有效.作者的初衷是寫給自己用的,用來找出站點中處理時間較長的請求, 這些請求是造成服務(wù)器高負(fù)載的很大根源. 日志記錄之后,在使用perl腳本分析日志,即可知道哪些請求需要修正.
1. 模塊安裝
nginx第三方模塊安裝方法這里就一筆略過了。
配置參數(shù)
./configure --prefix=/usr/local/nginx-1.4.1 --with-http_stub_status_module \ --add-module=../ngx_http_log_request_speed
2. 指令log_request_speed
2.1 log_request_speed_filter
語法:
log_request_speed_filter [on|off]
配置段: n/a
context: location, server, http
啟動或禁用模塊
2.2 log_request_speed_filter_timeout
語法:
log_request_speed_filter_timeout [num sec]
默認(rèn): 5秒
配置段: location, server, http
這邊并不是真正意義的超時,而是說當(dāng)請求超過這邊給定的時間,將會記錄到nginx錯誤日志中. 默認(rèn)值是5000微秒(5秒),如果一個請求小于5秒,這個請求不會被記錄到日志中,但是如果超過5秒,那請求將會被記錄到nginx的錯誤日志中
3. 使用實例
3.1 nginx配置
http{
log_request_speed_filter on;
log_request_speed_filter_timeout 3;
...
}
錯誤日志中記錄的慢請求如下

3.2 日志分析
cd /usr/local/nginx-1.4.1/logs wget http://wiki.nginx.org/images/a/a8/Log_Analyzer.tar.gz tar -xzvf Log_Analyzer.tar.gz cd request_speed_log_analyzer # cat ../error.log | grep 'process request'| ./analyzer.pl -r
POST /wp-admin/admin-ajax.php HTTP/1.1 --- avg ms: 1182, value count: 2 GET /shmb/1145.html HTTP/1.1 --- avg ms: 2976, value count: 1 <--- THE WINNER
從日志中,我們發(fā)現(xiàn)這邊有2條請求比較慢,最慢的是/shmb/1145.html ,而且還標(biāo)示“THE WINNER”,作者你贏了。很幽默。
3.3 分析腳本語法
# ./analyzer.pl -h
- -h : this help message # 顯示幫助信息
- -u : group by upstream # 按upstream分組
- -o : group by host # 按主機(jī)分組
- -r : group by request # 按請求分組,推薦這個
4. nginx測試版本
目前作者只在0.6.35和0.7.64下測試,不保證其他環(huán)境下可以使用。我當(dāng)前的測試版本是1.4.1,目前使用正常,在使用前請大家先測試一下。
nginx替換網(wǎng)站響應(yīng)內(nèi)容(ngx_http_sub_module)
ngx_http_sub_module模塊是一個過濾器,它修改網(wǎng)站響應(yīng)內(nèi)容中的字符串,比如你想把響應(yīng)內(nèi)容中的‘jb51'全部替換成‘腳本之家',這個模塊已經(jīng)內(nèi)置在nginx中,但是默認(rèn)未安裝,需要安裝需要加上配置參數(shù):--with-http_sub_module
1.指令(Directives)
語法:
sub_filter string replacement;
默認(rèn)值: —
配置段: http, server, location
設(shè)置需要使用說明字符串替換說明字符串.string是要被替換的字符串,replacement是新的字符串,它里面可以帶變量。
語法:
sub_filter_last_modified on | off;
默認(rèn)值: sub_filter_last_modified off;
配置段: http, server, location
這個指令在nginx 1.5.1中添加,我這個版本沒有,可以忽略掉.
Allows preserving the “Last-Modified” header field from the original response during replacement to facilitate response caching.
By default, the header field is removed as contents of the response are modified during processing.
語法:
sub_filter_once on | off;
默認(rèn)值: sub_filter_once on;
配置段: http, server, location
字符串替換一次還是多次替換,默認(rèn)替換一次,例如你要替換響應(yīng)內(nèi)容中的jb51為腳本之家,如果有多個jb51出現(xiàn),那么只會替換第一個,如果off,那么所有的jb51都會 被替換
語法:
sub_filter_types mime-type ...;
默認(rèn)值: sub_filter_types text/html;
配置段: http, server, location
指定需要被替換的MIME類型,默認(rèn)為“text/html”,如果制定為*,那么所有的
2. nginx替換字符串實例
2.1 配置
server {
listen 80;
server_name www.fzitv.net;
root /data/site/www.fzitv.net;
location / {
sub_filter jb51 '腳本之家';
sub_filter_types text/html;
sub_filter_once on;
}
}
2.2 測試
內(nèi)容如下
# cat /data/site/www.fzitv.net/2013/10/20131001_sub1.html
welcome to jb51! jb51 TEAM!
訪問結(jié)果
# curl www.fzitv.net/2013/10/20131001_sub1.html
welcome to 腳本之家! jb51 TEAM!
我們可以看到它替換是不區(qū)分大小寫的,而且jb51只被替換了一次。我把sub_filter_once on改成off試試。
location / {
sub_filter jb51 '腳本之家';
sub_filter_once off;
}
接著測試
# curl www.fzitv.net/2013/10/20131001_sub1.html
welcome to 腳本之家! 腳本之家 TEAM!
我們可以看到j(luò)b51都被替換掉了.
例如你想在</head>后追加一段js,配置如下:
location / {
sub_filter </head> '</head><script language="javascript" src="$script"></script>';
sub_filter_once on;
}
這邊我就不再做測試了,大家可以測試一下.
相關(guān)文章
Nginx服務(wù)器中配置404錯誤頁面時一些值得注意的地方
這篇文章主要介紹了Nginx服務(wù)器中配置404錯誤頁面時一些值得注意的地方,包括隱藏Nginx出錯頁面及Header上的版本號的安全方法,需要的朋友可以參考下2016-01-01
nginx中$host、$http_host和$proxy_host區(qū)別小結(jié)
本文主要介紹了nginx中$host、$http_host和$proxy_host區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09
利用nginx與ffmpeg搭建流媒體服務(wù)器過程詳解
這篇文章主要給大家介紹了利用nginx與ffmpeg搭建流媒體服務(wù)器的全過程,文中介紹的很詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03
詳解nginx服務(wù)器http重定向到https的正確寫法
本篇文章主要介紹了nginx服務(wù)器http重定向到https的正確寫法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
nginx+apache+mysql+php+memcached+squid搭建集群web環(huán)境
當(dāng)前,LAMP開發(fā)模式是WEB開發(fā)的首選,如何搭建一個高效、可靠、穩(wěn)定的WEB服務(wù)器一直是個熱門主題,本文就是這個主題的一次嘗試。2011-03-03
nginx的keepalive相關(guān)參數(shù)使用源碼解讀
這篇文章主要為大家介紹了nginx的keepalive相關(guān)參數(shù)使用源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12

