首页主机资讯Ubuntu Nginx错误排查方法

Ubuntu Nginx错误排查方法

时间2026-01-14 12:54:05发布访客分类主机资讯浏览1128
导读:Ubuntu 上 Nginx 故障排查清单 一 快速定位流程 检查配置语法:sudo nginx -t,确保输出为 syntax is ok / test is successful。 查看服务状态:sudo systemctl stat...

Ubuntu 上 Nginx 故障排查清单

一 快速定位流程

  • 检查配置语法:sudo nginx -t,确保输出为 syntax is ok / test is successful
  • 查看服务状态:sudo systemctl status nginx,若失败,结合 sudo journalctl -xe 获取详细上下文。
  • 实时跟踪错误日志:sudo tail -f /var/log/nginx/error.log,优先从最新报错入手。
  • 核对端口监听:ss -tulnp | grep ':80\|:443'(或 netstat -tulnp | grep ':80\|:443'),确认 80/443 未被占用且监听正确。
  • 验证外部连通:本地 curl -I http://127.0.0.1 或服务器公网 IP;远程可用 curl -Iv https://你的域名 查看 TLS 握手与重定向细节。

二 常见错误与处理对照表

症状 快速检查 处理要点
Job for nginx.service failed sudo nginx -tsudo systemctl status nginxsudo journalctl -xe 先修正语法或端口冲突,再重启服务
bind() to 0.0.0.0:80 failed (98: Address already in use) `ss -tulnp grep :80netstat -tulnp
Permission denied / 403 Forbidden ls -ld /var/www/html、检查 user 指令 目录/文件权限与 Nginx 运行用户(如 www-data) 一致,常用:chmod -R 755 /var/www/htmlchown -R www-data:www-data /var/www/html
No such file or directory(如 nginx.conf 或 logs 目录缺失) ls /etc/nginx/nginx.confls /var/log/nginx/ 指定正确配置:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf;缺失 logs 则 mkdir -p /usr/local/nginx/logs & & touch error.log access.log
invalid PID number “” in “/run/nginx.pid” cat /run/nginx.pid 以指定配置启动:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 重建 pid
域名无法访问 / ERR_NAME_NOT_RESOLVED nslookup 你的域名dig 你的域名 核对 DNS 解析A/CNAME 记录是否正确
正则或 location 导致 NOT FOUND 检查 location 匹配顺序与正则 使用精确匹配 location = /,前缀匹配 ^~,区分大小写 ~ 或不区分 ~*,避免错误正则覆盖

三 配置与权限要点

  • 配置语法与包含关系:修改后用 sudo nginx -t 验证;主配置通常位于 /etc/nginx/nginx.conf,站点配置常通过 include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; 引入,便于拆分与排错。
  • 监听与虚拟主机:在 server { listen 80; server_name your.domain; ... } 中确保端口未被占用、域名与证书匹配;反向代理时 proxy_pass 目标地址末尾不要带多余 /,以免路径拼接异常。
  • 运行用户与文件权限:确认 user www-data; (或自定义用户)与网站目录权限一致;常见做法为目录 755、文件 644,必要时 chown -R www-data:www-data 你的目录
  • 日志与审计:默认错误日志 /var/log/nginx/error.log,访问日志 /var/log/nginx/access.log;问题未复现时,先 tail -f 观察请求是否到达与匹配到了哪个 server/location

四 网络与防火墙检查

  • 本机监听与连通:ss -tulnp | grep ':80\|:443'curl -I http://127.0.0.1 验证服务是否在本机可达。
  • 外部访问与解析:curl -Iv https://你的域名 检查 TLS 与重定向;nslookup/dig 核对 DNS 记录是否正确。
  • 防火墙放行(UFW):sudo ufw allow 80/tcpsudo ufw allow 443/tcp,或 sudo ufw status 查看规则是否已生效。

五 一键排查脚本示例

#!/usr/bin/env bash
set -e

echo "=== 1) 配置语法检查 ==="
sudo nginx -t

echo "=== 2) 服务状态 ==="
sudo systemctl status nginx || true
sudo journalctl -xe --no-pager -n 50 || true

echo "=== 3) 监听端口 ==="
ss -tulnp | grep ':80\|:443' || echo "未检测到 80/443 监听"

echo "=== 4) 错误日志尾部 ==="
sudo tail -n 50 /var/log/nginx/error.log || echo "无 /var/log/nginx/error.log"

echo "=== 5) 站点目录权限示例 ==="
ls -ld /var/www/html 2>
    /dev/null || echo "目录 /var/www/html 不存在"

echo "=== 6) DNS 解析 ==="
nslookup your.domain || dig your.domain +short || echo "DNS 解析失败(将 your.domain 替换为实际域名)"

将脚本保存为 nginx-debug.sh,执行 bash nginx-debug.sh 即可按序输出关键诊断信息。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Nginx错误排查方法
本文地址: https://pptw.com/jishu/778524.html
Debian系统中Laravel如何部署SSL证书 debian crontab如何跨年执行任务

游客 回复需填写必要信息