Nginx有非常靈活的日志記錄模式,每個級別的配置可以有各自獨立的訪問日志。日志格式通過log_format命令定義格式。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
$remote_addr # 記錄客戶端IP地址
$remote_user # 記錄客戶端用戶名
$time_local # 記錄通用的本地時間
$time_iso8601 # 記錄ISO8601標准格式下的本地時間
$request # 記錄請求的方法以及請求的http協議
$status # 記錄請求狀態碼(用於定位錯誤信息)
$body_bytes_sent # 發送給客戶端的資源字節數,不包括響應頭的大小
$bytes_sent # 發送給客戶端的總字節數
$msec # 日志寫入時間。單位為秒,精度是毫秒。
$http_referer # 記錄從哪個頁面鏈接訪問過來的
$http_user_agent # 記錄客戶端瀏覽器相關信息
$http_x_forwarded_for #記錄客戶端IP地址
$request_length # 請求的長度(包括請求行, 請求頭和請求正文)。
$request_time # 請求花費的時間,單位為秒,精度毫秒
# 注:如果Nginx位於負載均衡器,nginx反向代理之后, web服務器無法直接獲取到客戶端真實的IP地址。
# $remote_addr獲取的是反向代理的IP地址。 反向代理服務器在轉發請求的http頭信息中,
# 增加X-Forwarded-For信息,用來記錄客戶端IP地址和客戶端請求的服務器地址。