【Nginx 日志配置】【访问日志log_format】【错误日志error_log 指令】【Nginx的日志轮转】

Nginx 日志配置

1、Nginx 日志介绍
Nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的支持,日志格式通过 log_format 命令来定义,日志对于统计和排错是非常有利的,下面总结了 nginx 日志相关的配置 包括 access_logrewrite_logerror_log
设置访问日志 access_log path 样式;
2、作用域
可以应用access_log指令的作用域分别有httpserverlocation。也就是说,在这几个作用域外使用该指令,Nginx会报错。

3、log_format 指令
Nginx 预定义了名为 combined 日志格式,如果没有明确指定日志格式默认使用该格式:

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

在这里插入图片描述

log_format 指令中常用的一些变量:

在这里插入图片描述

访问日志 案例

面试时:注意日志里面的ip地址一定要在第一列。
访问日志 自定义 server下面写
我这里是使用的yum 安装的nginx 支持在子配置文件下 编写server文件

使用log_format指令定义了一个main的格式,并在access_log指令中引用了它。假如客户端有发起请求:ip,我们看一下我截取的一个请求的日志记录:
针对 server块
步骤:/etc/nginx/conf.d/ 进入这个目录下
步骤:vim ceshi.conf 编写一个 子配置文件以conf 结尾

log_format  ming  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
server {
    listen       80;
    server_name  localhost;

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

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

在这里插入图片描述
进行测试 查看 cat /var/log/nginx/ming.access.log 会记录在你创建的文件下
在这里插入图片描述

可以配置段:http, stream, server, location作用域。

针对 location块
编写配置文件

log_format  qing  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        access_log  /var/log/nginx/qing.access.log  qing;
    }
}

在这里插入图片描述
测试 cat qing.access.log
在这里插入图片描述

error_log 指令 错误访问日志 级别

在这里插入图片描述

错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息。

语法

error_log file [level];
Default:
error_log logs/error.log warn;

file 参数指定日志的写入位置。

level 参数指定日志的级别。level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值。可以看到其取值范围是按紧急程度从低到高排列的。只有日志的错误级别等于或高于level指定的值才会写入错误日志中。
基本用法
error_log /var/logs/nginx/nginx-error.log;
配置段:http, mail, stream, server, location作用域。

例子中指定了错误日志的路径为:/var/logs/nginx/nginx-error.log,日志级别使用默认的 error

跟上面 操作一样 ,我这里就不一一举例示范拉

rewrite_log 指令 用户跳转日志 一般不用

ngx_http_rewrite_module模块提供的。用来记录重写日志的。对于调试重写规则建议开启,启用时将在error log中记录重写日志。
基本语法:

rewrite_log on | off;

默认值: 
rewrite_log off;

配置段: http, server, location, if作用域。

配置流量控制相关功能

配置日志记录

默认情况下,Nginx会在日志中记录由于流量限制而延迟或丢弃的请求,如下所示:
在这里插入图片描述
设置错误日志 记录等级

       limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
        upstream xianliu {
                server 196.196.196.131:80 weight=1 max_fails=1 fail_timeout=1;
                }
        server {
                listen 80;
                server_name localhost;
                location / {
                        limit_req zone=mylimit; #burst=10;
                        limit_req_log_level warn;
                        limit_req_status  505;
                        proxy_pass http://xianliu;
                        proxy_set_header Host $host:$server_port;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        }
        }

在这里插入图片描述
继续访问测试,看error.log日志
在这里插入图片描述
2、发送到客户端的错误代码
一般情况下,客户端超过配置的流量限制时,Nginx响应状态码为503(Service Temporarily Unavailable)。可以使用limit_req_status指令来设置为其它状态码(例如下面的404状态码):

        limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
        upstream xianliu {
                server 196.196.196.131:80 weight=1 max_fails=1 fail_timeout=1;
                }
        server {
                listen 80;
                server_name localhost;
                location / {
                        limit_req zone=mylimit; #burst=10;
                        limit_req_log_level warn;
                        limit_req_status  505;
                        proxy_pass http://xianliu;
                        proxy_set_header Host $host:$server_port;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        }
        }

在这里插入图片描述
测试查看
在这里插入图片描述
5、Nginx 流量控制总结

以上已经涵盖了Nginx提供的“流量限制”的很多功能,包括为HTTP请求的不同location设置请求速率,给“流量限制”配置burst参数。

Nginx 日志配置总结

Nginx中通过access_logerror_log指令配置访问日志和错误日志,通过log_format我们可以自定义日志格式。

详细的日志配置信息可以参考Nginx官方文档

Nginx的日志轮转**

[root@192 ~]# rpm -ql nginx |grep log
/etc/logrotate.d/nginx
/var/log/nginx
[root@192 ~]# vim /etc/logrotate.d/nginx
/var/log/nginx/*.log {           #指定需要轮转处理的日志文件
        daily     #日志文件轮转周期,可用值为: daily/weekly/yearly
        missingok               # 忽略错误信息
        rotate 7               # 轮转次数,即最多存储7个归档日志,会删除最久的归档日志
        minsize 5M	       #限制条件,大于5M的日志文件才进行分割,否则不操作
        dateext             # 以当前日期作为命名格式
        compress         # 轮循结束后,已归档日志使用gzip进行压缩
        delaycompress    # 与compress共用,最近的一次归档不要压缩
        notifempty         # 日志文件为空,轮循不会继续执行
        create 640 nginx nginx     #新日志文件的权限
        sharedscripts     #有多个日志需要轮询时,只执行一次脚本
        postrotate    # 将日志文件转储后执行的命令。以endscript结尾,命令需要单独成行
                if [ -f /var/run/nginx.pid ]; then    #判断nginx的PID。# 默认logrotate会以root身份运行
                        kill -USR1 cat /var/run/nginx.pid
                fi
        endscript
}

执行命令:
[root@192 nginx]# /usr/sbin/logrotate -f /etc/logrotate.conf
创建计划任务:
[root@192 nginx]# crontab -e
59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.conf
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值