• Nginx 日志文件 access_log 详解


    nginx 日志相关指令主要有两条,

    一条是log_format,用来设置日志格式,
    另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小。
    通俗的理解就是先用log_format来定义自己想用的日志格式,然后在用access_log定义日志时再把定义的log_format名称 跟在后面;

    1、log_format 格式

    log_format name(格式名字) string(格式样式即想要得到什么样的日志内容)

    示例:

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

     

    注释:

    $remote_addr:与 $http_x_forwarded_for 用以记录客户端的ip地址;

    $remote_user:用来记录客户端用户名称;

    $time_local:用来记录访问时间与时区;

    $request:用来记录请求的http的方式与url

    $request_time:用来记录请求时间;

    $status:用来记录请求状态;成功是200

    $body_bytes_sent:记录发送给客户端文件主体内容大小;

    $http_referer:用来记录从那个页面链接访问过来的;

    $http_user_agent:记录客户毒啊浏览器的相关信息。

     


    通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。

    反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用来记录客户端IP地址和客户端请求的服务器地址

    2、用access_log指令日志文件存放路径;
    用了log_format 指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;
    access_log path(存放路径) access(自定义日志名称,和log_format设置的名称一致)

    示例:
    access_log logs/access.log access;

    注意:
    在定义日志目录中要注意的是,nginx进程设置的用户和组必须有对该路径创建文件的权限,
    假设nginx的usr指令设置的用户名 和用户组都是www,而logs 目录的用户名和组是root,那么日志文件将无法被创建。

    nginx做前端代理后,我们发现 HTTP_X_FORWARDED_FOR 无法获取到客户端真实的IP地址了。

     

    原因 nginx 默认并不会增加 X_FORWARDED_FOR 头信息,我们给他加上就好了。简单配置如下:

    location /   

    {   

        proxy_pass          http://www.xxx.com;       proxy_set_header    Host             $host;   

        proxy_set_header    X-Real-IP        $remote_addr;   

        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;    //别忘了这一句   

        proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;              //或是加上这一句       proxy_redirect      default;   

    }

     

    重启nginx加载新配置后,就可以获取客户端真实的IP地址了。

    3.日志切割:
    通过如下方式达到日志切割:

    # vi logcron.sh

    log_dir="/data/logs/nginx"

    date_dir=`date +%Y%m%d`/bin/mkdir -p ${log_dir}/${date_dir} > /dev/null 2>&1

    /bin/mv ${log_dir}/access.log ${log_dir}/${date_dir}/access.logkill -USR1 `cat /opt/nginx/logs/nginx.pid`

    定义一个cron,在每天晚上23:59:50执行这个脚本,后面的事情就交给awstats了。

  • 相关阅读:
    淘宝轮播图带前后按钮
    仿淘宝轮播图 ,需要运动框架
    运动框架
    js 淡入淡出的图片
    js 分享到按钮
    js动态改变时间
    js事件委托,可以使新添加的元素具有事件(event运用)
    div高度自适应(父元素未知,所有高度跟随子元素最大的高度)
    CSS子元素居中(父元素宽高已知,子元素未知)
    css仅在指定ie浏览器生效
  • 原文地址:https://www.cnblogs.com/henrylinux/p/9746878.html
Copyright © 2020-2023  润新知