一文详细介绍查看和启用nginx日志(access.log和error.log),nginx错误日志的安全级别,自定义访问日志中的格式

1. 文章引言


我们在实际工作中,经常使用到日志。

日志在一个系统中是非常重要的,它可以监控一个应用程序的活动,因为它们为你提供有用的调试信息,并使你能够分析一个Web服务器的所有方面。

像其他软件应用程序一样,Nginx也会将诸如网站访问者、遇到的问题等事件保存到日志文件中。

这些有用的记录信息被用来采取先发制人的措施,以便处理日志事件中的重大严重差异。

Nginx中记录事件的日志,有如下两种类型:

  1. 一种是访问日志:access.log

  2. 一种是错误日志:error.log

在这里插入图片描述

如果你安装Nginx后,不知道Nginx日志的存放地址,可以采用如下方式:

  1. 首先,使用如下命令查看Nginx的安装目录
[root@test ~] which nginx
/usr/local/nginx/sbin/nginx
  1. 其次,使用如下命令进入到log目录中
[root@test local] cd /usr/local/nginx

[root@test nginx] ls
conf logs sbin ... 

[root@test nginx]cd ./logs

[root@test logs] ls -l
total 92540
-rw-r--r-- 1 root root 92712667 Apr 19 15:16 access.log
-rw-r--r-- 1 root root  2033057 Apr 19 15:00 error.log
-rw-r--r-- 1 root root        6 Apr 18 09:20 nginx.pid

如此,你便可以访问Nginx日志的存放地址。

如果随着Nginx版本的升级,Nginx默认的访问地址不在该目录下,你可以通过如下命令查看Nginx的配置文件:

[root@test nginx] cd /usr/local/nginx/conf

[root@test conf] cat nginx.conf

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /usr/local/nginx/logs/nginx.pid;
...
http {
    
    
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;
    ......
    }
}

在配置文件中,你可以看到nginxaccess_logerror.log的地址,只不过注释了。

【注意】这里的地址是相对地址,相对于Nginx安装目录的地址。

2. Nginx访问日志(access.log)

2.1 简述访问日志


所有与网站访问者有关的活动都记录在访问日志中,如下图所示:

在这里插入图片描述

在这种日志中,你可以看下到最近访问过如下信息:

  1. 请求接口、方法(get,post...)等

  2. Nginx是如何响应客户端请求的

  3. 客户端的IP地址

  4. 客户端使用的是什么浏览器

通过使用访问日志的信息,你可以监控流量,找到网站在一段时间内的使用情况。

如果你正确地监控访问日志,那么你可以很容易地发现一些由用户发送的异常请求,从而检查部署的应用程序的缺陷。

2.2 启用Nginx访问日志


您可以在服务器部分或HTTP中使用access_log指令启用访问日志,如下代码所示:

access_log log_file log_format ;

log_file是强制性的,而log_format是可选的。

如果您未提及日志格式,则将以默认的组合格式键入日志。

默认情况下,访问日志是在Nginx配置文件中定义的。

因此,所有虚拟主机的访问日志将存储在同一配置文件中,如下代码所示:


http {
    
    
      ...
      access_log  /var/log/nginx/access.log;
      ...
}

建议通过记录到新的单独文件中,来分开所有虚拟主机的访问日志,如下代码所示:

http {
    
    
      ...
      ...
      access_log  /var/log/nginx/access.log;
   
         server {
    
    
                  listen 80;
                  Server_name test.com
                  access_log  /var/log/nginx/test.access.log;
                  ...
                  ...
                }
}

重新加载新的Nginx配置。

现在,您可以使用以下命令,在文件/var/log/nginx/test.access.log中访问test.com域的访问日志:

sudo tail -f /var/log/nginx/test.access.log

2.3 自定义访问日志中的格式

我们解释一个定义自定义访问日志格式的示例。

默认情况下,访问日志以组合日志格式记录。

因此,您可以使用gzip response的值扩展预定义格式的压缩率,如下代码所示:


http {
    
    
            log_format custom '$remote_addr - $remote_user [$time_local] '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent" "$gzip_ratio"';

            server {
    
    
                    gzip on;
                    ...
                    access_log /var/log/nginx/test.access.log custom;
                    ...
            }
}

Nginx的配置进行所有更改后,请重新加载Nginx。

接着运行tail命令以在事件日志的末尾显示gzip比率,如下代码所示:

$ sudo tail -f /var/log/nginx/example.access.log

3. Nginx错误日志(error.log)

3.1 简述错误日志


如果Nginx突然停止运行或无法正常工作,它将在错误日志中记录所有事件,如下图所示:

在这里插入图片描述

因此,使用错误日志,您可以找到更多详细信息。

它还记录警告,但无法识别已发生的问题。

3.2 启用错误日志


error_log指令的以下语法:

error_log log_file log_level ;

log_file表示日志文件路径,log_level标识日志事件的安全级别。

我们在下面提到了一个示例,其中,在服务器上下文中的error_log指令中执行覆盖:


http {
    
    
       ...
       ...
       error_log  /var/log/nginx/error_log;
       server {
    
    
                listen 80;
                server_name example1.com;
                    error_log  /var/log/nginx/example1.error_log  warn;
                        ...
       }
       server {
    
    
                listen 80;
                server_name test2.com;
                    error_log  /var/log/nginx/test2.error_log  debug;
                        ...
   }
}

当需要禁用错误日志时,请将日志文件的名称分配给/dev/null,如下代码:

error_log/dev/null;

3.3 Nginx错误日志的安全级别


您可以在错误日志中使用以下安全级别:

  1. emerg:当系统不稳定时,用于紧急消息

  2. alert:生成严重问题的警报消息。

  3. crit:用于紧急情况下立即处理。

  4. error:处理页面时,可能会发生错误。

  5. warn:用于警告消息

  6. notice:您也可以忽略的通知日志。

  7. info:有关信息,消息

  8. debug:指向用于调试信息的错误位置。

4. 文末总结


Nginx访问和错误日​​志对于记录某些活动非常有用。

以上就是如何在Linux系统上启用和查看这些类型的Nginx日志的全部内容。

猜你喜欢

转载自blog.csdn.net/lvoelife/article/details/130223766