【问题标题】:Nginx cannot write into access.logNginx 无法写入 access.log
【发布时间】:2012-03-22 02:45:51
【问题描述】:

当 nginx 启动时,它会创建大小为 0 的日志文件“access.log”。但是里面没有写日志。 error.log 工作正常。

nginx.conf:

http {
    access_log /usr/local/webserver/nginx/logs/access.log combined;
    ....
}

日志文件是:

-rw-r--r--  1 root root    0 Mar  4 00:54 access.log
-rw-r--r--  1 root root 3903 Mar  4 00:54 error.log

我完全糊涂了。 @_@

是权限问题吗?

但是,在 nginx.conf 的后面部分,在 server {} 部分,access_log 有效!为什么 http {} 部分不起作用?

【问题讨论】:

    标签: linux nginx amazon-ec2 logfile


    【解决方案1】:

    我遇到的一种情况是磁盘满了

    【讨论】:

      【解决方案2】:

      根据您的配置,nginx 主进程和工作进程可能以不同的用户身份运行。

      查看 nginx 进程的用户和组:

      ps -eo "%U %G %a" | grep nginx
      
      root     root     nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
      www-data www-data nginx: worker process
      

      工作进程用户需要日志文件的写入权限。

      查看access.log的文件权限:

      ls -l /var/log/nginx/access.log
      -rw-r----- 1 www-data www-data 0 Apr 29  2012 /var/log/nginx/access.log
      

      在这种情况下,访问日志归 nginx 工作进程所有,并且具有写入权限。

      另见 nginx http_log_module docs。

      作为次要问题,一旦 nginx 日志达到一定大小,logrotate cronjob 可能会对其进行轮换。当新的日志文件被创建时,它应该被创建为拥有者、组和权限,以允许 nginx 工作进程对其进行写入。

      这些 nginx 的日志轮换设置在 /etc/logrotate.d/nginx 中定义

      另见log rotation guide for ubuntu

      【讨论】:

      • logrotate 不是一个守护进程,它是一个 cronjob
      • 好点@Sebastian。在这种情况下,守护进程的定义源自古希腊语:“仁慈或仁慈的自然精神”。 ;-)
      • logrotate 的本性 :) @Mark
      【解决方案3】:

      我有一个类似的问题,访问日志文件没有被写入,但错误日志文件工作正常。权限对我来说也很好。我通过强制 nginx 进程重新加载日志文件来修复它自己使用

      kill -USR1 `cat /var/run/nginx.pid`
      

      /var/run/nginx.pid 是你的 nginx PID 文件的路径

      【讨论】:

      • 只是在 Ubuntu 上做 sudo service nginx restart 让它开始为我再次编写 Nginx acces.log。 (在我更正了正确用户的权限之后)
      【解决方案4】:

      您必须将用户和组 nginx 绑定到您的日志文件。

      chown nginx:nginx access.log
      chown nginx:nginx error.log
      

      你能发布你完整的 nginx.conf 吗?以 pastebin 为例?

      编辑:在每个部分中,您必须定义“组合”之类的关键字!

      【讨论】:

      • 它是 ubuntu 中的 www-data:www-data
      • 如果 nginx 无法写入它最初创建的日志,chmod 文件并不能解决问题的根本原因。您可能需要查看 nginx 配置。
      • @holms 默认是,是的。
      猜你喜欢
      • 2023-03-12
      • 2020-06-20
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多