nginx統計訪問數
1. nginx 查看每秒有多少訪問量
nginx訪問量統計
1.根據訪問IP統計UV
awk '{print $1}' access.log|sort | uniq -c |wc -l
2.統計訪問URL統計PV
awk '{print $7}' access.log|wc -l
3.查詢訪問最頻繁的URL
awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more
4.查詢訪問最頻繁的IP
awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more
5.根據時間段統計查看日誌
cat access.log| sed -n '/14\/Mar\/2015:21/,/14\/Mar\/2015:22/p'|more
2. 如何統計nginx訪問量
1.根據訪問IP統計UV
awk '{print $1}' access.log|sort | uniq -c |wc -l
2.統計訪問URL統計PV
awk '{print $7}' access.log|wc -l
3.查詢訪問最頻繁的URL
awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more
4.查詢訪問最頻繁的IP
awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more
5.根據時間段統計查看日誌
cat access.log| sed -n '/14/Mar/2015:21/,/14/Mar/2015:22/p'|more
3. nginx 限制ip請求某個url的頻率
問題描述:
今天在統計nginx日誌中,url訪問頻率的時候,發現一個介面訪問次數遠遠大於其他的url。於是用tail -f查看實時日誌,發現有個ip以每秒3-4次請求這個url。詢問開發後,得知是第三方調用的,頻率有點高,需要限制一下。
解決:
在nginx的http模塊中添加以下配置
rate=1r/s 的意思是每個地址每秒只能請求一次
在server模塊中添加一下配置
burst是指一共有5個令牌,發完後,只能根據rate的設定每秒新增一個
reload nginx的配置之後,再次查看日誌。可以看到訪問頻率明顯降下來了
4. 【ngin】nginx 查看並發連接數的兩種方法
生產環境中越來越多的項目使用 nginx 作為反向代理,我們需要關注 nginx 狀態,比如查看 nginx 當前並發連接數,確保正常運行。
這篇文章分享下查看 nxginx 並發連接數的兩種方法。
此方法需要依賴於 nginx 的 http_stub_status_mole 模塊,可輸入 nginx -V 查看是否已經安裝此模塊,如果沒有安裝需要重新編譯該模塊。
在您的任意一個 server 段內,添加如下配置:
##########################################
location /status {
stub_status on;
}
###########################################
配置修改完畢後輸入命令:nginx -t 確保語法沒有問題,並重載一次 nginx 配置 nginx -s reload,使其生效。
再訪問 http://youdomain.com/status 就可以看到連接數狀態了,如下截圖:
注意:狀態配置只能是針對某個 nginx 服務,目前 nginx 還無法做到針對單個站點進行監控。
參數解釋:
Active connections:當前 Nginx 正處理的活動連接數(1186),也就是當前的並發連接數
server accepts handled requests:總共處理了420484個連接,成功創建420484次握手,總共處理了408348個請求
Reading:nginx 讀取到客戶端的 Header 信息數
Writing:nginx 返回給客戶端的 Header 信息數
Waiting:開啟 keep-alive 的情況下,這個值等於active-(reading+writing),意思就是Nginx已經處理完正在等候下一次請求指令的駐留連接
如果您只是想單純的查看nginx 當前並發連接數,不需要更詳細的信息,直接使用下面的命令 (netstat -apn|grep 'nginx: worker'|wc -l) 即可。
# netstat -apn|grep 'nginx: worker' | wc -l
# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
# ss -s
Nginx幾個常用模塊及使用方法示例
https://www.moewah.com/archives/388.html
Nginx 查看並發連接數的兩種方法
https://www.moewah.com/archives/2186.html
5. 如何用nginx實時監控介面訪問流量
ngx_req_status用來展示nginx請求狀態信息,類似於apache的status,nginx自帶的模塊只能顯示連接數等等信息,我們並不能知道到底有哪些請求、以及各url域名所消耗的帶寬是多少。ngx_req_status提供了這些功能.
功能特性
按域名、url、ip等等統計信息
統計總流量
統計當前帶寬峰值帶寬
統計總請求數量
1.安裝
#cd/usr/local/src/
#wget"http://nginx.org/download/nginx-1.4.2.tar.gz"
#tar-xzvfnginx-1.4.2.tar.gz
#wgethttps://github.com/zls0424/ngx_req_status/archive/master.zip-Ongx_req_status.zip
#unzipngx_req_status.zip
#cdnginx-1.4.2/
#patch-p1<../ngx_req_status-master/write_filter.patch
#./configure--prefix=/usr/local/nginx-1.4.2--add-mole=../ngx_req_status-master
#make-j2
#makeinstall
2.配置
http{
req_status_zoneserver_name$server_name256k;
req_status_zoneserver_addr$server_addr256k;
req_status_zoneserver_url$server_name$uri256k;
req_statusserver_nameserver_addrserver_url;
server{
server_nametest.ttlsa.com;
location/ttlsa-req-status{
req_status_showon;
}
}
}
3.指令
req_status_zone
語法:req_status_zonenamestringsize
默認值:None
配置塊:http
定義請求狀態ZONE,請求按照string分組來排列,例如:
req_status_zoneserver_url$server_name$uri256k;
域名+uri將會形成一條數據,可以看到所有url的帶寬,流量,訪問數
req_status
語法:req_statuszone1[zone2]
默認值:None
配置塊:http,server,location
在location中啟用請求狀態,你可以指定更多zones。
req_status_show
語法:req_status_showon
默認值:None
配置塊:location
展示數據
6. nginx怎麼限制客戶端訪問頻次與訪問次數
nginx常用的方式為反向代理轉發,就是根據域名,將訪問指向某個埠號,如tomcat的8080埠。
7. nginx怎麼限制客戶端訪問頻次與訪問次數
如何設置能限制某個IP某一時間段的訪問次數是一個讓人頭疼的問題,特別面對惡意的ddos攻擊的時候。其中CC攻擊(Challenge Collapsar)是DDOS(分布式拒絕服務)的一種,也是一種常見的網站攻擊方法,攻擊者通過代理伺服器或者肉雞向向受害主機不停地發大量數據包,造成對方伺服器資源耗盡,一直到宕機崩潰。
cc攻擊一般就是使用有限的ip數對伺服器頻繁發送數據來達到攻擊的目的,nginx可以通過HttpLimitReqMol和HttpLimitZoneMole配置來限制ip在同一時間段的訪問次數來防cc攻擊。
HttpLimitReqMol用來限制連單位時間內連接數的模塊,使用limit_req_zone和limit_req指令配合使用來達到限制。一旦並發連接超過指定數量,就會返回503錯誤。
HttpLimitConnMol用來限制單個ip的並發連接數,使用limit_zone和limit_conn指令
這兩個模塊的區別前一個是對一段時間內的連接數限制,後者是對同一時刻的連接數限制
文章目錄
1 HttpLimitReqMol 限制某一段時間內同一ip訪問數實例
2 HttpLimitZoneMole 限制並發連接數實例
3 nginx白名單設置
HttpLimitReqMol 限制某一段時間內同一ip訪問數實例
http{
...
#定義一個名為allips的limit_req_zone用來存儲session,大小是10M內存,
#以$binary_remote_addr 為key,限制平均每秒的請求為20個,
#1M能存儲16000個狀態,rete的值必須為整數,
#如果限制兩秒鍾一個請求,可以設置成30r/m
limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
...
server{
...
location {
...
#限制每ip每秒不超過20個請求,漏桶數burst為5
#brust的意思就是,如果第1秒、2,3,4秒請求為19個,
#第5秒的請求為25個是被允許的。
#但是如果你第1秒就25個請求,第2秒超過20的請求返回503錯誤。
#nodelay,如果不設置該選項,嚴格使用平均速率限制請求數,
#第1秒25個請求時,5個請求放到第2秒執行,
#設置nodelay,25個請求將在第1秒執行。
limit_req zone=allips burst=5 nodelay;
...
}
...
}
...
}
8. nginx日誌,統計不同ip的訪問,按訪問量排列,用一條linux命令怎麼寫
cataccess.log|egrep-o"([0-9]{1,3}.){3}[0-9]{1,3}"|sort-nr|uniq-c|sort-nr