nginx日志配置,以及日志輪詢


一、為nginx配置錯誤日志

Nginx錯誤日志是調試nginx的重要手段,屬於核心功能模塊的參數(ngx_core_module)該參數名字為err_log,是放在Main區塊中全局配置

err_log的語法格式以及參數語法說明如下

err_log   file              level(級別)

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

其中關鍵字err_log不能改變

 1 1、在配置文件中寫入error_log logs/error.log error
 2 [root@A conf]# Vim nginx.conf
 3 worker_processes  1;
 4 error_log logs/error.log error;   →這里是寫入的默認log
 5 events {
 6     worker_connections  1024;
 7 }
 8 http {
 9     include       mime.types;
10     default_type  application/octet-stream;
11     sendfile        on;
12     keepalive_timeout  65;
13     #nginx vhosts config
14     include extra/www.conf;
15     include extra/bbs.conf;
16     include extra/blog.conf;
17     include extra/status.conf;
18 }
19 2、檢查語法,並且重啟
20 3、查看日志,如果日志太多可以清空日志然后查看
21 [root@A conf]# cat ../error.log   →查看nginx的錯誤日志文件
22 
23 [root@A conf]# > ../logs/error.log   →這個是日志太多然后看不清的時候清空日志
24 [root@A conf]# cat ../logs/error.log  →之后查看日志

二、訪問日志作用以及配置

所有的web軟件都有這樣的功能,會把每個用戶訪問網站的日志信息記錄到指定的日志文件里面,供網站提供這分析用戶瀏覽行為等,如百度。此功能由nginx_http_log_module模塊負責,對應的官方地址:

http://nginx.org/en/docs/http/ngx_http_log_module.html

Nginx 訪問日志參數

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

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

用法如下:

1、取出日志參數格式

下面的log_format格式,在vim nginx_default里面21到23行

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

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

下面是定義參數

$http_x_forwarded_for  代理接收客戶端信息

 

2、把參數放到配置的nginx.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/blog.conf;
    include extra/status.conf;
}

配置訪問日志如下:

 

默認配置:access_log logs/access.log cimbined;  

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

access_log 訪問位置,這里一般在虛擬主機里面

logs/access.log 記錄文件

cimbined; 以什么樣的格式記錄

1、    寫到虛擬主機里面,這里先寫到www.conf里面
 [root@A conf]# vim extra/www.conf
server {
        listen       80;
        server_name  www.cnblog.co pyrene;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
        access_log logs/access_www.log main;    -→放到location外面,logs是安裝目錄,后面是名字,以main的方式,這樣才你能和log_format 結合使用
    }
2、    檢查語法/application/nginx/sbin/nginx –t,重啟
3、    查看日志變化用 tail -f /application/nginx/logs/access_www.log   這里的是上面起名字防止的位置

1、  瀏覽器訪問綁定的ip地址就會出現如下:並且和access_log對比

 

定義的格式

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

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

里面有參數referer,可以顯示你從那個頁面過來的是什么手機,什么系統等等

真實的格式

192.168.197.1 - - [17/Dec/2

016:06:42:14 +0800] "GET /favicon.ico HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0.2.200 Chrome/47.0.2526.73 Safari/537.36" "-"

詳細說明信息:

上面的還可以優化,如下

三、日志輪詢

nginx中的日志輪詢切割一般用cron+腳本

方法如下:

1、首先寫入腳本

[root@oldboy logs]# mkdir /server/scripts -p
[root@oldboy logs]# cd /server/scripts/
寫腳本之前先創建腳本存放目錄
[root@oldboy scripts]# vim cut_nginx_log.sh 
#!/bin/bash
cd /application/nginx/logs
#這里如果有博客的log那就把log在這里mv
/bin/mv access_www.log  www_access_$(date +%F -d '-1day').log
/application/nginx/sbin/nginx -s reload
#下面可以把這個推送到備份服務器然后刪除七天之前的

2、執行 /bin/sh /server/scripts/cut_nginx_log.sh

3、查看是否生成log

[root@oldboy logs]# ls
access.log access_www.log error.log nginx.pid www_access_2017-03-03.log

4、定時任務

[root@oldboy logs]# crontab -l
#time sync by pyrene 2017-1-16
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
# nginx acess_log
00 * * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM