日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
超詳細(xì)!Nginx日志配置實(shí)踐
前言

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),東蘭網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:東蘭等地區(qū)。東蘭做網(wǎng)站價(jià)格咨詢:13518219792

Nginx日志對于統(tǒng)計(jì)、系統(tǒng)服務(wù)排錯(cuò)很有用。

Nginx日志主要分為兩種:access_log(訪問日志)和error_log(錯(cuò)誤日志)。通過訪問日志我們可以得到用戶的IP地址、瀏覽器的信息,請求的處理時(shí)間等信息。錯(cuò)誤日志記錄了訪問出錯(cuò)的信息,可以幫助我們定位錯(cuò)誤的原因。

本文將詳細(xì)描述一下如何配置Nginx日志。

設(shè)置access_log

訪問日志主要記錄客戶端的請求??蛻舳讼騈ginx服務(wù)器發(fā)起的每一次請求都記錄在這里??蛻舳薎P,瀏覽器信息,referer,請求處理時(shí)間,請求URL等都可以在訪問日志中得到。當(dāng)然具體要記錄哪些信息,你可以通過log_format指令定義。

語法

access_log?path?[format?[buffer=size]?[gzip[=level]]?[flush=time]?[if=condition]];?#?設(shè)置訪問日志
access_log?off;?#?關(guān)閉訪問日志
  • path 指定日志的存放位置。
  • format 指定日志的格式。默認(rèn)使用預(yù)定義的combined。
  • buffer 用來指定日志寫入時(shí)的緩存大小。默認(rèn)是64k。
  • gzip 日志寫入前先進(jìn)行壓縮。壓縮率可以指定,從1到9數(shù)值越大壓縮比越高,同時(shí)壓縮的速度也越慢。默認(rèn)是1。
  • flush 設(shè)置緩存的有效時(shí)間。如果超過flush指定的時(shí)間,緩存中的內(nèi)容將被清空。
  • if 條件判斷。如果指定的條件計(jì)算為0或空字符串,那么該請求不會(huì)寫入日志。

另外,還有一個(gè)特殊的值off。如果指定了該值,當(dāng)前作用域下的所有的請求日志都被關(guān)閉。

作用域

可以應(yīng)用access_log指令的作用域分別有http,server,location,limit_except。也就是說,在這幾個(gè)作用域外使用該指令,Nginx會(huì)報(bào)錯(cuò)。

以上是access_log指令的基本語法和參數(shù)的含義。下面我們看一幾個(gè)例子加深一下理解。

基本用法

access_log?/var/logs/nginx-access.log

該例子指定日志的寫入路徑為/var/logs/nginx-access.log,日志格式使用默認(rèn)的combined。

access_log?/var/logs/nginx-access.log?buffer=32k?gzip?flush=1m

該例子指定日志的寫入路徑為/var/logs/nginx-access.log,日志格式使用默認(rèn)的combined,指定日志的緩存大小為32k,日志寫入前啟用gzip進(jìn)行壓縮,壓縮比使用默認(rèn)值1,緩存數(shù)據(jù)有效時(shí)間為1分鐘。

使用log_format自定義日志格式

Nginx預(yù)定義了名為combined日志格式,如果沒有明確指定日志格式默認(rèn)使用該格式:

log_format?combined?'$remote_addr?-?$remote_user?[$time_local]?'
????????????????????'"$request"?$status?$body_bytes_sent?'
????????????????????'"$http_referer"?"$http_user_agent"';

如果不想使用Nginx預(yù)定義的格式,可以通過log_format指令來自定義。

語法

log_format?name?[escape=default|json]?string?...;
  • name 格式名稱。在access_log指令中引用。
  • escape 設(shè)置變量中的字符編碼方式是json還是default,默認(rèn)是default。
  • string 要定義的日志格式內(nèi)容。該參數(shù)可以有多個(gè)。參數(shù)中可以使用Nginx變量。

下面是log_format指令中常用的一些變量:

$bytes_sent
發(fā)送給客戶端的總字節(jié)數(shù)

$body_bytes_sent
發(fā)送給客戶端的字節(jié)數(shù),不包括響應(yīng)頭的大小

$connection
連接序列號

$connection_requests
當(dāng)前通過連接發(fā)出的請求數(shù)量

$msec
日志寫入時(shí)間,單位為秒,精度是毫秒

$pipe
如果請求是通過http流水線發(fā)送,則其值為"p",否則為“."

$request_length
請求長度(包括請求行,請求頭和請求體)

$request_time
請求處理時(shí)長,單位為秒,精度為毫秒,從讀入客戶端的第一個(gè)字節(jié)開始,直到把最后一個(gè)字符發(fā)送張客戶端進(jìn)行日志寫入為止

$status
響應(yīng)狀態(tài)碼

$time_iso8601
標(biāo)準(zhǔn)格式的本地時(shí)間,形如“2017-05-24T18:31:27+08:00”

$time_local
通用日志格式下的本地時(shí)間,如"24/May/2017:18:31:27 +0800"

$http_referer
請求的referer地址。

$http_user_agent
客戶端瀏覽器信息。

$remote_addr
客戶端IP

$http_x_forwarded_for
當(dāng)前端有代理服務(wù)器時(shí),設(shè)置web節(jié)點(diǎn)記錄客戶端地址的配置,此參數(shù)生效的前提是代理服務(wù)器也要進(jìn)行相關(guān)的x_forwarded_for設(shè)置。

$request
完整的原始請求行,如 "GET / HTTP/1.1"

$remote_user
客戶端用戶名稱,針對啟用了用戶認(rèn)證的請求

$request_uri
完整的請求地址,如 "https://daojia.com/"

下面演示一下自定義日志格式的使用:

access_log?/var/logs/nginx-access.log?main
log_format??main??'$remote_addr?-?$remote_user?[$time_local]?"$request"?'
??????????????????'$status?$body_bytes_sent?"$http_referer"?'
??????????????????'"$http_user_agent"?"$http_x_forwarded_for"';

我們使用log_format指令定義了一個(gè)main的格式,并在access_log指令中引用了它。假如客戶端有發(fā)起請求:https://suyunfe.com/,我們看一下我截取的一個(gè)請求的日志記錄:

112.195.209.90?-?-?[20/Feb/2018:12:12:14?+0800]?
"GET?/?HTTP/1.1"?200?190?"-"?"Mozilla/5.0?(Linux;?Android?6.0;?Nexus?5?Build/MRA58N)?
AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/63.0.3239.132?Mobile?Safari/537.36"?"-"

我們看到最終的日志記錄中$remote_user$http_referer、$http_x_forwarded_for都對應(yīng)了一個(gè)-,這是因?yàn)檫@幾個(gè)變量為空。

設(shè)置error_log

錯(cuò)誤日志在Nginx中是通過error_log指令實(shí)現(xiàn)的。該指令記錄服務(wù)器和請求處理過程中的錯(cuò)誤信息。

語法

配置錯(cuò)誤日志文件的路徑和日志級別。

error_log?file?[level];
Default:????
error_log?logs/error.log?error;

第一個(gè)參數(shù)指定日志的寫入位置。

第二個(gè)參數(shù)指定日志的級別。level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值??梢钥吹狡淙≈捣秶前淳o急程度從低到高排列的。只有日志的錯(cuò)誤級別等于或高于level指定的值才會(huì)寫入錯(cuò)誤日志中。默認(rèn)值是error。

基本用法

error_log?/var/logs/nginx/nginx-error.log

它可以配置在:main, http, mail, stream, server, location作用域。

例子中指定了錯(cuò)誤日志的路徑為:/var/logs/nginx/nginx-error.log,日志級別使用默認(rèn)的error。

open_log_file_cache

每一條日志記錄的寫入都是先打開文件再寫入記錄,然后關(guān)閉日志文件。如果你的日志文件路徑中使用了變量,如access_log /var/logs/$host/nginx-access.log,為提高性能,可以使用open_log_file_cache指令設(shè)置日志文件描述符的緩存。

語法

open_log_file_cache?max=N?[inactive=time]?[min_uses=N]?[valid=time];
  • max 設(shè)置緩存中最多容納的文件描述符數(shù)量,如果被占滿,采用LRU算法將描述符關(guān)閉。
  • inactive 設(shè)置緩存存活時(shí)間,默認(rèn)是10s。
  • min_uses 在inactive時(shí)間段內(nèi),日志文件最少使用幾次,該日志文件描述符記入緩存,默認(rèn)是1次。
  • valid:設(shè)置多久對日志文件名進(jìn)行檢查,看是否發(fā)生變化,默認(rèn)是60s。
  • off:不使用緩存。默認(rèn)為off。

基本用法

open_log_file_cache?max=1000?inactive=20s?valid=1m?min_uses=2;

它可以配置在http、server、location作用域中。

例子中,設(shè)置緩存最多緩存1000個(gè)日志文件描述符,20s內(nèi)如果緩存中的日志文件描述符至少被被訪問2次,才不會(huì)被緩存關(guān)閉。每隔1分鐘檢查緩存中的文件描述符的文件名是否還存在。

總結(jié)

Nginx中通過access_log和error_log指令配置訪問日志和錯(cuò)誤日志,通過log_format我們可以自定義日志格式。如果日志文件路徑中使用了變量,我們可以通過open_log_file_cache指令來設(shè)置緩存,提升性能。


網(wǎng)站名稱:超詳細(xì)!Nginx日志配置實(shí)踐
文章來源:http://m.5511xx.com/article/cocpcdi.html