当Nginx出现宕机时,可以按照以下步骤进行排查和恢复:
# 检查Nginx进程状态
ps aux | grep nginx
# 检查服务状态(系统使用systemd时)
systemctl status nginx
# 检查端口监听(默认80/443)
netstat -tulnp | grep ':80\|:443'
ss -tulnp | grep nginx
Nginx日志路径通常为:
- 错误日志:/var/log/nginx/error.log
- 访问日志:/var/log/nginx/access.log
# 实时查看错误日志
tail -f /var/log/nginx/error.log
# 检查系统日志(如Nginx无输出)
journalctl -u nginx --no-pager -n 50
# 测试配置文件语法
nginx -t
# 修复后重载配置(非重启)
nginx -s reload
nginx -t
报错(如语法错误、路径错误)。/etc/nginx/nginx.conf
或子配置文件(如 sites-enabled/*
)。# 检查端口占用
lsof -i :80
systemctl stop apache2
# 检查系统资源
free -h # 内存
df -h # 磁盘
top # CPU/进程
logrotate
)。worker_processes
、worker_connections
)。# 检查Nginx用户权限
ls -la /var/www/html/
ps aux | grep nginx | grep -v grep
www-data
或 nginx
)无权限访问文件。bash
chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html/
# 检查动态模块或依赖库
ldd $(which nginx)
解决:重新安装依赖:
# Ubuntu/Debian
apt install --reinstall libpcre3 openssl
# CentOS/RHEL
yum reinstall pcre openssl
# 强制停止Nginx(如果进程残留)
pkill -9 nginx
# 重新启动
systemctl start nginx # systemd
service nginx start # init.d
bash
gdb /usr/sbin/nginx /path/to/core.dump
nginx
# 在nginx.conf中添加
error_log /var/log/nginx/error.log debug;
logrotate
避免日志占满磁盘。Nginx宕机 → 检查进程/端口 → 查看日志 → 测试配置 → 排查资源/权限 → 重启服务 → 监控恢复
通过以上步骤,90%的Nginx宕机问题可以快速定位并解决。如问题持续,建议提供错误日志进一步分析。