Ubuntu 20.04下Nginx配置测试通过但重启失败求排查解决
你当前看到的journalctl日志全是gunicorn的运行日志,其中的Not Found: /是正常的业务访问404报错,和Nginx启动失败完全无关。你无法看到Nginx相关错误的核心原因是执行journalctl -xe时没有加sudo,日志提示已明确说明普通用户无法查看系统级服务的日志,所以没拿到有效报错信息。
排查步骤
- 第一步:先抓取Nginx服务的专属错误日志,执行命令:
sudo journalctl -u nginx.service --since today
该命令会输出今日所有Nginx服务的运行日志,能直接定位启动失败的具体原因。
- 第二步:如果上面的日志还不够直观,可以直接前台启动Nginx打印实时报错:
# 先杀干净可能残留的Nginx进程 sudo pkill -9 nginx # 前台启动输出错误 sudo nginx -g 'daemon off;'
启动时的错误会直接输出到终端,不需要再翻日志。
配置校验通过但启动失败的常见原因
nginx -t仅校验配置语法合法性,不会校验运行时的权限、端口占用等资源类问题,所以会出现校验通过但启动失败的情况,常见触发场景如下:
- 端口占用:80/443端口被其他服务(如Apache、其他web服务)占用,可执行
sudo ss -tulpn | grep -E ':(80|443)'检查端口占用情况,如果有其他进程占用端口,停掉对应服务或者修改Nginx监听端口即可。 - 权限不足:配置文件中引用的路径(如网站根目录、SSL证书路径、日志存储路径、代理的Unix Socket路径)Nginx运行用户(默认是www-data)没有访问权限,需要对应调整路径权限。
- 残留进程冲突:旧的Nginx进程没有正常退出,占用了pid文件或者端口,杀干净残留进程后再重启即可。
- 资源不足:服务器内存耗尽导致Nginx启动失败,可执行
free -h检查内存使用情况。
内容的提问来源于stack exchange,提问作者SJ19
相关产品推荐
相关产品推荐

