不一樣用戶防衛Nginx會把每一個用戶訪問往咱的日誌信息記錄到指定的日誌文件裏,供網站管理員分析用戶瀏覽行爲等,此功能又ngx_http_log_module 模塊負責。前端
控制訪問日誌的參數nginx
參數 | 說明 |
---|---|
log_format | 經過不一樣的名稱來定義日誌的輸出格式,能夠定義多個 |
access_log | 用來指定日誌保存的路徑和使用的輸出格式 |
記錄nginx處理的請求的過程,包含請求類型、時間、客戶端信息、處理結果、處理時長等信息,具體能夠經過log_format指令引用特定變量來記錄相關信息。web
記錄nginx進程啓動、中止、重啓及處理請求過程當中發生的錯誤信息。算法
記錄rewrite規則工做的過程,能夠用於調試rewrite規則。apache
nginx中能夠記錄的日誌主要有access日誌、error日誌和rewrite日誌。前兩種由ngx_http_log_module模塊予以支持,rewrite日誌則由ngx_http_rewrite_module模塊提供,這兩個模塊默認都已包含且啓用。瀏覽器
# 定義一個日誌的輸出格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'; # 指定日誌的報錯位置和指定日誌的輸出格式爲上面定義的格式(main爲上面定義的日誌標籤) access_log logs/access.log main;
log_format [name [string]; name表示格式名稱,string表示等義的格式。log_format有一個默認的無需設置的combined日誌格式,至關於apache的combined日誌格式。 log_format格式變量: $http_referer # 記錄這次請求是從哪一個鏈接訪問過來的,能夠根據該參數進行防盜鏈設置。 $http_user_agent # 記錄客戶端訪問信息,例如:瀏覽器、手機客戶端等 $remote_addr # 記錄客戶端IP地址 $http_x_forwarded_for # 當前端有代理服務器時,設置web節點記錄客戶端地址的配置,此參數生效的前提是代理服務器也要進行相關的x_forwarded_for設置 $remote_user # 記錄客戶端用戶名稱 $request # 記錄請求的URL和HTTP協議 $status # 記錄請求狀態 $body_bytes_sent # 發送給客戶端的字節數,不包括響應頭的大小; 該變量與Apache模塊mod_log_config裏的「%B」參數兼容。 $bytes_sent # 發送給客戶端的總字節數。 $connection # 鏈接的序列號。 $connection_requests # 當前經過一個鏈接得到的請求數量。 $msec # 日誌寫入時間。單位爲秒,精度是毫秒。 $pipe # 若是請求是經過HTTP流水線(pipelined)發送,pipe值爲「p」,不然爲「.」。 $http_referer # 記錄從哪一個頁面連接訪問過來的 $http_user_agent # 記錄客戶端瀏覽器相關信息 $request_length # 請求的長度(包括請求行,請求頭和請求正文)。 $request_time # 請求處理時間,單位爲秒,精度毫秒; 從讀入客戶端的第一個字節開始,直到把最後一個字符發送給客戶端後進行日誌寫入爲止。 $time_iso8601 # ISO8601標準格式下的本地時間。 $time_local # 通用日誌格式下的本地時間。
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; 做用域 : http, server, location, if in location, limit_except 其餘參數說明 access_log off; #關閉access_log,即不記錄訪問日誌 access_log path [format [buffer=size [flush=time]] [if=condition]]; access_log path format gzip[=level] [buffer=size] [flush=time] [if=condition]; access_log syslog:server=address[,parameter=value] [format [if=condition]]; 說明: buffer=size # 爲存放訪問日誌的緩衝區大小 flush=time # 爲緩衝區的日誌刷到磁盤的時間 zip[=level] # 表示壓縮級別 [if = condition] # 表示其餘條件
語法格式: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time]; 使用open_log_file_cache來設置日誌文件緩存(默認是off)。 默認值: open_log_file_cache off; 做用於: http, server, location 對於每一條日誌記錄,都將是先打開文件,再寫入日誌,而後關閉。可使用open_log_file_cache來設置日誌文件緩存(默認是off),格式以下: 參數註釋以下: max # 設置緩存中的最大文件描述符數量,若是緩存被佔滿,採用LRU算法將描述符關閉。 inactive # 設置存活時間,默認是10s min_uses # 設置在inactive時間段內,日誌文件最少使用多少次後,該日誌文件描述符記入緩存中,默認是1次 valid # 設置檢查頻率,默認60s off # 禁用緩存