插件窝 干货文章 nginx服务器挂了怎么办

nginx服务器挂了怎么办

Nginx 检查 错误 配置 905    来源:    2025-04-07

当Nginx服务器出现故障时,可以按照以下步骤进行排查和恢复:


1. 确认服务状态

systemctl status nginx   # Systemd系统
service nginx status     # SysVinit系统
  • 若未运行:尝试启动服务 sudo systemctl start nginx
  • 若持续崩溃:检查错误日志(下一步)。

2. 检查错误日志

Nginx日志通常位于:

tail -n 50 /var/log/nginx/error.log  # 实时查看最近50条错误

常见问题: - 端口冲突Address already in use → 检查是否有其他服务占用80/443端口(如Apache)。 - 权限问题Permission denied → 确保Nginx用户(通常为www-datanginx)有权限访问相关文件。 - 配置错误syntax error → 校验配置(下一步)。


3. 校验Nginx配置

nginx -t  # 测试配置文件语法
  • 错误示例
    nginx: [emerg] unknown directive "xyz" → 检查拼写或模块加载。 nginx: [emerg] open() "/path/to/file" failed → 确认文件路径存在。

4. 检查端口和网络

netstat -tulnp | grep nginx  # 确认Nginx是否监听正确端口
ss -tulnp | grep nginx       # 替代netstat(现代系统)
  • 若端口未监听:可能是Nginx未启动或配置错误。
  • 防火墙问题bash sudo ufw allow 80/tcp # Ubuntu防火墙 sudo firewall-cmd --add-port=80/tcp --permanent # CentOS

5. 资源监控

  • 检查系统资源bash top -c # 查看CPU/内存占用 df -h # 检查磁盘空间
  • Nginx可能因资源耗尽崩溃(如内存不足、磁盘满)。

6. 回滚或修复配置

  • 若最近修改过配置bash cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf # 恢复备份
  • 逐步排查:注释掉最近修改的配置块,逐步启用定位问题。

7. 检查依赖服务

  • 若Nginx依赖其他服务(如PHP-FPM、数据库): bash systemctl status php-fpm # 示例:检查PHP-FPM状态

8. 彻底重启服务

sudo systemctl stop nginx
sudo pkill -9 nginx           # 强制终止残留进程
sudo systemctl start nginx

9. 高级调试

  • 启用调试日志(临时): nginx error_log /var/log/nginx/error.log debug; # 在nginx.conf中添加
  • 检查内核日志bash dmesg | grep nginx # 查看内核级错误

10. 常见问题速查

现象 可能原因 解决方案
502 Bad Gateway 后端服务(如PHP)未响应 检查后端服务状态和日志
403 Forbidden 文件权限/路径错误 确保rootalias路径正确
404 Not Found 配置中的路径错误 检查location和文件是否存在
CPU 100% 恶意请求或配置错误 限制连接速率,检查worker_processes

最终建议

  • 监控工具:配置Prometheus+Grafana或Zabbix实时监控Nginx。
  • 日志轮转:使用logrotate避免日志占满磁盘。
  • 高可用:考虑用Keepalived实现Nginx主备切换。

通过以上步骤,90%的Nginx故障可快速定位并恢复。若问题仍存在,请提供具体错误日志进一步分析。