Ubuntu系统中,Nginx的错误日志默认存储路径为**/var/log/nginx/error.log**。若需确认自定义路径,可检查Nginx主配置文件(/etc/nginx/nginx.conf)中的error_log指令,或通过sudo nginx -T命令查看完整配置。
tail -f /var/log/nginx/error.log命令,可实时监控错误日志的输出,快速定位正在发生的错误(如服务崩溃、配置变更导致的异常)。tail -n 50 /var/log/nginx/error.log(替换50为所需行数),快速查看最近的错误记录,适用于排查近期出现的问题。grep命令筛选关键错误,例如:
grep "error" /var/log/nginx/error.log:提取所有包含“error”的日志行;grep -o ".*\[error\].*" /var/log/nginx/error.log | cut -d"]" -f2- | sort | uniq -c | sort -nr:统计不同错误类型的出现频率(降序排列),快速识别高频问题。通过错误日志中的状态码或关键词,可快速定位问题根源。以下是Nginx常见的错误及解决步骤:
server_name或location块。/var/www/html);server块和location指令,确保路径匹配正确。client_max_body_size指令(如client_max_body_size 20M;);php.ini中的post_max_size和upload_max_filesize(如均设置为20M);sudo systemctl restart nginx)和PHP-FPM(sudo systemctl restart php7.x-fpm)使配置生效。df -h查看磁盘使用情况,删除无用文件);chown -R www-data:www-data /var/www/html,chmod -R 755 /var/www/html),确保Nginx用户(通常为www-data)有访问权限。proxy_read_timeout设置过短)。sudo systemctl status php7.x-fpm),若未运行则启动(sudo systemctl start php7.x-fpm);proxy_read_timeout 90;、proxy_send_timeout 90;),增加等待时间。root所有,而非www-data);chown -R www-data:www-data /var/www/html(替换为站点实际路径);chmod -R 755 /var/www/html(目录设为755,文件设为644)。sudo lsof -i :80;sudo kill -9 [PID](替换为实际进程ID);sudo systemctl restart nginx。logrotate工具定期压缩、删除旧日志,避免日志文件过大占用磁盘空间。编辑/etc/logrotate.d/nginx文件,添加以下配置(每日轮转、保留14天、压缩):/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
保存后,logrotate会自动按配置执行(每日凌晨)。通过以上步骤,可系统性地分析Nginx错误日志,快速定位并解决常见问题,保障服务器稳定运行。