首页主机资讯centos nginx故障排查常见方法

centos nginx故障排查常见方法

时间2025-12-19 23:16:03发布访客分类主机资讯浏览687
导读:CentOS 上 Nginx 故障排查常见方法与步骤 一 快速定位流程 检查安装与运行状态:使用 nginx -v 确认版本;whereis nginx 查看二进制与配置路径;systemctl status nginx 或 ps -ef...

CentOS 上 Nginx 故障排查常见方法与步骤

一 快速定位流程

  • 检查安装与运行状态:使用 nginx -v 确认版本;whereis nginx 查看二进制与配置路径;systemctl status nginxps -ef | grep nginx 确认是否运行。若未运行,优先执行 nginx -t 验证配置语法。
  • 查看错误日志:实时跟踪 /var/log/nginx/error.log,优先从最新报错入手(如端口占用、权限拒绝、上游超时等)。
  • 验证端口与连通性:用 ss -tulnp | grep :80netstat -tulnp | grep :80 检查 80/443 是否被占用;必要时 kill -9 释放端口或调整 listen 端口。
  • 配置与模块核对:执行 nginx -V 查看编译参数与已启用模块;必要时在 /etc/nginx/nginx.conf/etc/nginx/conf.d/ 中检查 load_module 指令是否加载动态模块。
  • 外部连通性:从本机与远端分别 curl -I http://服务器IP/ 验证访问;若仅外网不通,排查 firewall-cmd 与云安全组策略。

二 常见故障与处理要点

  • 端口被占用:日志出现 bind() to 0.0.0.0:80 failed (98: Address already in use)。处理:查占用进程并终止,或调整 listen 端口;重启服务。
  • 权限被拒绝:日志出现 Permission denied。处理:确认 Nginx 工作用户(如 nginx)对网站目录与日志目录具备读取权限;必要时 chown/chmod 修正;若启用 SELinux,使用 chcon -R -t httpd_sys_content_t /var/www/html 修正上下文,或临时 setenforce 0 验证。
  • 配置语法错误:执行 nginx -t 定位行号与文件,修正后重载。
  • 服务未启动或 PID 文件异常:重启后执行 nginx -s reloadinvalid PID number “” in “/run/nginx.pid”,先以 nginx -c /etc/nginx/nginx.conf 指定配置启动,再 reload
  • 反向代理 502/504:日志出现 connect() failed (111: Connection refused)upstream timed out。处理:确认上游(如 PHP-FPM/Node.js)运行与端口连通;必要时调整 proxy_connect_timeout / proxy_read_timeout
  • 模块缺失或未加载:报错 unknown directivemodule “xxx” is not loaded。处理:用 nginx -V 核对编译参数,检查 load_module.so 动态模块路径及版本匹配。

三 日志与状态码诊断

  • 日志配置与级别:在 http/server/location 中使用 error_log /var/log/nginx/error.log warn; ;排查时可临时提升到 debug(性能影响大,排查后恢复)。
  • 典型错误模式:
    • Permission denied → 文件/目录权限或 SELinux 策略问题;
    • upstream timed out → 上游响应慢或不可用,检查后端与网络;
    • failed (111: Connection refused) → 上游未监听或端口错误。
  • 访问日志分析:用 awk ‘{ print $9} ’ /var/log/nginx/access.log | sort | uniq -c | sort -n 统计状态码;用 grep "404 " /var/log/nginx/access.log 聚焦异常资源;可用 GoAccess 做可视化分析。

四 网络与系统层检查

  • 防火墙放行:在 CentOS 执行 firewall-cmd --add-service=http --permanent & & firewall-cmd --add-service=https --permanent & & firewall-cmd --reload
  • SELinux 策略:排查阶段可 setenforce 0 验证;长期方案使用 chcon 设置正确上下文,或按需启用布尔值(如允许网络连接到后端)。
  • 端口与进程:用 ss/netstat 确认 80/443 监听;必要时释放端口或调整 Nginx 监听端口。
  • 深入跟踪:对疑难问题用 strace -p < worker_pid> -s 1024 -e trace=file,network 观察系统调用失败点(如 ECONNREFUSED/EPERM)。

五 一键排查命令清单

  • 基本信息:
    • 版本与路径:nginx -vwhereis nginx
    • 运行状态:systemctl status nginxps -ef | grep nginx
  • 配置与模块:
    • 语法测试:nginx -t -c /etc/nginx/nginx.conf
    • 编译参数与模块:nginx -V 2> & 1 | tr ’ ’ ‘\n’ | grep – ‘–with’
    • 动态模块:ls -lh /usr/lib64/nginx/modules/;配置中检查 grep load_module /etc/nginx/
  • 日志与端口:
    • 实时错误:tail -f /var/log/nginx/error.log
    • 端口占用:ss -tulnp | grep :80lsof -P -n -i :80
  • 连通性与策略:
    • 本机访问:curl -I http://127.0.0.1/
    • 防火墙:firewall-cmd --list-servicesfirewall-cmd --add-service=http --permanent & & firewall-cmd --reload
    • SELinux:getenforcesetenforce 0(仅测试),chcon -R -t httpd_sys_content_t /var/www/html
  • 上游连通性:
    • 端口监听:ss -tulnp | grep :9000(以 PHP-FPM 为例)
    • 直连测试:telnet 127.0.0.1 9000
  • 进程跟踪:
    • 跟踪工作进程:strace -p $(pgrep nginx | head -1) -s 1024 -e trace=file,network

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


若转载请注明出处: centos nginx故障排查常见方法
本文地址: https://pptw.com/jishu/776780.html
ifconfig在centos中的作用是什么 centos apache2恢复方法

游客 回复需填写必要信息