Nginx创建日志文件失败(没有错误)



我按照AWS的说明为弹性beanstalk启用增强的运行状况监视。作为其中的一部分,我需要nginx输出一个日志文件到相应命名的/var/log/nginx/healthd:application.log.YYYY.MM.DD.HH.

由于某些原因,我的nginx不会创建这个文件。它能够在该文件夹中创建application.logaplication.log.1-2-3-4,但不能创建application.log.YYYY.MM.DD.HH。它只是没有出现。没有错误或任何东西

My nginx conf:

worker_processes        auto;
error_log               /var/log/nginx/error.log;
pid                     /var/run/nginx.pid;
worker_rlimit_nofile    32634;
events {
worker_connections  1024;
}
http {
log_format  main  '$remote_addr - $remote_user [[$time_local]] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format healthd '$msec"$uri"'
'$status"$request_time"$upstream_response_time"'
'$http_x_forwarded_for';
server {
listen 80;
if ($time_iso8601 ~ "^(d{4})-(d{2})-(d{2})T(d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/healthd/application.log healthd; #works!
access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; #doesn't!
location / {
...
}
}
}

我以为这是日期的问题,但我已经用:

打印出来了
location /temp {
return 200 "/var/log/nginx/healthd/application.log.$year-$month-$day-$hour";
}

并得到正确的字符串:/var/log/nginx/healthd/application.log.2021-01-29-15.

是什么原因导致的?

这里描述了不直观(但正确)的答案,TLDR必须与nginx的这个属性有关:

在每次写日志时检查请求的根目录是否存在,如果不存在则不创建日志。

一旦你设置了nginx可以找到的根目录,一切都按预期工作。

感谢@Anton Drukh提供的链接。

相关内容

  • 没有找到相关文章

最新更新