如何设置单独的日志文件,以记录 nginx 中的 400 错误请求错误

如何设置单独的日志文件,以记录 nginx 中的 400 错误请求错误

我有一个 nginx 来托管 django 应用程序。我需要将网页上的 400 Bad Request 错误记录到 nginx 配置中的单独日志文件中。

我找到的文档是在发生错误时给出单独的响应。我使用 nginx 配置尝试了以下代码:

error_page 400 /400.html;

location /400.html {
    internal;
}

但是上面的代码没有记录 400 错误。

答案1

您的 snipet 中缺少错误日志的定义。

error_page 400 /400.html;

location /400.html {
    internal;
    error_log logs/400.log error;
}

如果您需要文件http://nginx.org/en/docs/ngx_core_module.html#error_log

答案2

需要为错误设置单独的访问日志。术语可能会令人困惑,引用文档

NGINX 将遇到的不同严重程度的问题信息写入错误日志。

NGINX 在处理请求后立即将有关客户端请求的信息写入访问日志中。

因此,即使 400 是 HTTP 错误代码,也通常会根据配置在访问日志中找到它。

使用问题中的例子:

error_page 400 /400.html;

location /400.html {
    access_log  /var/log/nginx/400.log  main;
    error_log   /var/log/nginx/400_error.log info;
}

同样的办法也可以在服务器块中使用,具体方法视情况而定。本示例假设log_format main在其他地方有定义,并且您也对实际错误感兴趣。

相关内容