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