Code前端首页关于Code前端联系我们

Nginx 教程:配置日志错误和处理的请求

terry 2年前 (2023-09-28) 阅读数 58 #未命名

如何在 NGINX 中配置日志错误和处理的请求。本文涵盖:

  1. 设置错误日志记录
  2. 设置访问日志记录
  3. 启用条件日志记录
  4. 在系统日志中记录

1。设置错误日志

NGINX 会将遇到的不同严重级别问题的信息写入错误日志。指令 error_log 将日志记录设置到特定文件 stderrsyslog,并指定要记录的消息的最低级别。默认情况下,错误日志位于 {NGING_INSTALL_PATH}/logs/error.log(绝对路径取决于操作系统和安装)并记录所有指定严重级别的消息。

以下配置更改错误消息的最小严重性级别从错误记录到警告:在这种情况下,

error_log logs/error.log warn;
## 或者可写为: error_log /var/logs/nginx/error.log warn;
shell

warnerrorcrit已记录警报新兴级别消息。
默认错误记录设置全局有效。要覆盖此设置,请将语句 error_log 放置在配置上下文 main(位于顶层)中。 main 上下文中的设置始终由其他配置级别继承。您还可以在 httpstream服务器位置上提交 级别。 error_log指令并覆盖更高级别的继承设置。如果发生错误,则消息仅写入一个错误日志,即最接近发生错误的级别的日志。但是,如果在同一级别指定多个 error_log 指令,消息将写入所有指定的日志中。

注意:开源 NGINX 版本 1.5.2 中添加了在同一配置级别指定多个 error_log 指令的功能。

2。设置访问日志

处理请求后,NGINX 将有关客户端请求的信息写入访问日志。默认情况下,访问日志位于 {NGING_INSTALL_PATH}logs/access.log{NGING_INSTALL_PATH} 是 nginx 安装目录,信息写入到登录中预定义的组合格式。要覆盖此默认值,请使用 log_format 指令更改记录消息的格式,并使用 access_log 指令指定日志的位置及其格式。日志格式是使用变量定义的。

以下示例定义了一种日志格式,该格式使用指示响应压缩比的值来扩展预定义的组合格式gzip。然后,该格式将应用于启用压缩的虚拟服务器。

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

    server {
        gzip on;
        access_log /spool/logs/nginx-access.log compression;
        ...
    }
}
Shell

以下是读取构建时间值的一些规则:

  • 当跨多个服务器处理请求时,该变量包含多个用逗号分隔的值。
  • 如果存在从一个上游组到另一个上游组的内部重定向,则值之间用分号分隔。
  • 当请求无法到达上游服务器或无法接收完整标头时,该变量包含“0”(零)。
  • 如果连接到上游或从缓存检索响应时发生内部错误,该变量包含“ - ”(连字符)。

可以通过启用名称包含变量的常用日志文件的缓冲日志消息和描述符缓存来优化日志记录。要启用缓冲,请使用 access_log 语句的 buffer 参数指定缓冲区的大小。当下一条日志消息无法放入缓冲区以及其他情况时,缓冲消息将写入日志文件。

要启用日志文件描述符的缓存,请使用 open_log_file_cache 指令。
与指令error_log类似,在特定配置级别定义的指令access_log将覆盖前一级别的设置。当请求处理完成时,消息将写入到当前级别配置的日志中,或者从上一级别继承的日志中。如果为一个级别定义了多个访问日志,则消息将写入所有访问日志。

3。启用条件日志记录

条件日志记录允许您从访问日志中排除琐碎或不重要的日志条目。在 NGINX 中,条件日志记录由 access_log 指令的 if 参数启用。

此示例不包括使用 HTTP 状态代码 2xx(成功)和 3xx(重定向)的请求:

map $status $loggable {
    ~^[23]  0;
    default 1;
}

access_log /path/to/access.log combined if=$loggable;
Shell

4。记录到 Syslog

syslog 实用程序是记录计算机消息的标准,允许在单个 syslog 服务器上收集来自不同设备的日志消息。在 NGINX 中,记录 syslog 使用 syslog 中的指令 error_logaccess_log: 要配置的前缀。

系统日志消息可以发送到服务器 = 可以是域名、IP 地址或 UNIX 域的套接字路径。可以通过使用端口指定域名或 IP 地址来覆盖默认端口 514。可以在 unix: prefix :

error_log server=unix:/var/log/nginx.sock debug;
access_log syslog:server=[2001:db8::1]:1234,facility=local7,tag=nginx,severity=info;
Shell

之后指定 UNIX 域套接字路径。 在此示例中,NGINX 错误日志消息将写入调试日志级别和访问日志的 UNIX 域套接字使用 IPv6 地址和端口 1234 写入系统日志服务器。参数

facility =指定记录消息的程序类型。默认值为 local7。其他可能的值有:authauthprivdaemoncron、 ftp

, lpr 核心邮件新闻syslog用户uucp local0local7。参数

tag = 将自定义标签应用于消息 syslog(在本例中为 nginx)。参数

severity = 设置访问日志的系统日志消息的严重性级别。严重性增加的可能值为:debuginfonoticewarn错误(默认)暴击警报紧急。消息以特定级别和较重级别记录。在我们的示例中,严重性级别错误还启用级别 critalertemerg

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门