• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

【Linux运维架构】第九篇 Nginx日志管理

Linux架构 lixian 5年前 (2020-02-22) 723次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、nginx日志介绍

Nginx有非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志。

1.日志格式通过log_format命令定义格式

在nginx配置文件里,有一串log_format日志格式。

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

access_log  /var/log/nginx/access.log  main;

2.log_format常用变量

$remote_addr        # 记录客户端IP地址
$remote_user        # 记录客户端用户名
$time_local         # 记录通用的本地时间
$time_iso8601       # 记录ISO8601标准格式下的本地时间
$request            # 记录请求的方法以及请求的http协议
$status             # 记录请求状态码(用于定位错误信息)
$body_bytes_sent    # 发送给客户端的资源字节数,不包括响应头的大小
$bytes_sent         # 发送给客户端的总字节数
$msec               # 日志写入时间。单位为秒,精度是毫秒。
$http_referer       # 记录从哪个页面链接访问过来的
$http_user_agent    # 记录客户端浏览器相关信息
$http_x_forwarded_for #记录用户真实IP地址
$request_length     # 请求的长度(包括请求行, 请求头和请求正文)。
$request_time       # 请求花费的时间,单位为秒,精度毫秒
# 注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客户端真实的IP地址。
# $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,
# 增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。

二、nginx日志切割

使用logrotate切割日志

[root@web01 nginx]# cat /etc/logrotate.d/nginx 
/var/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        not if empty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

/var/log/nginx/*.log ——- #要切割的日志存放位置
daily ——————– #每天切割日志
missingok ————- #日志丢失忽略
rotate 52 —————— #日志保留52天
compress ———— #日志文件压缩
delaycompress ——- #延迟压缩日志
not if empty ————- #不切割空文件
create 640 nginx adm —— #日志文件权限
sharedscripts ——- #脚本起始
postrotate ————- #切割日志执行的命令,标注脚本内容
endscript ———— #脚本结束

【Linux运维架构】第九篇 Nginx日志管理

三、日志配置实例

server {
    listen 80;
    server_name code.oldboy.com;

    #将当前的server网站的访问日志记录至对应的目录,使用main格式
    access_log /var/log/nginx/code.oldboy.com.log main;
    location / {
        root /code;
    }

    #当有人请求改favicon.ico时,不记录日志
    location /favicon.ico {
        access_log off;
        return 200;
    }
}

----------/js/common.js 放入js.log这个文件中------------------

server {
    listen 80;
    server_name code.oldboy.com;

    #将当前的server网站的访问日志记录至对应的目录,使用main格式
    access_log /var/log/nginx/code.oldboy.com.log main;

   location /js/common.js {
   access_log /var/log/nginx/js.log main;
}
}

本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:【Linux运维架构】第九篇 Nginx日志管理
喜欢 (0)

您必须 登录 才能发表评论!