nginx在centos上如何进行故障排查
导读:Nginx 在 CentOS 上的系统化故障排查指南 一 快速定位思路 明确现象:是完全打不开、端口不通、返回 4xx/5xx,还是偶发超时。 由外到内:先看网络连通性(本机/同网段/外网),再看端口监听,最后看Nginx 进程与配置。...
Nginx 在 CentOS 上的系统化故障排查指南
一 快速定位思路
- 明确现象:是完全打不开、端口不通、返回 4xx/5xx,还是偶发超时。
- 由外到内:先看网络连通性(本机/同网段/外网),再看端口监听,最后看Nginx 进程与配置。
- 由近到远:查看Nginx 错误日志与访问日志,必要时结合后端应用日志与抓包定位。
二 服务与端口检查
- 检查进程与端口
- 查看进程:
ps aux | grep nginx - 查看监听:
ss -lntp | grep -E '80|443'(或netstat -nltp | grep -E '80|443')
- 查看进程:
- 启动与自检
- 启动服务:
systemctl start nginx - 配置语法:
nginx -t
- 启动服务:
- 常见报错与处理
- 端口被占用:
bind() to 0.0.0.0:80 failed (98: Address already in use)- 处理:
ss -lntp | grep :80找到 PID,kill -9 < PID>后systemctl start nginx
- 处理:
- 重启时报错:
nginx: [error] invalid PID number "" in "/run/nginx.pid"- 处理:
nginx -c /etc/nginx/nginx.conf再nginx -s reload
- 处理:
- 权限拒绝:
bind() to 0.0.0.0:80 failed (13: Permission denied)- 处理:检查 SELinux 与端口策略(见第四节)
- 端口被占用:
三 访问异常与日志分析
- 日志位置与实时查看
- 访问日志:
/var/log/nginx/access.log - 错误日志:
/var/log/nginx/error.log - 实时跟踪:
tail -f /var/log/nginx/error.log
- 访问日志:
- 常见状态码定位
- 403 Forbidden
- 目录权限:站点目录一般 755,文件 644;如目录为 /var/www/html,执行:
stat /var/www/html/、ls -l /var/www/html/ - 配置检查:
/etc/nginx/nginx.conf、/etc/nginx/vhosts/*.conf中是否存在deny;index是否配置且文件存在
- 目录权限:站点目录一般 755,文件 644;如目录为 /var/www/html,执行:
- 404 Not Found
- 检查
root指向的站点目录是否正确、域名绑定是否匹配、首页文件是否存在
- 检查
- 5xx Server Error
- 第一时间查看
error.log的错误行与时间点,结合access.log的 URL、时间、返回码进行关联分析
- 第一时间查看
- 499 Client Closed Request
- 含义:客户端在服务器返回前主动断开
- 排查:抓包(如
tcpdump)、优化 Nginx 超时 与 后端性能,必要时协调客户端重试策略
- 403 Forbidden
四 防火墙与 SELinux 策略
- 防火墙放行
- firewalld:
firewall-cmd --zone=public --add-port=80/tcp --permanent & & firewall-cmd --reload - 云上实例:在控制台安全组放行 80/443 入方向
- 传统 iptables:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
- firewalld:
- SELinux 处理
- 查看状态:
getenforce(返回 Enforcing/Permissive/Disabled) - 临时放行:
setenforce 0(仅测试用) - 永久调整:编辑
/etc/selinux/config将SELINUX=enforcing改为SELINUX=permissive或disabled并重启 - 端口标签(如非 80/443):
semanage port -a -t http_port_t -p tcp < 端口>(需安装policycoreutils-python-utils) - 文件上下文(静态资源目录):
chcon -Rt httpd_sys_content_t /path/to/dir - 审计日志分析:
ausearch -m avc -ts recent | grep nginx;按需生成策略模块:audit2allow -M mynginx & & semodule -i mynginx.pp
- 查看状态:
五 性能与资源类问题
- 打开文件句柄耗尽
- 现象:
accept() failed (24: Too many open files) - 排查:
ulimit -n查看进程可用句柄;检查worker_rlimit_nofile与系统fs.file-max - 处理:提升系统/进程句柄限制并合理设置
worker_connections
- 现象:
- 高并发下的稳定性
- 关注错误日志中的 alert 与 emerg 项,结合连接数、后端响应时间与超时配置综合优化
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: nginx在centos上如何进行故障排查
本文地址: https://pptw.com/jishu/751976.html
