Nginx常见报错及解决方案对照表

Nginx常见报错及解决方案对照表​:系统梳理Nginx运行中高频报错(如403/404/502等状态码异常、端口占用、SSL证书错误、后端超时等),涵盖错误现象、根本原因及分步解决方案,帮助运维人员快速定位问题。表格内容基于实际运维场景,包含权限配置、日志分析、服务状态检查等关键排查步骤,并提供如权限修复、超时参数调整、防火墙规则优化等针对性解决策略,适用于Web服务部署、负载均衡及反向代理等典型应用环境,是Nginx故障排查的实用速查指南。

错误代码/日志提示 可能原因 排查步骤 解决方案
403 Forbidden 1. 文件/目录权限不足
2. Nginx配置中deny all限制
3. SELinux/AppArmor拦截
1. 检查文件权限:ls -l /path/to/file
2. 检查Nginx配置中的allow/deny规则
3. 查看SELinux日志:sudo ausearch -m avc -ts recent
1. 修改权限:sudo chown -R nginx:nginx /var/www/html
2. 调整配置:删除或修改deny all规则
3. 临时禁用SELinux:sudo setenforce 0
404 Not Found 1. 请求路径错误
2. 文件不存在
3. 反向代理目标服务未响应
1. 检查请求URL路径是否拼写正确
2. 确认文件是否存在于root指定目录
3. 检查反向代理配置的proxy_pass地址是否可达
1. 修正URL路径
2. 将文件放置到正确目录
3. 检查代理目标服务状态:curl -I http://backend-server
502 Bad Gateway 1. 后端服务(如PHP-FPM、Node.js)崩溃或未启动
2. 代理超时
1. 检查后端服务状态:systemctl status php-fpm
2. 查看Nginx错误日志:tail -f /var/log/nginx/error.log
1. 重启后端服务:sudo systemctl restart php-fpm
2. 调整超时时间:在Nginx配置中增加proxy_connect_timeout 60s;
504 Gateway Timeout 1. 后端服务响应超时
2. Nginx代理超时设置过短
1. 检查后端服务性能(如数据库查询慢)
2. 查看Nginx超时配置参数
1. 优化后端服务性能(如添加数据库索引)
2. 调整Nginx配置:
proxy_read_timeout 300s;
fastcgi_read_timeout 300s;
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)​ 1. 端口80被其他进程占用(如Apache)
2. Nginx重复启动
1. 检查端口占用:sudo netstat -tulnp | grep ':80'
2. 查找冲突进程PID:
sudo lsof -i :80
1. 停止冲突服务:
sudo systemctl stop apache2
2. 终止占用进程:
sudo kill -9 <PID>
3. 重启Nginx:sudo systemctl restart nginx
nginx: [error] open() "/var/log/nginx/access.log" failed (2: No such file or directory)​ 1. 日志目录不存在
2. Nginx用户(如www-data)无权限写入日志目录
1. 检查日志路径是否存在:
ls -ld /var/log/nginx
2. 检查目录权限:
ls -l /var/log/nginx
1. 创建日志目录:
sudo mkdir -p /var/log/nginx
2. 修改权限:
sudo chown -R www-data:www-data /var/log/nginx
3. 重启Nginx
SSL_ERROR_SYSCALL (OpenSSL相关错误)​ 1. SSL证书路径错误
2. 证书文件权限不足
3. OpenSSL库版本不兼容
1. 检查Nginx配置中的ssl_certificatessl_certificate_key路径
2. 确认证书文件权限:
ls -l /etc/nginx/ssl/
1. 修正证书路径:
ssl_certificate /etc/nginx/ssl/cert.pem;
2. 修改权限:
sudo chmod 600 /etc/nginx/ssl/*
3. 更新OpenSSL:sudo apt upgrade openssl
upstream timed out (110: Connection timed out)​ 1. 反向代理后端服务未响应
2. 网络延迟或防火墙拦截
1. 检查后端服务是否可达:
curl -I http://backend-ip:port
2. 检查防火墙规则:
sudo iptables -L
1. 修复后端服务网络配置
2. 调整Nginx超时参数:
proxy_connect_timeout 30s;
proxy_send_timeout 60s;
proxy_read_timeout 120s;
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges 1. Nginx以非root用户启动但配置中指定了user指令
2. 配置文件语法错误
1. 检查启动命令:
ps aux | grep nginx
2. 验证配置文件语法:
sudo nginx -t
1. 以root用户启动Nginx:
sudo systemctl start nginx
2. 修复配置文件语法错误后重载:
sudo nginx -s reload

这里还有几个Nginx常用的快速恢复命令:

# 1. 停止Nginx
sudo systemctl stop nginx

# 2. 测试配置文件
sudo nginx -t

# 3. 重启Nginx
sudo systemctl start nginx

# 4. 查看状态
sudo systemctl status nginx

 

投上你的一票

本文出处:老蒋部落 » Nginx常见报错及解决方案对照表 | 欢迎分享( 公众号:老蒋朋友圈 )

公众号 「老蒋朋友圈」获取站长新知 / 加QQ群 【1012423279】获取商家优惠推送