Nginx是一個(gè)開(kāi)放源代碼的高性能HTTP和反向代理服務(wù)器,負(fù)責(zé)處理Internet上某些最大站點(diǎn)的負(fù)載。在管理NGINX網(wǎng)絡(luò)服務(wù)器時(shí),你要執(zhí)行的最常見(jiàn)任務(wù)之一就是檢查日志文件。
在對(duì)服務(wù)器或應(yīng)用程序問(wèn)題進(jìn)行故障排除時(shí),知道如何配置和讀取日志非常有用,因?yàn)樗鼈兲峁┝嗽敿?xì)的調(diào)試信息。
Nginx用兩種類型的日志記錄其事件:訪問(wèn)日志和錯(cuò)誤日志。訪問(wèn)日志記錄有關(guān)客戶端請(qǐng)求的信息,錯(cuò)誤日志記錄有關(guān)服務(wù)器和應(yīng)用程序問(wèn)題的信息。
本教程概述了如何配置和讀取Nginx訪問(wèn)和錯(cuò)誤日志。配置Nginx訪問(wèn)日志的格式與位置,配置錯(cuò)誤日志格式與位置,默認(rèn)的日志文件所在位置,讀取和理解Nginx日志文件每個(gè)字段。
配置Nginx訪問(wèn)日志
每當(dāng)處理客戶請(qǐng)求時(shí),Nginx都會(huì)在訪問(wèn)日志中生成一個(gè)新記錄。每個(gè)事件記錄都包含一個(gè)時(shí)間戳,并包含有關(guān)客戶端和所請(qǐng)求資源的各種信息。訪問(wèn)日志可以顯示訪問(wèn)者的位置,訪問(wèn)者的訪問(wèn)的頁(yè)面等。
log_format
指令允許你定義記錄日志的格式。access_log
指令啟用并設(shè)置日志文件的位置和使用的格式。
access_log
指令的最基本語(yǔ)法如下:
access_loglog_filelog_format;
其中log_file
是日志文件的完整路徑,log_format
是日志文件使用的格式??梢栽?code style="margin-right:2px;margin-left:2px;padding:2px 4px;font-size:14px;color:rgb(30,107,184);background-color:rgba(27,31,35,.05);font-family:'Operator Mono', Consolas, Monaco, Menlo, monospace;">http,server
或location
指令的上下文中啟用訪問(wèn)日志。
默認(rèn)情況下,Nginx主配置文件中的http
指令配置了全局訪問(wèn)日志格式。
http{ ... access_log/var/log/nginx/access.log; ... }
/etc/nginx/nginx.conf
為獲得更好的可維護(hù)性,建議為每個(gè)服務(wù)器設(shè)置一個(gè)單獨(dú)的訪問(wèn)日志文件。在server
指令中設(shè)置的access_log
指令將覆蓋在http
指令中設(shè)置的access_log
。
http{ ... access_log/var/log/nginx/access.log; ... server{ server_namedomain.com access_log/var/log/nginx/domain.access.log; ... } }
/etc/nginx/conf.d/domain.com.conf
如果未指定日志格式,Nginx將使用預(yù)定義的combined組合格式,如下所示:
log_formatcombined'$remote_addr-$remote_user[$time_local]' '"$request"$status$body_bytes_sent' '"$http_referer""$http_user_agent"';
要更改日志記錄格式,請(qǐng)覆蓋默認(rèn)設(shè)置或定義一個(gè)新設(shè)置。例如,定義一個(gè)名為main
的新日志記錄格式,它將用添加X-Forwarded-For
header的值來(lái)擴(kuò)展combined
格式,在http
或server
中添加以下定義指令:
log_formatcustom'$remote_addr-$remote_user[$time_local]"$request"' '$status$body_bytes_sent"$http_referer"' '"$http_user_agent""$http_x_forwarded_for"';
要使用新日志格式,請(qǐng)?jiān)谌罩疚募笾付ㄆ涿Q,如下所示:
access_log/var/log/nginx/access.logcustom;
雖然訪問(wèn)日志提供了非常有用的信息。但它會(huì)占用磁盤空間,并可能影響服務(wù)器性能。如果服務(wù)器資源不足,并且網(wǎng)站繁忙,則可能要禁用訪問(wèn)日志。為此,請(qǐng)將access_log
偽指令的值設(shè)置為off
。理論上你不會(huì)出現(xiàn)這種情況,Nginx會(huì)自動(dòng)刪除前期的日志文件:
access_log off;
配置錯(cuò)誤日志
Nginx將應(yīng)用程序和常規(guī)服務(wù)器錯(cuò)誤的消息寫(xiě)入錯(cuò)誤日志文件。如果你在Web應(yīng)用程序中遇到錯(cuò)誤,則錯(cuò)誤日志是你開(kāi)始進(jìn)行排查問(wèn)題的第一個(gè)位置。error_log
指令啟用并設(shè)置錯(cuò)誤日志的位置和嚴(yán)重性級(jí)別。它采用以下格式,可以在http
,server
或location
上下文中進(jìn)行設(shè)置:error_loglog_filelog_level
log_level
參數(shù)設(shè)置日志記錄級(jí)別。以下是按嚴(yán)重性從低到高列出的級(jí)別:-
debug
-調(diào)試消息。 -
info
-信息性消息。 -
notice
-公告。 -
warn
- 警告。 -
error
-處理請(qǐng)求時(shí)出錯(cuò)。 -
crit
-關(guān)鍵問(wèn)題。需要立即采取行動(dòng)。 -
alert
-警報(bào)。必須立即采取行動(dòng)。 -
emerg
- 緊急情況。系統(tǒng)處于無(wú)法使用的狀態(tài)。
warn
,則Nginx還將記錄error
,crit
,alert
和emerg
消息。未指定log_level
參數(shù)時(shí),默認(rèn)為error
。
默認(rèn)情況下,error_log
指令在主nginx.conf文件內(nèi)的http
指令上下文中定義:http{ ... error_log/var/log/nginx/error.log; ... } /etc/nginx/nginx.conf 與訪問(wèn)日志相同,建議為每個(gè)服務(wù)器設(shè)置一個(gè)單獨(dú)的錯(cuò)誤日志文件,該文件將覆蓋更高級(jí)別的設(shè)置如http指令上下文。 例如,要將domain.com的錯(cuò)誤日志設(shè)置為
warn
,你可以使用:http{ ... error_log/var/log/nginx/error.log; ... server{ server_namedomain.com error_log/var/log/nginx/domain.error.logwarn; ... } } 無(wú)論何時(shí)修改配置文件,都必須重新加載Nginx服務(wù),以使更改生效。
日志文件的位置
在大多數(shù)Linux發(fā)行版中,例如Ubuntu ,CentOS和Debian。默認(rèn)情況下,訪問(wèn)和錯(cuò)誤日志位于/var/log/nginx
目錄中。讀取和理解Nginx日志文件
你可以使用cat
,less
,grep
,cut
,awk
等命令打開(kāi)和解析nginx日志文件。以下是使用默認(rèn)的Nginx日志格式的訪問(wèn)日志文件的記錄:192.168.33.1--[15/Oct/201941:46+0000]"GET/HTTP/1"200396"-""Mozilla/0(X11;Linuxx86_64)AppleWebKit/536(KHTML,likeGecko)Chrome/38120Safari/536" 讓我們細(xì)分Nginx日志文件記錄的每個(gè)字段意味著什么:
-
$remote_addr
-192.168.33.1
-發(fā)出請(qǐng)求的客戶端的IP地址。 -
$remote_user
--
-HTTP身份驗(yàn)證用戶。未設(shè)置用戶名時(shí),此字段顯示-
。 -
[$time_local]
-[15/Oct/201941:46 +0000]
-
"$request"
-"GET / HTTP/1.1"
-請(qǐng)求類型,路徑和協(xié)議。 -
$status
-200
-服務(wù)器響應(yīng)代碼。 -
$body_bytes_sent
-396
-服務(wù)器響應(yīng)的大?。ㄒ宰止?jié)為單位)。 -
"$http_referer"
-"-"
-引薦網(wǎng)址。 -
"$http_user_agent"
-Mozilla/5.0 ...
-客戶端的用戶代理(網(wǎng)絡(luò)瀏覽器)。
tail
命令實(shí)時(shí)觀看日志文件記錄:tail -f access.log
審核編輯 :李倩
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
8701瀏覽量
84548 -
源代碼
+關(guān)注
關(guān)注
96文章
2942瀏覽量
66444 -
nginx
+關(guān)注
關(guān)注
0文章
139瀏覽量
12115
原文標(biāo)題:配置 Nginx 訪問(wèn)與錯(cuò)誤日志
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論