nginx没有将错误记录到日志文件中

前端之家收集整理的这篇文章主要介绍了nginx没有将错误记录到日志文件中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我最近将我的CentOS 7机器从Apache移到了Nginx,我仍在研究这些差异.我只注意到一个服务器块的一个问题是访问和错误日​​志文件实际上没有被记录,因此很难解决潜在的问题.

我的网站的服务器块如下所示:

server {
    listen       80;
    server_name  example.com;
    root         /var/www/example.com/public_html;
    index        index.PHP;
    access_log   /var/www/example.com/logs/example.com_access.log;
    error_log    /var/www/example.com/logs/example.com_error.log error;

    location / {
        index index.PHP index.html;
    }

    location /reports {
        autoindex on;
    }

    location ~ \.PHP${
        try_files          $uri =404;
        fastcgi_pass       unix:/var/run/PHP-fpm/PHP-fpm.sock;
        fastcgi_param      SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include            fastcgi_params;
    }

    error_page 404 /var/www/html/404.html;
    error_page 500 502 503 504 /var/www/html/50x.html;

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)${
        expires max;
        log_not_found off;
    }

    location /robots.txt {
        #access_log off;
        #log_not_found off;
    }

    location ~ /\.ht {
        deny all;
    }
}

我不确定为什么不保留日志.我比较了我的服务器块上的文件权限,它们都共享相同的权限.

-rw-r--r--. 1 Nginx root    0 Nov  7 02:54 example.com_access.log
-rw-r--r--. 1 Nginx root    0 Nov  7 02:54 example.com_error.log

为什么没有存储日志可能会出现什么问题?

最佳答案
这里的Nginx语法是正确的,因此问题与服务器环境有关.以下是一些可以调试它的方法.

>模拟Web服务器将要执行的操作.尝试使用Web服务器将使用的同一用户写入文件.如果Web服务器用户Nginx,那么以root身份尝试:
su -m Nginx -c’echo“testing”>> /var/www/example.com/logs/example.com_error.log’
>观察Web服务器正在做什么.作为一个临时的调试措施,在你的Nginx配置的顶层添加daemon off.然后停止Nginx并从它开始strace Nginx | tee Nginx-output.txt.然后它将在前台运行并将它对STDOUT进行的所有系统调用喷出,这也将在Nginx-output.txt中捕获. Do Something触发错误,然后您可以停止Nginx,删除“守护进程”行并在查看调试日志时正常启动它.在其中搜索有关文件名的提及.也许你会在那里找到它,系统调用返回错误试图访问该文件.

另一种可能性是你不同意Nginx关于应该出现在错误日志中的内容.如果是Nginx -V | grep debug获取结果,然后您可以将error_log的最后一个参数从error更改为debug.重新加载Nginx并点击域中不存在的URL,这应该会生成大量日志记录.完成后关闭调试日志记录.

猜你在找的Nginx相关文章