本文概述了如何配置和读取Nginx访问和错误日志,即配置Nginx Error和Access Log,以Linux操作系统平台为例。
前言 Nginx是一个开源的高性能HTTP和反向代理服务器,负责处理Internet上一些最大站点的负载,在管理NGINX网络服务器时,您要执行的最常见的任务之一就是检查日志文件。 在对服务器或应用程序问题进行故障排除时,知道如何配置和读取日志非常有用,因为它们提供了详细的调试信息。 Nginx用两种类型的日志记录其事件记录:访问日志和错误日志,访问日志记录有关客户端请求的信息,错误日志记录有关服务器和应用程序问题的信息。 安装Nginx参考:在Debian 10 Linux上安装Nginx的方法。
配置访问日志 每当处理客户请求时,Nginx都会在访问日志中生成一个新事件,每个事件记录都包含一个时间戳,并包含有关客户端和所请求资源的各种信息,访问日志可以向您显示访问者的位置,访问者访问的页面,他们在页面上花费的时间等等。 log_format指令允许您定义记录消息的格式,access_log指令启用并设置日志文件的位置和使用的格式。 access_log指令的最基本语法如下: access_log log_file log_format; 其中log_file是日志文件的完整路径,而log_format是日志文件使用的格式。 可以在http、server或location指令块中启用访问日志。 默认情况下,访问日志在Nginx主配置文件中的http指令中全局启用。 /etc/nginx/nginx.conf: http { ... access_log /var/log/nginx/access.log; ... } 为了获得更好的可维护性,建议为每个服务器块设置一个单独的访问日志文件,服务器指令中设置的access_log指令将覆盖http(更高级别)指令中的一个指令。 /etc/nginx/conf.d/domain.com.conf: http { ... access_log /var/log/nginx/access.log; ... server { server_name domain.com access_log /var/log/nginx/domain.access.log; ... } } 如果未指定日志格式,Nginx将使用如下所示的预定义组合格式: log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; 要更改日志记录格式,请覆盖默认设置或定义一个新设置,例如,要定义一个名为main的新日志记录格式,它将使用显示X-Forwarded-For标头的值扩展组合格式,并在http或server指令中添加以下定义: log_format custom '$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 custom; 而访问日志提供了非常有用的信息,它会占用磁盘空间,并可能影响服务器性能,如果服务器资源不足,并且网站繁忙,则可能要禁用访问日志,为此,请将access_log指令的值设置为off: access_log off;
配置错误日志 Nginx在错误日志文件中写入有关应用程序和常规服务器错误的消息,如果您在Web应用程序中遇到错误,则错误日志是开始进行故障排除要做的第一件事情。 error_log伪指令启用并设置错误日志的位置和严重性级别,它采用以下形式,可以在http,服务器或位置块中进行设置: error_log log_file log_level log_level参数设置日志记录级别,以下是按严重性(从低到高)列出的级别: debug-调试消息。 info-参考消息。 notice-注意。 warn-警告。 error-处理请求时出错。 crit-关键问题,需要迅速采取行动。 alert-警报,必须立即采取行动。 emerg-紧急情况,系统处于无法使用状态。 每个日志级别包括更高级别,例如,如果您将日志级别设置为警告,Nginx还将记录错误,暴击、警报和紧急消息。 如果未指定log_level参数,则默认为error。 默认情况下,error_log指令在nginx.conf主文件内的http指令中定义。 /etc/nginx/nginx.conf: http { ... error_log /var/log/nginx/error.log; ... } 与访问日志相同,建议为每个服务器块设置一个单独的错误日志文件,该文件将覆盖从更高级别继承的设置。 例如,要将domain.com的错误日志设置为警告,请使用: http { ... error_log /var/log/nginx/error.log; ... server { server_name domain.com error_log /var/log/nginx/domain.error.log warn; ... } } 每当您修改配置文件时,都必须重新启动Nginx服务,以使更改生效。
日志文件的位置及了解Nginx日志文件 在大多数Linux发行版(例如Ubuntu、CentOS和Debian)上,默认情况下,访问和错误日志位于/var/log/nginx目录中。 接下来,让我们讲解阅读和了解Nginx日志文件。 您可以使用标准命令(例如cat、less、grep、cut、awk等)打开和解析日志文件。 这是来自访问日志文件的示例记录,该记录使用默认的Combine Nginx日志格式: 192.168.33.1 - - [15/Oct/2019:19:41:46 +0000] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" 让我们分解一下记录中每个字段的含义: $remote_addr - 192.168.33.1-发出请求的客户端的IP地址。 $remote_user---HTTP身份验证用户,未设置用户名时,此字段显示-。 [$time_local] - [15/Oct/2019:19:41:46 +0000]-本地服务器时间。 "$request" - "GET / HTTP/1.1"-请求类型,路径和协议。 $status - 200-服务器响应代码。 $body_bytes_sent - 396-服务器响应的大小(以字节为单位)。 "$http_referer" - "-"-引用的URL。 "$http_user_agent" - Mozilla/5.0 ...-客户端的用户代理(Web浏览器)。 使用tail命令实时查看日志文件: $ tail -f access.log
结论 日志文件为您提供有关服务器问题以及访问者如何与您的网站进行交互的有用信息。 Nginx允许您根据需要配置访问和错误日志。
相关主题 |