Nginx 錯誤日誌配置

来源:https://www.cnblogs.com/su-root/archive/2019/01/10/10242051.html
-Advertisement-
Play Games

1、Nginx錯誤日誌信息介紹: error_log的語法格式及參數說明: error_log file level; 關鍵字 日誌文件 錯誤日誌級別 其中,關鍵字error_log 不能改變,日誌文件可以指定任意存放日誌的目錄,錯誤日誌級別常見的有{debug,info,notice,wam,er ...


1、Nginx錯誤日誌信息介紹:

  error_log的語法格式及參數說明:

  error_log      file         level;

  關鍵字    日誌文件   錯誤日誌級別

  其中,關鍵字error_log 不能改變,日誌文件可以指定任意存放日誌的目錄,錯誤日誌級別常見的有{debug,info,notice,wam,error,crit,alert,emerg},級別越高記錄的信息越少,場景一般是wam,error,crit這三個級別之一,註意不要配置info等低級別,會帶來巨大的磁碟I/O消耗。

error_log的預設值:

#default: error_log logs/error.log error;

可以放置的標簽段位:

#context: main,http,server,location

編輯主配置文件nginx.conf 增加訪問日誌配置:

[root@lamp01 conf]# vim nginx.conf
worker_processes  1;
error_log logs/error.log error;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

#nginx vhosts config
    include extra/www.conf;
    include extra/bbs.conf;
    include extra/status.conf;
}

刷新配置:

/application/nginx/sbin/nginx –t

/application/nginx/sbin/nginx –s reload

查看錯誤日誌文件:

cat ../logs/error.log

[root@lamp01 conf]# cat ../logs/error.log 
2019/01/08 21:01:39 [notice] 1453#0: signal process started
2019/01/08 21:20:42 [emerg] 1492#0: bind() to 0.0.0.0:80 failed (98: Address already in us
e)2019/01/08 21:20:42 [emerg] 1492#0: bind() to 0.0.0.0:80 failed (98: Address already in us
e)

 

2、Nginx訪問日誌介紹:

  nginx軟體會把每個用戶訪問網站的日誌信息記錄到指定的日誌文件里,供網站提供分析用戶瀏覽行為等,此功能由ngx_http_log_module模塊來負責。

log_format   用來定義記錄日誌的格式(可以定義多種日誌格式,取不同名字即可)

access_log  用來指定日誌文件的路徑及使用的何種日誌格式記錄日誌。

nginx日誌格式預設的參數配置如下:

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

日誌變數說明:

status    http狀態碼,記錄請求返回的狀態,例如200、404、301等

request    用戶的http請求起始行信息

time_local   記錄訪問時間與時區

http_referer  記錄此次請求是從哪個鏈接訪問過來的,可以根據referer進行防盜鏈設置

remote_addr    記錄訪問網站的客戶端地址

remote_user   遠程客戶端用戶名稱

http_user_agent   記錄客戶端訪問信息,例如:瀏覽器,手機客戶端 

body_bytes_sent   伺服器發送給客戶端的響應body位元組數

http_x_forwarded_for  當前端有代理伺服器時,設置web節點記錄客戶端地址配置,此參數生效的                                     前提是代理伺服器上也要進行相關的x_forwarded_for設置

記錄日誌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 為將緩衝區的日誌刷到磁碟的時間,gzip[=level]表示壓縮級別,[if = condition]:其他條件,一般的場景,這些參數都無需配置,極端優化才可能考慮這些參數。

access_log off   off,表示不記錄訪問日誌。

預設配置:access_log logs/access.log combined;

放置位置:http,server,location,if in location,limit_except

nginx記錄日誌的預設參數配置如下:

access_log logs/access.log main;

編輯主配置文件nginx.conf 增加錯誤日誌配置:

[root@lamp01 conf]# vim nginx.conf
worker_processes  1;
error_log logs/error.log error;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
#nginx vhosts config
    include extra/www.conf;
    include extra/bbs.conf;
    include extra/status.conf;
    access_log logs/access_www.log main;
}

刷新配置查看效果:

[root@lamp01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
[root@lamp01 conf]# /application/nginx/sbin/nginx -s reload
[root@lamp01 conf]# curl www.jyw1.com
www.jyw1.com
[root@lamp01 conf]# curl bbs.jyw2.com
bbs.jyw2.com
[root@lamp01 conf]# cat ../logs/access_www.log 
192.168.43.118 - - [08/Jan/2019:23:11:57 +0800] "GET / HTTP/1.1" 200 13 "-" "curl/7.19.7 (
x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-"192.168.43.17 - - [08/Jan/2019:23:12:25 +0800] "GET / HTTP/1.1" 200 13 "-" "Mozilla/5.0 (W
indows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0" "-"

在高併發場景下加上buffer和flush,可以提高網站的性能:

access_log logs/access_www.log main gzip buffer=32k flush=5s;

3、nginx訪問日誌輪詢切割介紹:

  預設情況nginx會把所有的訪問日誌生成一個指定的訪問日誌文件access.log里,時間長了會導致日誌個頭很大,不利於分析日誌和處理,因此,有必要對nginx按天或按小時進行切割成不同的文件保留,這裡使用按天切割方法:

思路解析:

將正在寫入的Nginx日誌文件(access_www.log)重命名為帶當天日期的格式文件(20190109_access_www.log),然後重新載入Nginx,生成新的Nginx日誌(access_www.log)

具體切割腳本如下:

[root@lamp01 nginx]# cat /server/scripts/cut_nginx_log.sh
#!/bin/sh
Dateformat=`date +%Y%m%d -d -1day`         //定義時間
Basedir="/application/nginx"          //nginx安裝目錄
Nginxlogdir="$Basedir/logs"          //存放日誌的目錄
Logname="access_www"            //日誌的名稱
[ -d $Nginxlogdir ] && cd $Nginxlogdir||exit 1 //判斷如果有存放目錄就cd進去,否則退出
[ -f ${Logname}.log ]||exit 1   //判斷如果不存在日誌名稱就執行下麵命令,否則退出
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log  //把當前日誌名重命名為時間日誌名
$Basedir/sbin/nginx -s reload  //從新生成一個不帶時間的日誌文件

效果如下:

[root@lamp01 scripts]# vim cut_nginx_log.sh 
[root@lamp01 scripts]# sh cut_nginx_log.sh 
[root@lamp01 scripts]# ll /application/nginx/logs/
總用量 32
-rw-r--r--. 1 root  root     0 1月   9 00:00 20190109_access_www.log
-rw-r--r--. 1 root  root 15974 1月   7 22:59 access.log
-rw-r--r--. 1 root  root     0 1月   9 00:15 access_www.log
-rw-r--r--. 1 nginx root 11327 1月   9 00:15 error.log
-rw-r--r--. 1 root  root     5 1月   9 2019 nginx.pid
[root@lamp01 scripts]# date -s 2019-01-10
2019年 01月 10日 星期四 00:00:00 CST
[root@lamp01 scripts]# sh cut_nginx_log.sh 
[root@lamp01 scripts]# ll /application/nginx/logs/
總用量 32
-rw-r--r--. 1 root  root     0 1月   9 00:00 20190109_access_www.log
-rw-r--r--. 1 root  root     0 1月  10 00:00 20190110_access_www.log
-rw-r--r--. 1 root  root 15974 1月   7 22:59 access.log
-rw-r--r--. 1 root  root     0 1月  10 00:00 access_www.log
-rw-r--r--. 1 nginx root 11447 1月  10 00:00 error.log
-rw-r--r--. 1 root  root     5 1月   9 21:35 nginx.pid
[root@lamp01 scripts]# 

基於多個站點:修改多個站點配置文件

[root@lamp01 extra]# vim www.conf
[root@lamp01 extra]# vim bbs.conf
[root@lamp01 extra]# cat www.conf bbs.conf
    server {
        listen       80;
        server_name  www.jyw1.com jyw1.com;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
       access_log logs/access_www.log main;    
}
server {
        listen       80;
        server_name  bbs.jyw2.com jyw2.com;
        location / {
            root   html/bbs;
            index  index.html index.htm;
        }
       access_log logs/access_bbs.log main;    
}

切割腳本修改如下:

[root@lamp01 scripts]# vim cut_nginx_log.sh 

#!/bin/sh
Dateformat=`date +%Y%m%d`
Basedir="/application/nginx"
Nginxlogdir="$Basedir/logs"
Logname="access_www"
[ -d $Nginxlogdir ] && cd $Nginxlogdir||exit 1
[ -f ${Logname}.log ]||exit 1
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
/bin/mv access_bbs.log ${Dateformat}_access_bbs.log
$Basedir/sbin/nginx -s reload

效果如下:

[root@lamp01 scripts]# date -s 2019-01-12
2019年 01月 12日 星期六 00:00:00 CST
[root@lamp01 scripts]# sh cut_nginx_log.sh 
[root@lamp01 scripts]# ll /application/nginx/logs/
總用量 32
-rw-r--r--. 1 root  root     0 1月   9 00:00 20190109_access_www.log
-rw-r--r--. 1 root  root     0 1月  10 00:00 20190110_access_www.log
-rw-r--r--. 1 root  root     0 1月  12 00:00 20190112_access_bbs.log
-rw-r--r--. 1 root  root     0 1月  12 00:00 20190112_access_www.log
-rw-r--r--. 1 root  root     0 1月  12 00:01 access_bbs.log
-rw-r--r--. 1 root  root 15974 1月   7 22:59 access.log
-rw-r--r--. 1 root  root     0 1月  12 00:01 access_www.log
-rw-r--r--. 1 nginx root 11627 1月  12 00:01 error.log
-rw-r--r--. 1 root  root     5 1月   9 21:35 nginx.pid
[root@lamp01 scripts]# 

同時我們可以加入到定時任務里去:

            


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 解決方法 定位到csproject 文件夾 問題解決 接下來正常進行CodeFirst操作:生成Migration [name] Upate Database 來源: pass:我會經常修改 不希望被轉載! ...
  • 先看下ASP.NET Core的啟動代碼,如下圖:通過以上代碼,我們可以初步得出以下結論:所有的ASP.NET Core程式本質上也是一個控制台程式,使用Program的Main方法作為程式的入口。控制台Main入口-->IWebHostBuilder-->IWebHost-->Run,發現本質上就... ...
  • asp.net core2.2 "用戶驗證" 和 "授權" 有很詳細和特貼心的介紹,我感興趣的主要是這兩篇: 1. "cookie身份驗證" 2. "基於角色的授權" 我的項目有兩類用戶: 1. 微信公眾號用戶,用戶名為公眾號的openid 2. 企業微信的用戶,用戶名為企業微信的userid 每類 ...
  • 在前段時間做了一下列印,因為需要支持的格式比較多,所以wpf能列印的有限分享一下幾種格式的列印(.xls .xlsx .doc .docx .png .jpg .bmp .pdf) 首先為了保證excel和word的格式問題,excel和word是調用的office進行列印的。 獲取所有印表機的方法 ...
  • 註:本文是英文寫的,偷懶自動翻譯過來了,原文地址:Implementing MasterDetail layout in Xamarin.Forms by MvvmCross 歡迎大家關註我的公眾號:程式員在紐西蘭,瞭解美麗的紐西蘭和碼農們的生活 閱讀本文大概需要20分鐘。本文目錄: 前言 通過Mv ...
  • 1.topic類型的Exchange 我們之前說過Topic類型的Exchange是direct類型的模糊查詢模式,可以通過routkey來實現模糊消費message,topic的模糊匹配有兩種模式: 1. 使用*來匹配一個單詞 2.使用#來匹配0個或多個單詞 我們來看代碼 消費端 生產者代碼 我們 ...
  • 為什麼選擇MySQL資料庫? 毫無疑問,絕大多數的使用linux操作系統的大中小型互聯網網站都在使用MySQL作為其後端的資料庫存儲,從大型的BAT門戶,到電商平臺,分類門戶等無一例都使用MySQL資料庫。 My Sql 資料庫優點: 1、性能卓越,服務穩定,很少出現異常宕機 2、開放源代碼且無版權 ...
  • 如果安裝時或者工作中有問題,可以看錯誤日誌分析問題原因: 1005:創建表失敗 1006:創建資料庫失敗 1007:資料庫已存在,創建資料庫失敗 1008:資料庫不存在,刪除資料庫失敗 1009:不能刪除資料庫文件導致刪除資料庫失敗 1010:不能刪除數據目錄導致刪除資料庫失敗 1011:刪除資料庫 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...