nginx入门2-日志配置详解
在nginx的安装目录下面有一个logs,里存放的是nginx的一些日志文件。这些日志文件会在nginx每次重启都会根据配置文件检查这些日志文件是否存在,如果不存在会自动生成。
不同的虚拟主机可以有不同的日志配置
1、nginx日志配置详解
如果要使用日志记录的话需要在配置文件中做一些配置:
error_log logs/error.log; 错误日志的存放目录,及文件名称。
error_log logs/error.log notice; 日志等级
error_log logs/error.log info;
配置http请求的访问日志:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
日志格式设置(可自己定义日志格式):
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从那个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
access_log logs/host.access.log main; #格式是 access_log 路径及文件名 日志保存格式!
access_log logs/host.access.404.log log404;
用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;
2. 日志备份
#!/bin/sh
BASE_DIR=/usr/local/nginx
BASE_FILE_NAME=access.log
CURRENT_PATH=$BASE_DIR/logs
BAK_PATH=$BASE_DIR/datalogs
CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME
BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`
BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME
echo $BAK_FILE
$BASE_DIR/sbin/nginx -s stop
mv $CURRENT_FILE $BAK_FILE
$BASE_DIR/sbin/nginx
然后使用crontab -e 命令输入*/1 * * * * sh /usr/local/nginx/sbin/log.sh
上面那条命令的作用是每隔一分钟执行一次备份。