我有一个 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
在其他地方有定义,并且您也对实际错误感兴趣。