在 Debian 上排查 Nginx 故障,通常可以按“由外到内、由配置到运行”的思路进行。下面是一套比较系统、实用的排查步骤。
nginx -v
dpkg -l | grep nginx
systemctl status nginx
常见问题:
inactive (dead):未启动failed:启动失败(看日志)sudo systemctl start nginx
sudo systemctl restart nginx
/var/log/nginx/error.log
/var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
常见错误示例:
Address already in use → 端口被占用Permission denied → 权限或 SELinux/AppArmorNo such file or directory → root 路径错误sudo nginx -t
输出示例:
test is successful → 配置 OKnginx -T
(会打印所有生效配置,包括 include 的文件)
sudo ss -lntp | grep nginx
# 或
sudo netstat -lntp | grep nginx
sudo ss -lntp | grep ':80'
常见冲突:
curl -I http://127.0.0.1
sudo ufw status
放行示例:
sudo ufw allow 80
sudo ufw allow 443
server {
root /var/www/html;
}
ls -ld /var/www/html
ls -l /var/www/html/index.html
推荐权限:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
ls /etc/nginx/sites-enabled/
启用:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
server_name example.com www.example.com;
default_serverssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
私钥通常需:
chmod 600 xxx.key
chown root:root xxx.key
sudo certbot certificates
sudo aa-status
如限制 Nginx:
aa-complain| 现象 | 可能原因 |
|---|---|
| 502 Bad Gateway | 后端(PHP/FPM)未启动 |
| 403 Forbidden | 权限 / index 文件缺失 |
| 404 Not Found | root 或 location 配置错误 |
| 端口占用 | Apache / 其他进程 |
| 启动失败 | nginx -t 报错 |
| 外网无法访问 | 防火墙 / 安全组 |
nginx -tsystemctl status nginxtail -f /var/log/nginx/error.logss -lntpcurl 127.0.0.1如果你愿意,可以把 具体报错信息(终端输出或 error.log)贴出来,我可以帮你精确定位问题。