Nginx之访问日志

最近整理公司服务器,对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之访问日志)