0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

nginx日志配置方法

馬哥Linux運(yùn)維 ? 來源:博客園biglittleant ? 2024-10-24 17:43 ? 次閱讀

nginx access日志配置

access_log日志配置

access_log用來定義日志級別,日志位置。語法如下:
日志級別:debug > info > notice > warn > error > crit > alert > emerg

語法格式:access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
                     access_log off;
默認(rèn)值   :access_log logs/access.log combined;
作用域   :http, server, location, if in location, limit_except

實(shí)例一:

access_log /spool/logs/nginx-access.log compression buffer=32k;

log_format 定義日志格式

語法格式:log_format name [escape=default|json] string ...;
默認(rèn)值    :log_format combined "...";
作用域    :http

實(shí)例一:

log_format compression '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $bytes_sent '
                       '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /spool/logs/nginx-access.log compression buffer=32k;

常見的日志變量

$remote_addr,$http_x_forwarded_for記錄客戶端IP地址

$remote_user記錄客戶端用戶名稱

$request記錄請求的URL和HTTP協(xié)議(GET,POST,DEL,等)

$status記錄請求狀態(tài)

$body_bytes_sent發(fā)送給客戶端的字節(jié)數(shù),不包括響應(yīng)頭的大?。辉撟兞颗cApache模塊mod_log_config里的“%B”參數(shù)兼容。

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

$connection連接的序列號。

$connection_requests當(dāng)前通過一個(gè)連接獲得的請求數(shù)量。

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

$pipe如果請求是通過HTTP流水線(pipelined)發(fā)送,pipe值為“p”,否則為“.”。

$http_referer記錄從哪個(gè)頁面鏈接訪問過來的

$http_user_agent記錄客戶端瀏覽器相關(guān)信息

$request_length請求的長度(包括請求行,請求頭和請求正文)。

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

$time_iso8601 ISO8601標(biāo)準(zhǔn)格式下的本地時(shí)間。

$time_local通用日志格式下的本地時(shí)間。

open_log_file_cache

使用open_log_file_cache來設(shè)置日志文件緩存(默認(rèn)是off)。

max:設(shè)置緩存中的最大文件描述符數(shù)量,如果緩存被占滿,采用LRU算法將描述符關(guān)閉。

inactive:設(shè)置存活時(shí)間,默認(rèn)是10s

min_uses:設(shè)置在inactive時(shí)間段內(nèi),日志文件最少使用多少次后,該日志文件描述符記入緩存中,默認(rèn)是1次

valid:設(shè)置檢查頻率,默認(rèn)60s

off:禁用緩存

語法格式:open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
                     open_log_file_cache off;
默認(rèn)值: open_log_file_cache off;
作用域: http, server, location

實(shí)例一

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

nginx日志調(diào)試技巧

設(shè)置 Nginx 僅記錄來自于你的 IP 的錯(cuò)誤

當(dāng)你設(shè)置日志級別成 debug,如果你在調(diào)試一個(gè)在線的高流量網(wǎng)站的話,你的錯(cuò)誤日志可能會記錄每個(gè)請求的很多消息,這樣會變得毫無意義。

在events{...}中配置如下內(nèi)容,可以使 Nginx 記錄僅僅來自于你的 IP 的錯(cuò)誤日志。

events {
        debug_connection 1.2.3.4;
}

調(diào)試 nginx rewrite 規(guī)則

調(diào)試rewrite規(guī)則時(shí),如果規(guī)則寫錯(cuò)只會看見一個(gè)404頁面,可以在配置文件中開啟nginx rewrite日志,進(jìn)行調(diào)試。

server {
        error_log    /var/logs/nginx/example.com.error.log;
        rewrite_log on;
}

rewrite_log on;開啟后,它將發(fā)送所有的 rewrite 相關(guān)的日志信息到 error_log 文件中,使用 [notice] 級別。隨后就可以在error_log 查看rewrite信息了。

使用location記錄指定URL的日志

server {
        error_log    /var/logs/nginx/example.com.error.log;
        location /static/ { 
        error_log /var/logs/nginx/static-error.log debug; 
    }         
}

配置以上配置后,/static/ 相關(guān)的日志會被單獨(dú)記錄在static-error.log文件中。

nginx日志共三個(gè)參數(shù)
access_log: 定義日志的路徑及格式。
log_format: 定義日志的模板。
open_log_file_cache: 定義日志文件緩存。

proxy_set_header X-Forwarded-For :如果后端Web服務(wù)器上的程序需要獲取用戶IP,從該Header頭獲取。proxy_set_header X-Forwarded-For $remote_addr;

常用例子

main格式

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

json格式

log_format logstash_json '{"@timestamp":"$time_iso8601",'
       '"host": "$server_addr",'
       '"client": "$remote_addr",'
       '"size": $body_bytes_sent,'
       '"responsetime": $request_time,'
       '"domain": "$host",'
       '"url":"$request_uri",'
       '"referer": "$http_referer",'
       '"agent": "$http_user_agent",'
       '"status":"$status",'
       '"x_forwarded_for":"$http_x_forwarded_for"}';

解釋:
$uri請求中的當(dāng)前URI(不帶請求參數(shù),參數(shù)位于$args),不同于瀏覽器傳遞的$request_uri的值,它可以通過內(nèi)部重定向,或者使用index指令進(jìn)行修改。不包括協(xié)議和主機(jī)名,例如/foo/bar.html。
$request_uri這個(gè)變量等于包含一些客戶端請求參數(shù)的原始URI,它無法修改,請查看$uri更改或重寫URI。
也就是說:$request_uri是原始請求URL,$uri則是經(jīng)過nginx處理請求后剔除參數(shù)的URL,所以會將漢字表現(xiàn)為union。
坑點(diǎn):
使用$uri可以在nginx對URL進(jìn)行更改或重寫,但是用于日志輸出可以使用$request_uri代替,如無特殊業(yè)務(wù)需求,完全可以替換。

壓縮格式

日志中增加了壓縮的信息。

http {
    log_format compression '$remote_addr - $remote_user [$time_local] '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent" "$gzip_ratio"';

    server {
        gzip on;
        access_log /spool/logs/nginx-access.log compression;
        ...
    }
}

upstream格式

增加upstream消耗的時(shí)間。

http {
    log_format upstream_time '$remote_addr - $remote_user [$time_local] '
                             '"$request" $status $body_bytes_sent '
                             '"$http_referer" "$http_user_agent"'
                             'rt=$request_time uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time"';

    server {
        access_log /spool/logs/nginx-access.log upstream_time;
        ...
    }
}

參考文檔

統(tǒng)計(jì)status 出現(xiàn)的次數(shù)

awk '{print $9}' access.log | sort | uniq -c | sort -rn

36461 200 
483 500
87 404
9 400
3 302
1 499
1 403
1 301

顯示返回302狀態(tài)碼的URL。

awk '($9 ~ /302/)' access.log | awk '{print $7}' | sort | uniq -c | sort -rn

1 /wp-login.php
1 /wp-admin/plugins.php?action=activate&plugin=ewww-image-optimizer%2Fewww-image-optimizer.php&_wpnonce=cc4a379131
1 /wp-admin/

鏈接:https://www.cnblogs.com/biglittleant/p/8979856.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • ip地址
    +關(guān)注

    關(guān)注

    0

    文章

    290

    瀏覽量

    16966
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    135

    瀏覽量

    10616
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    12146

原文標(biāo)題:死磕nginx系列-nginx日志配置

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linux上Nginx獲得最佳性能的8種方法

    NGINX 是一種流行的、免費(fèi)的開源 Web 服務(wù)器。默認(rèn)的 NGINX 配置足以讓 Web 服務(wù)器正常工作。 但是,如果您想充分利用 NGINX,則需要使用其
    發(fā)表于 01-16 09:51 ?520次閱讀

    Nginx日志分割方案

    nginx 默認(rèn)沒有提供對日志文件的分割功能,所以隨著時(shí)間的增長,access.log 和 error.log 文件會越來越大,尤其是 access.log,其日志記錄量比較大,更容易增長文件大小。影響
    發(fā)表于 06-19 15:05 ?429次閱讀
    <b class='flag-5'>Nginx</b><b class='flag-5'>日志</b>分割方案

    nginx重啟命令linux步驟是什么?

      1、驗(yàn)證nginx配置文件是否正確   方法一:進(jìn)入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示
    發(fā)表于 07-10 16:40

    nginx重啟命令linux步驟是什么?

      1、驗(yàn)證nginx配置文件是否正確   方法一:進(jìn)入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示
    發(fā)表于 07-11 17:13

    Linux運(yùn)維Nginx軟件優(yōu)化之日志優(yōu)化

    1. 配置Nginx服務(wù)相關(guān)日志操作1) 進(jìn)行日志的切割[code][root@oldboy ~]# mkdir /server/scripts/ -p[root@oldboy ~]#
    發(fā)表于 12-18 15:17

    flume監(jiān)控nginx日志的使用和提交

    使用flume監(jiān)控nginx日志并且提交到kafka里面
    發(fā)表于 04-16 07:33

    nginx中的sendfile配置說明

    nginx配置sendfile及詳細(xì)說明
    發(fā)表于 05-05 08:08

    Linux下Nginx配置多個(gè)站點(diǎn)的實(shí)現(xiàn)方法

    請問Linux下Nginx如何配置多個(gè)站點(diǎn)?
    發(fā)表于 11-09 06:43

    nginx錯(cuò)誤頁面配置

    16、nginx 錯(cuò)誤頁面配置nginx錯(cuò)誤頁面包括404 403 500 502 503 504等頁面,只需要在server中增加以下配置即可: error_page404 403
    發(fā)表于 07-26 06:54

    主要學(xué)習(xí)下nginx的安裝配置

    用于nginx編碼轉(zhuǎn)換的配置文件;/var/log/nginxnginx的訪問和錯(cuò)誤日志目錄;/var/cache/
    發(fā)表于 10-19 14:12

    可快速閱讀、查看Nginx日志的工具Rhit

    【導(dǎo)語】:一個(gè)格式化 Nginx 日志,可快速閱讀、查看 Nginx 日志的工具。 簡介 Rhit 可以從標(biāo)準(zhǔn)文件夾中讀取 Nginx
    的頭像 發(fā)表于 04-04 18:01 ?2542次閱讀
    可快速閱讀、查看<b class='flag-5'>Nginx</b><b class='flag-5'>日志</b>的工具Rhit

    運(yùn)行nginx所需的最低配置

    運(yùn)行nginx所需的最低配置: # /etc/nginx/nginx.confevents {} # event context have to be defined to consi
    的頭像 發(fā)表于 08-23 10:53 ?5452次閱讀

    配置Nginx訪問日志

    每當(dāng)處理客戶請求時(shí),Nginx都會在訪問日志中生成一個(gè)新記錄。每個(gè)事件記錄都包含一個(gè)時(shí)間戳,并包含有關(guān)客戶端和所請求資源的各種信息。訪問日志可以顯示訪問者的位置,訪問者的訪問的頁面等。
    的頭像 發(fā)表于 05-24 09:59 ?2254次閱讀

    最全的Nginx日志分割教程

    nginx 默認(rèn)沒有提供對日志文件的分割功能,所以隨著時(shí)間的增長,access.log 和 error.log 文件會越來越大,尤其是 access.log,其日志記錄量比較大,更容易增長文件大小。影響
    的頭像 發(fā)表于 02-16 14:51 ?968次閱讀

    Nginx常用的配置和基本功能講解

    Nginx 已經(jīng)廣泛應(yīng)用于 J-one 和 Jdos 的環(huán)境部署上,本文對 Nginx 的常用的配置和基本功能進(jìn)行講解,適合 Nginx 入門學(xué)習(xí)。
    的頭像 發(fā)表于 05-04 10:25 ?620次閱讀