Nginx日志文件的配置
Nginx日志文件的配置
? ? ? ? ? Nginx的日志文件,默認在Nginx程序安裝目錄的logs二級目錄下。? ?
? ? ? ? ??與Nginx日志相關的指令有兩條
? ? ? ? ??log_format,用來設置日志的記錄格式。
? ? ? ? ??Access_log,用來指定日志文件的存放路徑、格式和緩存大小。
? ? ? ? ??這兩條指令在Nginx配置文件中,可以在http{……}之間,也可以在虛擬主機之間,即server{……}之間。
? ? ? ? ??Log_format指令
? ? ? ? ??用來設置日志文件的記錄格式,語法如下
log_format name format[format ……]? ? ? ? ??其中,name表示定義的格式名稱,format,表示定義的格式樣式。
? ? ? ? ??Log_format有一個默認的、無須設置的combined日志格式設置,相當于Apache的combined日志格式,如下
log_format combined '$remote_addr - $remote_user [$time_local]' '"$request" $status $body_bytes_sent' '"$http_referer" "$http_user_agent"';? ? ? ? ??也可以自定義日志的記錄格式,注意,log_format指令設置的name名稱,在Nginx配置文件中,是不能重復的。
? ? ? ? ??如果,將Nginx服務器作為Web服務器,唯一負載均衡設備、Squid、Nginx反向代理之后,就不能獲取到客戶端的真實IP地址了。
? ? ? ? ??原因,經過反向代理之后,由于在客戶端和Web服務器之間,增加了中間層,因此,Web服務器無法直接拿到客戶端的IP,通過$remote_addr變量拿到的是反向代理服務器的IP地址。
? ? ? ? ??但是,反向代理服務器在轉發請求的http頭信息中,可以增加X-Forwarded-For信息,用以記錄原有的客戶端IP地址和原有客戶端請求的服務器地址。
? ? ? ? ??此時,需要用log_format指令來設置日志格式,讓日志記錄X-Forwarded-For信息中的IP地址,即客戶的真實IP。
? ? ? ? ??比如,創建一個名為mylogformat的日志格式,再用$http_x_forwarded_for變量記錄用戶的X_Forwarded-For IP地址。
log_format mylogformat '$http_x_forwarded - $remote_user [$time_local]' '"$request" $status $body_bytes_sent' '"$http_referer" "$http_user_agent"';? ? ? ? ??參數說明
? ? ? ? ??$remote_addr——用來記錄IP地址
? ? ? ? ??$http_x_forwarded_for——用來記錄IP地址
? ? ? ? ??$remote_user——用來記錄遠程客戶端用戶名稱
? ? ? ? ??$time_local——用來記錄訪問時間與時區
? ? ? ? ??$request——用來記錄請求URL與http協議
? ? ? ? ??$status——用來記錄請求狀態,比如,成功時狀態為200,頁面找到時狀態為404等
? ? ? ? ??$body_bytes_sent——用來記錄發送給客戶端的文件主體內容大小
? ? ? ? ??$http_referer——用來記錄是從哪個頁面鏈接訪問過來的
? ? ? ? ??$http_user_agent——用來記錄客戶端瀏覽器的相關信息
? ? ? ? ??Access_log指令
? ? ? ? ??指定日志文件存放路徑,語法如下
access_log path [format[buffer=size | off]]? ? ? ? ??參數說明
? ? ? ? ??path——表示日志文件的存放路徑。
? ? ? ? ??Format——表示使用log_format指令設置的日志格式的名稱。
? ? ? ? ??Buffer=size——表示設置內存緩沖區的大小,比如,可以設置buffer=32k。
? ? ? ? ??如果不記錄日志,可以使用如下指令關閉日志記錄
access_log off;總結
以上是生活随笔為你收集整理的Nginx日志文件的配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx的虚拟主机配置
- 下一篇: Nginx日志文件的切割