一)錯誤日志
1、介紹
功能:配置記錄nginx啟動及運行過程中所產生的錯誤,是調試Nginx服務的重要手段,屬于核心模塊
2、命令 error_log
語法:
Syntax: error_log file [level];
Default:
error_log logs/error.log error;
案例:
server {
listen 80;
server_name www.a.com a.com;
error_log /vhosts/web1/logs/error_log;
if ( $http_host != "www.a.com" ){
rewrite ^/(.*)$ http://www.a.com/$1 permanent;
}
location / {
root "/vhosts/web1";
index index.html index.htm;
}
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
error_page 404 =302 /404.html;
}
說明:可以為每個location配置不同的錯誤路徑
二)訪問日志
1)log_format
log_format name [escape=default|json] string ...;
案例:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
$remote_addr 客戶端地址
$http_x_forwarded_for 設置web節點記錄客戶端地址的配置
$remote_user 客戶端用戶名稱
$request 請求的host
$status 狀態
$body_bytes_sents 報文主體大小
$http_referer 上一個跳轉頁面
$http_user_agent 客戶端瀏覽器
$request_time 請求處理時間
2)access_log
語法:
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
案例:
server {
listen 80;
server_name www.a.com a.com;
error_log /vhosts/web1/logs/error_log;
access_log /vhosts/web1/logs/access_log;
if ( $http_host != "www.a.com" ){
rewrite ^/(.*)$ http://www.a.com/$1 permanent;
}
location / {
root "/vhosts/web1";
index index.html index.htm;
}
[root@static logs]# /usr/local/nginx/sbin/nginx -s reload
[root@static logs]# ll
total 4
-rw-r--r--. 1 root root 0 Dec 15 15:31 access_log
-rw-r--r--. 1 root root 194 Dec 15 14:50 error_log
查看
[root@static logs]# tail access_log
10.2.18.231 - - [15/Dec/2017:15:34:46 +0800] "GET / HTTP/1.1" 200 18 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
三)open_log_file_cache
語法:
Syntax: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
Default:
open_log_file_cache off;
對于每一條日志記錄,都將是先打開文件,再寫入日志,然后關閉
功能: 定義一個緩存,存儲常用日志的文件描述符,這些日志的名稱包含變量
max: 設置緩存描述符的最大數量
inactive: 設置在此期間沒有訪問的緩存描述符
min_uses: 設置在inactive時間內,日志文件最少使用多少次后,該日志文件描述符記錄緩存中,默認為1次
valid:設置檢查頻率 默認60s
案例:
open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;
四)Nginx日志切割配置
默認情況Nginx會把所有訪問日志生成到一個指定的訪問日志文件access.log,但如果這樣,時間久了就會導致日志文件非常龐大,不利于日志的分析和處理,因此有必要對nginx日志,按天和小時進行切割,分成不同的文件保存
#!/bin/bash
Date=`date +%F`
InstallDir="/usr/local/nginx"
NginxLogDir="/vhosts/web1/logs"
LogName="access_a"
#####
[ -d $NginxLogDir ] && cd $NginxLogDir || exit 1
[ -f ${LogName}.log ]|| exit 1
#Cut logs by day
/bin/mv ${LogName}.log ${LogName}_${Date}.log
$InstallDir/sbin/nginx -s reload
#Delete logs 7 days ago
find . -ctime +7 -name "*.log"|xargs rm -f
00 00 * * * /bin/bash /server/scripts/cut_nginx_log.sh >/dev/null 2>&1
1)分析截止到目前,當天訪問量最高的ip排行
[root@test logs]# awk '{print $1}' 91als.access_2017-12-15.log | sort |uniq -c|sort -nr|head -10
42636 "106.120.160.75"
40419 "106.120.161.65"
368 "101.226.162.89"
363 "125.88.222.250"
335 "123.125.80.235"
278 "113.89.70.105"
276 "144.76.8.134"
232 "113.89.68.65"
194 "106.120.168.109"
2)分析從早上9點至中午12點總的訪問量
sed -n "/2017:09:00/,/2016:12:00/"p access_log|wc -l
3) 找出當前日志中502或者404錯誤的頁面并統計
- 第一部分:Nginx Web服務
- 第一章: Nginx的初探
- 第二章:Nginx的安裝部署
- 第一節:在centos6上通過Yum安裝Nginx
- 第二節:在Centos7上通過Yum安裝nginx
- 第三節:編譯安裝Nginx服務
- 第四節: Nginx編譯參數詳解
- 第五節: Nginx的啟動腳本
- 第六節:Nginx的shell腳本安裝
- 第七節:nginx服務的平滑升級
- 第三章:Nginx服務基礎配置
- 第一節: 配置運行nginx服務器用戶
- 第二節:配置運行生成的worker processes進程數
- 第三節:配置Nginx進程PID存放路徑
- 第四節:定義MIME類型
- 第五節:自定義nginx的訪問日志
- 第六節:主配置段(main)常用的配置
- 第七節:http段(核心)常用的配置命令
- 第八節:配置nginx中的location段
- 第九節: 基于IP的訪問控制
- 第十節:基于用戶的訪問控制
- 第十一節:Nginx定義status狀態頁
- 第十二節:Nginx服務器Rewrite重寫
- 第十三節:Nginx服務配置防盜鏈
- 第十四節:nginx軟件的優點
- 第四章:Nginx服務器的優化配置
- 第一節:nginx.conf配置文件基本參數優化
- 第二節:fastcgi調優
- 第三節:Gzip調優
- 第四節:expires緩存調優
- 第五節:內核參數優化
- 第六節: Nginx之——413 修改上傳文件大小限制
- 第五章:Nginx虛擬主機的配置
- 第一節:基于名稱的虛擬主機
- 第二節:通過shell腳本添加虛擬主機
- 第六章:Nginx常用模塊指令詳解
- 第一節:ngx_http_realip_module
- 第二節:http_image_filter_module
- 第三節:tengine中配置consistent hash module
- 第四節:ngx_http_userid_module
- 第七章:Nginx服務器配置HTTPS訪問
- 第八章: Nginx服務器日志切割
- 第二部分:Nginx負載均衡反向代理服務
- 第一章:Nginx進階參數詳解
- 第一節:proxy_module參數詳解
- 第二節:upstream_module參數詳解
- 第四章:Nginx反向代理服務
- 第一節:Nginx反向代理配置參數詳解
- 第二節:Nginx反向代理服務配置案例
- 第三節:Nginx緩存
- 第四節: Nginx中fastcgi模塊
- 第五節:nginx+fastcgi實現動靜分離架構
- 第五章:Nginx負載均衡
- 第一節:ngx_http_upstream_module常見指令
- 第二節:調度方法
- 第三節:健康狀態檢查