nginx日志主要有兩種:訪問日志和錯(cuò)誤日志。訪問日志主要記錄客戶端訪問nginx的每一個(gè)請(qǐng)求,格式可以自定義;錯(cuò)誤日志主要記錄客戶端訪問nginx出錯(cuò)時(shí)的日志,格式不支持自定義。兩種日志都可以選擇性關(guān)閉。
通過訪問日志,你可以得到用戶地域來源、跳轉(zhuǎn)來源、使用終端、某個(gè)URL訪問量等相關(guān)信息;通過錯(cuò)誤日志,你可以得到系統(tǒng)某個(gè)服務(wù)或server的性能瓶頸等。因此,將日志好好利用,你可以得到很多有價(jià)值的信息。
訪問日志
[Access.log]
log_format??main??'$remote_addr?$remote_user?[$time_local]?"$request"?$http_host?' ??????????????????'$status?$upstream_status?$body_bytes_sent?"$http_referer"?' ??????????????????'"$http_user_agent"?$ssl_protocol?$ssl_cipher?$upstream_addr?' ??????????????????'$request_time?$upstream_response_time';
說明:
變量名稱 |
變量描述 |
舉例說明 |
$remote_addr |
客戶端地址 |
113.140.15.90 |
$remote_user |
客戶端用戶名稱 |
– |
$time_local |
訪問時(shí)間和時(shí)區(qū) |
18/Jul/2012:17:00:01 +0800 |
$request |
請(qǐng)求的URI和HTTP協(xié)議 |
“GET /pa/img/home/logo-alipay-t.png HTTP/1.1” |
$http_host |
請(qǐng)求地址,即瀏覽器中你輸入的地址(IP或域名) |
img.alipay.com 10.253.70.103 |
$status |
HTTP請(qǐng)求狀態(tài) |
200 |
$upstream_status |
upstream狀態(tài) |
200 |
$body_bytes_sent |
發(fā)送給客戶端文件內(nèi)容大小 |
547 |
$http_referer |
跳轉(zhuǎn)來源 |
?“https://cashier.alipay.com…/” |
$http_user_agent |
用戶終端代理 |
“Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C; |
$ssl_protocol |
SSL協(xié)議版本 |
TLSv1 |
$ssl_cipher |
交換數(shù)據(jù)中的算法 |
RC4-SHA |
$upstream_addr |
后臺(tái)upstream的地址,即真正提供服務(wù)的主機(jī)地址 |
10.228.35.247:80 |
$request_time |
整個(gè)請(qǐng)求的總時(shí)間 |
0.205 |
$upstream_response_time |
請(qǐng)求過程中,upstream響應(yīng)時(shí)間 |
0.002 |
?備注:$http_host的值和你在瀏覽器里輸入的值有關(guān)。
錯(cuò)誤日志
錯(cuò)誤信息 |
錯(cuò)誤說明 |
---|---|
“upstream prematurely(過早的)?closed connection” |
請(qǐng)求uri的時(shí)候出現(xiàn)的異常,是由于upstream還未返回應(yīng)答給用戶時(shí)用戶斷掉連接造成的,對(duì)系統(tǒng)沒有影響,可以忽略 |
“recv() failed (104: Connection reset by peer)” |
(1)服務(wù)器的并發(fā)連接數(shù)超過了其承載量,服務(wù)器會(huì)將其中一些連接Down掉;? (2)客戶關(guān)掉了瀏覽器,而服務(wù)器還在給客戶端發(fā)送數(shù)據(jù);? (3)瀏覽器端按了Stop |
“(111: Connection refused) while connecting to upstream” |
用戶在連接時(shí),若遇到后端upstream掛掉或者不通,會(huì)收到該錯(cuò)誤 |
“(111: Connection refused) while reading response header from upstream” |
用戶在連接成功后讀取數(shù)據(jù)時(shí),若遇到后端upstream掛掉或者不通,會(huì)收到該錯(cuò)誤 |
“(111: Connection refused) while sending request to upstream” |
Nginx和upstream連接成功后發(fā)送數(shù)據(jù)時(shí),若遇到后端upstream掛掉或者不通,會(huì)收到該錯(cuò)誤 |
“(110: Connection timed out) while connecting to upstream” |
nginx連接后面的upstream時(shí)超時(shí) |
“(110: Connection timed out) while reading upstream” |
nginx讀取來自upstream的響應(yīng)時(shí)超時(shí) ? |
“(110: Connection timed out) while reading response header from upstream” |
nginx讀取來自upstream的響應(yīng)頭時(shí)超時(shí) |
“(110: Connection timed out) while reading upstream” |
nginx讀取來自upstream的響應(yīng)時(shí)超時(shí) |
“(104: Connection reset by peer) while connecting to upstream” |
upstream發(fā)送了RST,將連接重置 |
“upstream sent invalid header while reading response header from upstream” |
upstream發(fā)送的響應(yīng)頭無效 |
“upstream sent no valid HTTP/1.0 header while reading response header from upstream” |
upstream發(fā)送的響應(yīng)頭無效 |
“client intended to send too large body” |
用于設(shè)置允許接受的客戶端請(qǐng)求內(nèi)容的最大值,默認(rèn)值是1M,client發(fā)送的body超過了設(shè)置值 |
“reopening logs” |
用戶發(fā)送kill??-USR1命令 |
“gracefully shutting down”, |
用戶發(fā)送kill??-WINCH命令 |
“no servers are inside upstream” |
upstream下未配置server |
“no live upstreams while connecting to upstream” |
upstream下的server全都掛了 |
“SSL_do_handshake() failed” |
SSL握手失敗 |
“SSL_write() failed (SSL:) while sending to client” |
? |
“(13: Permission denied) while reading upstream” |
? |
“(98: Address already in use) while connecting to upstream” |
? |
“(99: Cannot assign requested address) while connecting to upstream” |
? |
“ngx_slab_alloc() failed: no memory in SSL session shared cache” |
ssl_session_cache大小不夠等原因造成 |
“could not add new SSL session to the session cache while SSL handshaking” |
ssl_session_cache大小不夠等原因造成 |
“send() failed (111: Connection refused)” |
? ? |