一、Nginx访问日志
1. Nginx访问日志主要有两个参数控制:
log_format #用来定义记录日志的格式(可以定义多种日志格式,取不同名字即可)
access_log #用来指定日至文件的路径及使用的何种日志格式记录日志
2. 设置访问日志的格式,打开配置文件
vim /usr/local/nginx/conf/nginx.conf
搜索关键字log_format就可以找到日志格式配置行
log_format语法格式及参数语法说明如下:
$remote_addr
客户端IP(公网IP)
$http_x_forwarded_for
代理服务器的IP
$time_local
服务器本地时间
$host
访问主机名(域名)
$request_uri
访问的url地址
$status
状态码
$http_referer
referer
$http_user_agent
user_agent
3. 除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加。
打开虚拟主机配置文件添加如下行:
access_log /tmp/1.log combined_realip;
这里的/tmp/1.log为配置文件存放的地址,combined_realip就是在nginx.conf中定义的日志格式名字
4. 更改配置文件后需要重新加载配置文件才会生效
二、Nginx日志切割
所谓自动分割Nginx日志文件,就是指Rotate Nginx log files,即让Nginx每天(或每个星期,可自定义控制)生成一个日志文件,而不是将Nginx所有的运行日志都放置在一个文件中,这样每个日志文件都相对较小,定位问题也更容易
1. 日志切割可以写一个脚本实现,脚本文件最好放在/usr/local/sbin/下
执行命令:
vim /usr/local/sbin/nginx_logrotate.sh
写入如下的内容:
#! /bin/bash
d=`date -d "-1 day" +%Y%m%d`
logdir="/tmp/"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
cd $logdir
for log in `ls *.log`
do
mv $log $log-$d
done
/bin/kill -HUP `cat $nginx_pid`
2. 写完脚本之后在加入仍无计划即可
crontab -e
添加如下内容:
0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh
三、静态文件不记录日志和过期时间
1. 编辑虚拟主机配置文件
vim /usr/local/nginx/conf/vhost/test.com.conf
2. 在配置文件中加入如下内容
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #匹配文件类型
{
expires 7d; #过期时间为7天
access_log off; #不记录该类型文件的访问日志
}
location ~ .*\.(js|css)$ #匹配文件类型
{
expires 12h; #过期时间为12小时
access_log off; #不记录该类型文件的访问日志
}
3. 更改配置文件后需要检查配置文件以及重新加载
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
1. Nginx访问日志主要有两个参数控制:
log_format #用来定义记录日志的格式(可以定义多种日志格式,取不同名字即可)
access_log #用来指定日至文件的路径及使用的何种日志格式记录日志
2. 设置访问日志的格式,打开配置文件
vim /usr/local/nginx/conf/nginx.conf
搜索关键字log_format就可以找到日志格式配置行
log_format语法格式及参数语法说明如下:
$remote_addr
客户端IP(公网IP)
$http_x_forwarded_for
代理服务器的IP
$time_local
服务器本地时间
$host
访问主机名(域名)
$request_uri
访问的url地址
$status
状态码
$http_referer
referer
$http_user_agent
user_agent
3. 除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加。
打开虚拟主机配置文件添加如下行:
access_log /tmp/1.log combined_realip;
这里的/tmp/1.log为配置文件存放的地址,combined_realip就是在nginx.conf中定义的日志格式名字
4. 更改配置文件后需要重新加载配置文件才会生效
二、Nginx日志切割
所谓自动分割Nginx日志文件,就是指Rotate Nginx log files,即让Nginx每天(或每个星期,可自定义控制)生成一个日志文件,而不是将Nginx所有的运行日志都放置在一个文件中,这样每个日志文件都相对较小,定位问题也更容易
1. 日志切割可以写一个脚本实现,脚本文件最好放在/usr/local/sbin/下
执行命令:
vim /usr/local/sbin/nginx_logrotate.sh
写入如下的内容:
#! /bin/bash
d=`date -d "-1 day" +%Y%m%d`
logdir="/tmp/"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
cd $logdir
for log in `ls *.log`
do
mv $log $log-$d
done
/bin/kill -HUP `cat $nginx_pid`
2. 写完脚本之后在加入仍无计划即可
crontab -e
添加如下内容:
0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh
三、静态文件不记录日志和过期时间
1. 编辑虚拟主机配置文件
vim /usr/local/nginx/conf/vhost/test.com.conf
2. 在配置文件中加入如下内容
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #匹配文件类型
{
expires 7d; #过期时间为7天
access_log off; #不记录该类型文件的访问日志
}
location ~ .*\.(js|css)$ #匹配文件类型
{
expires 12h; #过期时间为12小时
access_log off; #不记录该类型文件的访问日志
}
3. 更改配置文件后需要检查配置文件以及重新加载
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload