一、為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