美文网首页nginx
Nginx之访问日志

Nginx之访问日志

作者: 路漫漫在狂奔 | 来源:发表于2016-12-07 16:33 被阅读180次

    最近整理公司服务器,对nginx复习了一遍。记录下,备忘。
    一个合理有效的访问日志记录,将对维护服务器,网站稳定运行,提供有力的帮助

    variable 用到的变量

    工欲善其事必先利其器,日志格式里各个变量都是啥玩意呀?
    
    • $remote_addr:访问的ip (重要)
    • $http_x_forwarded_for:代理携带的原始IP(重要,使用了CDN 服务器,反向代理,负载均衡需要)
    • $request:请求内容(重要)
    • $remote_user:客户端用户名称(这个一般没啥卵用,基本没取到过)
    • $time_local:访问时间
    • $status:请求状态
    • $body_bytes_sent:发送给客户端文件主体内容大小(重要)
    • $http_referer:从啥链接访问过来的(鸡肋的玩意,基本没取到过)
    • $http_user_agent:浏览器(不一定是浏览器)的相关信息,(重要,比如干掉蜘蛛,比如干掉低端的hacker,特别是只会用工具的hacker)
    • 嗯,够用了

    log_format 访问日志格式定制

    知道了以上的变量,该来定制属于自己的日志格式了.这段代码写在`http{}`里
    
    log_format xxlog '$remote_addr [$time_local] "$request" $status <$body_bytes_sent>  "$http_user_agent" $http_x_forwarded_for';
    
    这里需要注意一点,$http_x_forwarded_for不是默认就有的,在有中转服务器(CDN 服务器)设置的
    比如我这业务需要是由A服务器反向代理到B服务器那么我在转发时,就需要带着原始IP:`$remote_addr`
    
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass 192.168.1.2:8081;
    

    access_log 设置日志文件名、位置、格式

    一般写在http{server{}}里,可对不同server指定

    access_log 地址 采用格式;
    access_log /home/wwwlogs/web_access.log xxlog;
    

    一些日志心得脚本

    程序员最擅长干嘛?偷懒呀!偷懒靠什么,脚本呀!
    
    • 当天访问数
    grep "07/Dec/2016" ./web_access.log|wc -l
    
    • 指定ip在当天访问情况
    grep "07/Dec/2016" ./web_access.log|grep "192.168.1.2"
    
    • 日志分割脚本
      #!/bin/bash
        base_path='/home/wwwlogs'
        log_path=$(date -d yesterday +"%Y%m")
        day=$(date -d yesterday +"%d")
        mkdir -p $base_path/$log_path
        mv $base_path/web_access.log             
        $base_path/$log_path/web_access_$day.log
        /usr/local/nginx/sbin/nginx -s reopen
      
    • crontab 定时任务,这里为2点1分
      crontab -e
      01 02 * * * /xxx/xxx/nginx_split.sh
      

    相关文章

      网友评论

        本文标题:Nginx之访问日志

        本文链接:https://www.haomeiwen.com/subject/idzdmttx.html