Nginx日志管理
1. 日志類型
Nginx 主要支持兩種類型的日志:
2. 配置日志位置
默認(rèn)情況下,Nginx 的日志文件通常位于 /var/log/nginx/
目錄下,但你可以在配置文件中自定義日志的位置和格式。
全局配置:在 http
或 main
塊中設(shè)置全局的日志路徑:
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
虛擬主機(jī)配置:你也可以在每個(gè) server
塊中為不同的虛擬主機(jī)指定單獨(dú)的日志文件:
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
3. 日志格式
你可以自定義訪問日志的格式,以包含更多或更少的信息。常用的日志格式定義如下:
自定義格式:例如,添加客戶端 IP 和請(qǐng)求時(shí)間戳到日志中:
log_format custom '$remote_addr - $remote_user [$time_local] '
'client:$http_x_real_ip, request_time:$request_time '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
然后在需要的地方使用這個(gè)自定義格式:
access_log /var/log/nginx/access.log custom;
4. 日志輪轉(zhuǎn)(Log Rotation)
為了防止日志文件過大影響性能,通常會(huì)配置日志輪轉(zhuǎn)策略。Linux 系統(tǒng)中常見的日志輪轉(zhuǎn)工具是 logrotate
。
配置 logrotate
:創(chuàng)建或編輯 /etc/logrotate.d/nginx
文件來配置日志輪轉(zhuǎn)規(guī)則:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
/etc/logrotate.d/nginx
文件用于配置 Nginx 日志的輪轉(zhuǎn)策略,確保日志文件不會(huì)無限增長(zhǎng),并且可以通過壓縮和歸檔來節(jié)省磁盤空間。
路徑匹配
輪轉(zhuǎn)頻率
處理缺失文件
保留周期
壓縮
空文件處理
權(quán)限設(shè)置
共享腳本
輪轉(zhuǎn)后操作
假設(shè)今天是 2024 年 12 月 30 日,Nginx 日志輪轉(zhuǎn)會(huì)在午夜觸發(fā)。以下是具體的流程:
檢查和輪轉(zhuǎn):
壓縮舊日志:
創(chuàng)建新日志文件:
通知 Nginx:
清理過期日志:
5. 查看和分析日志
6. 調(diào)試模式下的日志
有時(shí)你需要更詳細(xì)的錯(cuò)誤信息來解決問題。可以通過修改錯(cuò)誤日志級(jí)別來啟用更詳細(xì)的日志輸出:
error_log /var/log/nginx/error.log debug;
這將使 Nginx 記錄更多的調(diào)試信息,但請(qǐng)注意,生產(chǎn)環(huán)境中應(yīng)避免長(zhǎng)期使用 debug
級(jí)別,因?yàn)樗鼤?huì)產(chǎn)生大量日志并可能影響性能。
總之,Nginx 日志是運(yùn)維人員了解服務(wù)器運(yùn)行狀態(tài)的關(guān)鍵窗口。通過合理配置日志,運(yùn)用日志輪轉(zhuǎn)策略,熟練使用查看與分析工具,以及在必要時(shí)調(diào)整日志級(jí)別,我們能更高效地保障 Nginx 穩(wěn)定運(yùn)行。藍(lán)隊(duì)云作為技術(shù)支持的堅(jiān)實(shí)后盾,擁有豐富資源與工具,期待與大家攜手攻克更多技術(shù)難題,助力 Web 服務(wù)蓬勃發(fā)展。