Nginx访问日志
- 日志的内容是通过编辑Nginx主配置文件来定义的。
- 日志的格式(显示在日志文件中的内容)
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 客户端ip(公网ip)
- $http_x_forwarded_for 代理服务器ip
- $time_local 服务器本地时间
- $host 访问主机名(域名)
- $request_uri 访问的url地址
- $status 状态码
- $http_referer 从哪个站点跳转到该站点的(直接访问该项为-)
- $http_user_agent 访问方式(通过XX浏览器,或curl方式访问)
自定义一个格式的日志test
- 为了试验效果,我们可以自定义一个日志格式,只记录客户端ip和状态码的日志格式test ,然后把这个格式应用到www.lcblog.com上去。
log_format test '$remote_addr $status' ;
- 应用到blog.abc.com.conf中
access_log /var/log/nginx/host.access.log test;
- 日志中只会记录如下,客户端ip和状态码的信息。
[root@localhost blog.abc.com]# cat /var/log/nginx/host.access.log
192.168.254.1 200
127.0.0.1 301
日志不记录静态文件
- 一个网站里可能包含很多静态文件,比如jpg,png,gif,js,css等,如果每一个访问都记录日志的话,日志文件会疯狂增长,这就需要配置静态文件不记录日志了,在虚拟主机配置文件中添加如下内容。
location ~* \.(png|jpeg|gif|js|css|bmp|flv)$
{
access_log off;
}
-
补充:
-
tail -f /data/logs/bbs.access.log //-f选型可以动态查看一个文件的内容
-
">"可以清空一个文件内容
-
~* 表示不区分大小写的匹配 后面跟正则表达式 .表示任意一个字符
日志切割
- 系统自带日志切割工具logrotate。配置文件是/etc/logratate.conf,子配置文件/etc/lograte.d/*
- nginx 的日志切割配置文件/etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
dateext
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
- 测试执行logrotate -vf /etc/logrotate.d/nginx
来源:oschina
链接:https://my.oschina.net/u/3731306/blog/3011109