Nginx 日志出现错误时,排查思路基本是:先看日志内容 → 定位是哪一类问题 → 对号入座解决。下面给你一个实用排查指南,基本能覆盖 90% 的情况。
# 错误日志
/var/log/nginx/error.log
# 访问日志
/var/log/nginx/access.log
如果找不到,看 nginx 配置:
nginx -T | grep log
错误示例
bind() to 0.0.0.0:80 failed (98: Address already in use)
原因
解决
# 查看谁占用
sudo lsof -i :80
sudo lsof -i :443
# 杀掉进程
sudo kill -9 PID
或改端口:
listen 8080;
错误示例
nginx: [emerg] unknown directive "server"
解决
# 检查配置
nginx -t
常见错误:
;{} 不匹配server 不在 http {} 里错误示例
Permission denied
原因
解决
# 查看 Nginx 用户
ps aux | grep nginx
# 修改目录权限
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
证书权限:
chmod 600 /etc/nginx/ssl/*.key
错误示例
403 Forbidden
原因
解决
location / {
root /var/www/html;
index index.html index.php;
}
chmod 755 /var/www/html
错误示例
404 Not Found
原因
✅ root vs alias 常见坑
# 正确
location /static/ {
root /var/www;
}
# 实际路径:/var/www/static/
错误示例
SSL_CTX_use_PrivateKey_file failed
原因
解决
# 验证证书
openssl x509 -in cert.pem -text -noout
openssl rsa -in key.pem -check
配置示例:
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
错误示例
connect() failed (111: Connection refused)
原因
解决
# 检查后端服务
curl http://127.0.0.1:8080
# 1. 看错误日志
tail -n 50 /var/log/nginx/error.log
# 2. 检查配置
nginx -t
# 3. 重载配置
nginx -s reload
你可以直接把 error.log 的报错内容贴出来(不用贴 IP、域名),我可以:
✅ 精确判断错误类型
✅ 给出最小修改方案
✅ 顺带帮你优化 Nginx 配置
只要贴一行报错就够了。