Nginx访问日志

 一、Nginx访问日志

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

server 
{
    access_log logs/access.log main; #开启自定义格式访问日志

    location /
    {
        index index.html;
    }
    
    location /nacos
    {
        access_log off;  #访问路径满足一定规则,关闭访问日志
        proxy_pass http://cluster;
    }
}

 nginx有一个默认的日志格式,当我们没有在配置文件中明确定义自己的日志格式时,nginx会使用这个默认预定义的日志格式记录日志,这个日志格式的名字叫做“combined”,“combined”日志格式的具体配置如下:

13.31.5.13 - - [14/Sep/2020:09:16:05 +0800] "GET /nacos/v1/ns/instance/list?healthyOnly=false&namespaceId=public&clientIP=13.31.5.13&serviceName=DEFAULT_GROUP%40%40demo&udpPort=38908&encoding=UTF-8 HTTP/1.1" 200 75 "-" "Nacos-Java-Client:v1.1.1"
log_format combined '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

各变量含义:

$remote_addr:记录了客户端的IP地址(普通情况下)。
$remote_user:当nginx开启了用户认证功能后,此变量记录了客户端使用了哪个用户进行了认证。
$time_local:记录了当前日志条目的时间。
$request:记录了当前http请求的方法、url和http协议版本。
$status:记录了当前http请求的响应状态,即响应的状态码,比如200、404等响应码,都记录在此变量中。
$body_bytes_sent:记录了nginx响应客户端请求时,发送到客户端的字节数,不包含响应头的大小。
$http_referer:记录了当前请求是从哪个页面过来的,比如你点了A页面中的超链接才产生了这个请求,那么此变量中就记录了A页面的url。
$http_user_agent:记录了客户端的软件信息,比如,浏览器的名称和版本号。
#这些变量并非一定会有对应的值,如果变量没有对应的值,那么日志中会使用“-”作为默认值进行占位。

参考一 参考二 参考三

二、日志切割

首先将access.log进行重命名

mv access.log access.log-20200915

重命名后,你会发现,nginx日志仍然会写入到“access.log-20200915”文件中,并不会自动创建一个新的“access.log”文件,即使你手动创建了一个新的“access.log”文件,nginx仍然会把日志写入到重命名后的“access.log-20200915”文件中。

出现上述情况,是因为nginx进程读写日志文件时,是通过文件描述符去操作的,虽然我们修改了原“access.log”文件的文件名,但是原文件描述符与文件本身的对应关系仍然存在,所以,单单对文件重命名是不够的,我们需要让nginx重新打开一个新文件,以便将新的日志写入到新文件中。

发送信号

为了达到目的,我们需要向nginx主进程发送一个reopen信号,以便nginx能够打开一个新的日志文件,具体命令如下:

nginx -s reopen

执行完上述命令后,你会发现日志目录中自动生成了一个新的“access.log”文件,再次访问nginx,会发现新生成的日志已经写入到了新生成的“access.log”文件中了。

参考博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值