当Nginx服务器出现故障时,可以按照以下步骤进行排查和恢复:
systemctl status nginx # Systemd系统
service nginx status # SysVinit系统
sudo systemctl start nginx
Nginx日志通常位于:
tail -n 50 /var/log/nginx/error.log # 实时查看最近50条错误
常见问题:
- 端口冲突:Address already in use
→ 检查是否有其他服务占用80/443端口(如Apache)。
- 权限问题:Permission denied
→ 确保Nginx用户(通常为www-data
或nginx
)有权限访问相关文件。
- 配置错误:syntax error
→ 校验配置(下一步)。
nginx -t # 测试配置文件语法
nginx: [emerg] unknown directive "xyz"
→ 检查拼写或模块加载。
nginx: [emerg] open() "/path/to/file" failed
→ 确认文件路径存在。netstat -tulnp | grep nginx # 确认Nginx是否监听正确端口
ss -tulnp | grep nginx # 替代netstat(现代系统)
bash
sudo ufw allow 80/tcp # Ubuntu防火墙
sudo firewall-cmd --add-port=80/tcp --permanent # CentOS
bash
top -c # 查看CPU/内存占用
df -h # 检查磁盘空间
bash
cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf # 恢复备份
bash
systemctl status php-fpm # 示例:检查PHP-FPM状态
sudo systemctl stop nginx
sudo pkill -9 nginx # 强制终止残留进程
sudo systemctl start nginx
nginx
error_log /var/log/nginx/error.log debug; # 在nginx.conf中添加
bash
dmesg | grep nginx # 查看内核级错误
现象 | 可能原因 | 解决方案 |
---|---|---|
502 Bad Gateway | 后端服务(如PHP)未响应 | 检查后端服务状态和日志 |
403 Forbidden | 文件权限/路径错误 | 确保root 或alias 路径正确 |
404 Not Found | 配置中的路径错误 | 检查location 和文件是否存在 |
CPU 100% | 恶意请求或配置错误 | 限制连接速率,检查worker_processes |
logrotate
避免日志占满磁盘。通过以上步骤,90%的Nginx故障可快速定位并恢复。若问题仍存在,请提供具体错误日志进一步分析。