温馨提示×

怎样排查debian nginx故障

小樊
39
2026-10-06 12:18:42
栏目: 智能运维

在 Debian 上排查 Nginx 故障,通常可以按“由外到内、由配置到运行”的思路进行。下面是一套比较系统、实用的排查步骤。


一、确认 Nginx 是否安装与运行

1. 是否安装

nginx -v
dpkg -l | grep nginx

2. 服务状态

systemctl status nginx

常见问题:

  • inactive (dead):未启动
  • failed:启动失败(看日志)

3. 尝试启动 / 重启

sudo systemctl start nginx
sudo systemctl restart nginx

二、查看 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/AppArmor
  • No such file or directory → root 路径错误

三、检查配置文件语法

1. 测试配置

sudo nginx -t

输出示例:

  • test is successful → 配置 OK
  • 指明某行错误 → 直接定位

2. 查看实际加载的配置

nginx -T

(会打印所有生效配置,包括 include 的文件)


四、端口与网络排查

1. 是否监听 80 / 443

sudo ss -lntp | grep nginx
# 或
sudo netstat -lntp | grep nginx

2. 端口是否被占用

sudo ss -lntp | grep ':80'

常见冲突:

  • Apache
  • 其他 Nginx 实例
  • Docker 容器

3. 本地访问测试

curl -I http://127.0.0.1

五、防火墙与云安全组

Debian 防火墙(如有)

sudo ufw status

放行示例:

sudo ufw allow 80
sudo ufw allow 443

云服务器

  • 安全组是否放行 80 / 443
  • 是否绑定公网 IP

六、网站目录与权限问题

1. 检查 root 路径

server {
    root /var/www/html;
}

2. 目录权限

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

七、虚拟主机(server block)问题

1. 是否启用站点

ls /etc/nginx/sites-enabled/

启用:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

2. server_name 是否正确

server_name example.com www.example.com;

3. 默认站点冲突

  • 多个 default_server
  • 未匹配域名时返回错误

八、HTTPS / 证书问题

1. 证书路径是否正确

ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;

2. 权限问题

私钥通常需:

chmod 600 xxx.key
chown root:root xxx.key

3. 使用 Let’s Encrypt

sudo certbot certificates

九、AppArmor / SELinux(Debian 少见但可能)

检查 AppArmor

sudo aa-status

如限制 Nginx:

  • 调整 profile
  • 或临时测试 aa-complain

十、常见故障速查表

现象 可能原因
502 Bad Gateway 后端(PHP/FPM)未启动
403 Forbidden 权限 / index 文件缺失
404 Not Found root 或 location 配置错误
端口占用 Apache / 其他进程
启动失败 nginx -t 报错
外网无法访问 防火墙 / 安全组

十一、推荐的标准排查顺序(总结)

  1. nginx -t
  2. systemctl status nginx
  3. tail -f /var/log/nginx/error.log
  4. ss -lntp
  5. curl 127.0.0.1
  6. 防火墙 / 安全组
  7. 目录权限
  8. 虚拟主机配置

如果你愿意,可以把 具体报错信息(终端输出或 error.log)贴出来,我可以帮你精确定位问题。

0 踩