Nginx访问日志、日志不记录静态文件、日志切割

一世执手 提交于 2020-03-02 03:59:55

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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!