• 0811Nginx访问日志设置


    12.10 Nginx访问日志

    日志格式

    vim /usr/local/nginx/conf/nginx.conf   搜索log_format定义名字,后面定义下面这些

    $remote_addr

    客户端IP(公网IP)百度搜ip可以查到

    $http_x_forwarded_for

    代理服务器的IP,考试模拟网站就是代理ip

    $time_local

    服务器本地时间

    $host

    访问主机名(域名)

    $request_uri

    访问的url地址

    $status

    状态码,301404

    $http_referer

    referer

    $http_user_agent

    user_agent

     除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加访问日志路径

     vim /usr/local/nginx/conf/vhost/test.com.conf

     access_log /tmp/test.com.log这就是虚拟主机日志地址 ,加到任意一行

     

     这里的access_log /tmp/test.com.log quyifan

     就是在/usr/local/nginx/conf/nginx.conf中定义的日志格式名字quyifan

     /usr/local/nginx/sbin/nginx -t

     /usr/local/nginx/sbin/nginx -s reload

     curl -x127.0.0.1:80 test.com -I

     curl -x127.0.0.1:80 test2.com -I

     cat /tmp/test.com.log 查看上面日志

     

    日志只记录了成功登陆的信息,任何域名都跳转到test.com,但是乱写的不记录在日志

    12.11 Nginx日志切割

    没有自带切割工具,可以写一个日志切割脚本

    这里自定义shell脚本

     vim /usr/local/sbin/nginx_log_rotate.sh  shell脚本保存在这里

    配置如下

    #! /bin/bash d=`date -d "-1 day" +%Y%m%d` #定义切割时间(切割一天前的日志) logdir="/tmp/" #此处指定要切割的日志路径(该路径来自虚拟主机配置文件) nginx_pid="/usr/local/nginx/logs/nginx.pid" #调用pid的目的是执行命令:/bin/kill -HUP `cat $nginx_pid` #该命令等价于命令:nginx -s reload(重新加载文件),确保与虚拟主机配置文件变更保持同步 #该地址来自nginx配置文件 cd $logdir for log in `ls *.log` do    mv $log $log-$d done #此处使用通配进行循环,对所有复合条件的日志文件进行切割 /bin/kill -HUP `cat $nginx_pid` #执行此命令进行重载生成新的日志文件来记录新的日志

     执行该脚本,-x显示脚本执行过程:

    sh -x /usr/local/sbin/nginx_log_rotate.sh

     任务计划:

     0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh

    删除30天前的日志 find /tmp/ -name *.log-* -type f -mtime +30 | xargs rm

     

    这里日志创建好,今天时间没到还没切割,所以只有test.com.log有信息

    12.12 静态文件不记录日志和过期时间

    vim /usr/local/nginx/conf/vhost/test.com.conf

    配置如下

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$   正则

        {

              expires      7d;  (上下写一起是因为设置的过期时间不同)

              access_log off;

        }

    location ~ .*.(js|css)$

        {

              expires      12h;

              access_log off;

        }

    location指定静态文件 expires指定过期时间 access_log配置成off就代表不记录日志

     /usr/local/nginx/sbin/nginx -t

     /usr/local/nginx/sbin/nginx -s reload

    测试:加两个后缀为1.gif2.js的文件

    echo "11111111111" > /data/wwwroot/test.com/1.gif

    echo "22222222222" > /data/wwwroot/test.com/2.js

    touch /data/wwwroot/test.com/1.jss

    curl -x127.0.0.1:80 test.com/1.gif

    curl -x127.0.0.1:80 test.com/2.js

    curl -x127.0.0.1:80 test.com/1.jss

    然后查看日志 cat /tmp/test.com.log 没有记录gifjs的日志

     

    最后日志没有记录jpgjs,记录了错误的404jss,实验成功

    jpgjs的过期时间不同,查看如下

     

  • 相关阅读:
    centos6.5 源码安装 gtk 环境
    世界的复杂性
    将 shell 脚本打包到 rpm 包中
    使用 ipdb 调试 Python
    shell 处理 文件名本身带星号的情况
    如果可以更更完善,为什么不呢?
    比较有名的开源项目
    各种小工具合集
    各种版本对应关系
    dns相关
  • 原文地址:https://www.cnblogs.com/0329linux/p/7371382.html
Copyright © 2020-2023  润新知