zoukankan      html  css  js  c++  java
  • Nginx总结(七)Nginx服务器的日志管理及配置

    前面讲了如何配置Nginx虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html

    今天要说的是如何配置Nginx的日志。

    日志格式

    我们观察Nginx配置文件的server段,可以看到如下类似信息

     #access_log  logs/host.access.log  main;

    这说明 该server, 它的访问日志的文件是  logs/host.access.log ,

    使用的日志格式是”main”格式.

    除了main格式,你可以自定义其他格式.

     

    main格式是什么?

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

        #                  '$status $body_bytes_sent "$http_referer" '

        #                  '"$http_user_agent" "$http_x_forwarded_for"';

     

    main格式是我们定义好一种日志的格式,并起个名字,便于引用。

    以上面的例子,main类型的日志,记录的 remote_addr.... http_x_forwarded_for等选项.

     

    日志内容

    日志格式是指记录哪些选项

    默认的日志格式: main

         log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                                '$status $body_bytes_sent "$http_referer" '

                                '"$http_user_agent" "$http_x_forwarded_for"';

     

    如默认的main日志格式,记录这么几项

    远程IP-  远程用户/用户时间 请求方法(如GET/POST) 请求体body长度 referer来源信息

    http-user-agent 用户代理/蜘蛛 ,被转发的请求的原始IP

    http_x_forwarded_for 在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP

     

    如何配置日志

    1、声明一个新的log_format并命名 mylog

    log_format  mylog '$remote_addr- "$request" '
    
                      '$status $body_bytes_sent "$http_referer" '
    
                      '"$http_user_agent" "$http_x_forwarded_for"';

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

    在server段中,这样来声明

        server {
            listen 8080; #端口
            server_name 192.168.1.204; #域名
    
            location / {
                root /var/www/html; #根目录
                index index.html;
                access_log  logs/access.log  mylog;
            }
        }

     

    3、Nginx允许针对不同的server做不同的Log ,(有的web服务器不支持,如lighttp)

    access_log logs/access_8080.log mylog;  
    声明log log位置 log格式;

    4、查看日志记录

    nginx日志配置完成后,重启,查看日志是否生成成功

    实际应用

    上面的日志配置也只是简单介绍,实际生产环境一般是按日期分割存储的。

    具体实现方式:shell+定时任务+nginx信号管理,完成日志按日期存储

    分析思路

    凌晨00:00:01,把昨天的日志重命名,放在相应的目录下。

    再USR1信息号控制nginx重新生成新的日志文件。

    实现

    1、增加按日期备份日志的脚本

    具体脚本如下:

    #!/bin/bash
    base_path='/usr/local/nginx/logs'
    log_path=$(date -d yesterday +"%Y%m")
    day=$(date -d yesterday +"%d")
    mkdir -p $base_path/$log_path
    mv $base_path/access.log $base_path/$log_path/access_$day.log
    #echo $base_path/$log_path/access_$day.log
    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

    以上脚本来着互联网,大家学习参照下即可。

     

    2、增加定时任务

    01 00 * * * /xxx/path/b.sh  每天0时1分(建议在02-04点之间,系统负载小)

     

    最后

    以上,就把Nginx日志配置介绍完了,是不是很简单的。

     

     

  • 相关阅读:
    HTTP状态码
    Binary String Matching
    三个数从小到大排序
    java控制台输入带空格的字符串
    括号配对问题
    最小生成树之Prim算法(最原始最详细入门)
    hdu 1850 Being a Good Boy in Spring Festival(尼姆博弈)
    hdu 1848 Fibonacci again and again(尼姆博弈)
    hdu 1847 Good Luck in CET-4 Everybody!(入门SG值)
    hdu 1527 取石子游戏(威佐夫博弈)
  • 原文地址:https://www.cnblogs.com/zhangweizhong/p/12342366.html
Copyright © 2011-2022 走看看