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

nginx挂了怎么办

Nginx 端口 bash sudo 764    来源:    2025-04-07

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


1. 检查Nginx服务状态

systemctl status nginx   # Systemd系统(CentOS 7+/Ubuntu 16.04+)
service nginx status      # 旧版SysVinit系统
  • 如果未运行:尝试启动服务: bash sudo systemctl start nginx

2. 查看错误日志

Nginx日志通常位于:

tail -f /var/log/nginx/error.log  # 实时查看错误日志
  • 常见错误
    • 端口冲突(如80端口被占用)
    • 配置文件语法错误
    • 权限问题(如www-data用户无权访问文件)

3. 验证配置文件语法

sudo nginx -t
  • 如果输出 syntax is ok,说明配置无语法错误。
  • 如果报错,根据提示修正配置文件(通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-enabled/)。

4. 检查端口占用

sudo netstat -tulnp | grep 80
sudo lsof -i :80
  • 如果其他进程(如Apache)占用了端口,停止冲突服务或修改Nginx监听端口。

5. 检查文件权限

确保Nginx用户(通常为www-datanginx)有权限访问相关资源:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

6. 检查依赖服务

  • 如果Nginx依赖后端服务(如PHP-FPM、Node.js),确保它们正常运行: bash systemctl status php-fpm

7. 防火墙/SELinux问题

  • 防火墙:放行80/443端口 bash sudo ufw allow 80/tcp # Ubuntu sudo firewall-cmd --add-port=80/tcp --permanent # CentOS
  • SELinux:临时禁用或调整策略 bash setenforce 0 # 临时禁用(生产环境慎用)

8. 资源不足

检查系统资源是否耗尽:

free -h    # 内存
df -h      # 磁盘空间
top        # CPU/进程

9. 回滚或重启

  • 如果最近修改过配置,回滚到旧版本: bash cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf
  • 强制重启Nginx: bash sudo systemctl restart nginx

10. 终极方案:重装Nginx

如果问题无法定位,尝试备份后重新安装:

sudo apt purge nginx && sudo apt install nginx   # Debian/Ubuntu
sudo yum remove nginx && sudo yum install nginx # CentOS/RHEL

常见问题速查表

现象 可能原因 解决方案
502 Bad Gateway 后端服务未启动 检查PHP/Node.js等后端服务
403 Forbidden 文件权限错误 调整目录权限或SELinux策略
404 Not Found 路径配置错误 检查rootalias指令
端口占用 Apache/其他服务冲突 停止冲突服务或修改Nginx端口

通过以上步骤,大部分Nginx问题可以快速解决。如果仍无法恢复,建议结合日志和系统监控工具深入分析。