1、日誌分類
Nginx日誌主要分爲兩種訪問日誌和錯誤日誌。日誌開關在Nginx配置文件/etc/nginx/nginx.conf中設置兩種日誌均可以選擇性關閉默認都是打開的。
一、訪問日誌
訪問日誌主要記錄客戶端訪問Nginx的每個請求格式能夠自定義。經過訪問日誌你能夠獲得用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關信息。Nginx中訪問日誌相關指令主要有兩條
1log_format
log_format用來設置日誌格式也就是日誌文件中每條日誌的格式具體以下
log_format name(格式名稱) type(格式樣式)
舉例說明以下
log_format main '$server_name $remote_addr - $remote_user [$time_local] "$request" '
'$status $uptream_status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time';
上面紅色部分爲Nginx默認指定的格式樣式每一個樣式的含義以下
$server_name虛擬主機名稱。
$remote_addr遠程客戶端的IP地址。
-空白用一個「-」佔位符替代歷史緣由致使還存在。
$remote_user遠程客戶端用戶名稱用於記錄瀏覽者進行身份驗證時提供的名字如登陸百度的用戶名scq2099yt若是沒有登陸就是空白。
[$time_local]訪問的時間與時區好比18/Jul/2012:17:00:01 +0800時間信息最後的"+0800"表示服務器所處時區位於UTC以後的8小時。
$request請求的URI和HTTP協議這是整個PV日誌記錄中最有用的信息記錄服務器收到一個什麼樣的請求
$status記錄請求返回的http狀態碼好比成功是200。
$uptream_statusupstream狀態好比成功是200.
$body_bytes_sent發送給客戶端的文件主體內容的大小好比899能夠將日誌每條記錄中的這個值累加起來以粗略估計服務器吞吐量。
$http_referer記錄從哪一個頁面連接訪問過來的。
$http_user_agent客戶端瀏覽器信息
$http_x_forwarded_for客戶端的真實ip一般web服務器放在反向代理的後面這樣就不能獲取到客戶的IP地址了經過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中能夠增長x_forwarded_for信息用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。
$ssl_protocolSSL協議版本好比TLSv1。
$ssl_cipher交換數據中的算法好比RC4-SHA。
$upstream_addrupstream的地址即真正提供服務的主機地址。
$request_time整個請求的總時間。
$upstream_response_time請求過程當中upstream的響應時間。
訪問日誌中一個典型的記錄以下
192.168.1.102 - scq2099yt [18/Mar/2013:23:30:42 +0800] "GET /stats/awstats.pl?config=scq2099yt HTTP/1.1" 200 899 "http://192.168.1.1/pv/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows XXX; Maxthon)"
須要注意的是log_format配置必須放在http內不然會出現以下警告信息
nginx: [warn] the "log_format" directive may be used only on "http" level in /etc/nginx/nginx.conf:97
2access_log
access_log指令用來指定日誌文件的存放路徑包含日誌文件名、格式和緩存大小具體以下
access_log path(存放路徑) [format(自定義日誌格式名稱) [buffer=size | off]]
舉例說明以下
access_log logs/access.log main;
若是想關閉日誌能夠以下
access_log off;
可以使用access_log指令的字段包括http、server、location。
須要注意的是Nginx進程設置的用戶和組必須對日誌路徑有建立文件的權限不然會報錯。
小技巧若是須要在access_log中記錄post請求的參數能夠參考這裏。
Nginx支持爲每一個location指定強大的日誌記錄。一樣的鏈接能夠在同一時間輸出到不止一個的日誌中更多信息請查看這裏這裏還有這裏。
二、錯誤日誌
錯誤日誌主要記錄客戶端訪問Nginx出錯時的日誌格式不支持自定義。經過錯誤日誌你能夠獲得系統某個服務或server的性能瓶頸等。所以將日誌好好利用你能夠獲得不少有價值的信息。錯誤日誌由指令error_log來指定具體格式以下
error_log path(存放路徑) level(日誌等級)
path含義同access_loglevel表示日誌等級具體以下
[ debug | info | notice | warn | error | crit ]
從左至右日誌詳細程度逐級遞減即debug最詳細crit最少。
舉例說明以下
error_log logs/error.log info;
須要注意的是error_log off並不能關閉錯誤日誌而是會將錯誤日誌記錄到一個文件名爲off的文件中。
正確的關閉錯誤日誌記錄功能的方法以下
error_log /dev/null;
上面表示將存儲日誌的路徑設置爲「垃圾桶」。html