nginx日志

  • 观察nginx的server段,可以看到如下类似信息:
    #access log logs/host.access.log main;
    这说明该server,它的访问日志的文件是 logs/host.access.log;
    使用的格式“main”格式
    除了main格式,还可以自定义其他格式

    官方文档地址

    http://nginx.org/en/docs/http/ngx_http_log_module.html

    main格式:

    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 客户端地址 192.168.47.100
    $remote_user 客户端用户名称
    $time_local 访问时间和时区 29/Jul/2019:17:00:01 +0800
    $reques 请求的URI和HTTP协议 “GET /article-10000.html HTTP/1.1”
    $http_host 请求地址,即浏览器中你输入的地址(IP或域名) www.baidu.com
    $status HTTP请求状态 200
    $upstream_status upstream状态 200
    $body_bytes_sent 发送给客户端文件内容大小 1547
    $http_referer url跳转来源 https://www.baidu.com/
    $http_user_agent 用户终端浏览器等信息 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;
    $ssl_protocol SSL协议版本 TLSv1
    $ssl_cipher 交换数据中的算法 RC4-SHA
    $upstream_addr 后台upstream的地址,即真正提供服务的主机地址 192.168.47.110:80
    $request_time 整个请求的总时间 0.205
    $upstream_response_time 请求过程中,upstream响应时间 0.002

日志样例:
 192.168.47.1 - - [29/Apr/2019:15:50:19 +0800] “GET /favicon.ico HTTP/1.1” 404 556 “http://192.168.47.110/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36”

  • 自定义日志
    main格式是定义好一种日志的格式并起个名字,便于引用
    以上例子,main类型的日志,记录的remote_addr,http_referer,http_x_forwarded_for等信息

    声明一个独特的log_format并命名

    log_format  mylog'$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" "$http_x_forwarded_for"';
    

    在下面的server/location,我们就可以引用 mylog

    nginx针对不同的server做不同的log

    server {
        listen       80;
        server_name  localhost;
    
        access_log  logs/localhost/host.access.log  mylog;
    
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    
  • 定时任务日志轮询切割
    shell脚本

    #!/bin/sh
    cd /application/nginx/logs
    /bin/mv access.log access_$(date +%F -d '-1day').log
    /application/nginx/sbin/nginx -s  reload
    

    加入定时任务

    00 00 * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&1
    

你可能感兴趣的:(Nginx)