温馨提示×

linux nginx为什么503

小樊
44
2026-10-07 21:26:18
栏目: 智能运维

在 Linux 上 Nginx 返回 503(Service Temporarily Unavailable),通常表示 Nginx 本身正常运行,但后端服务不可用或拒绝处理请求。下面按常见原因给你梳理:


一、最常见原因

1️⃣ 后端服务挂了(PHP / Java / Python / Node 等)

如果你用了 proxy_pass 或 fastcgi_pass:

location / {
    proxy_pass http://127.0.0.1:8080;
}

后端没启动或崩了 → 503

✅ 检查:

systemctl status php-fpm
systemctl status tomcat
ps -ef | grep java
curl http://127.0.0.1:8080

2️⃣ PHP-FPM 没运行(非常常见)

报错类似:

connect() to unix:/run/php-fpm.sock failed

✅ 解决:

systemctl start php-fpm
systemctl enable php-fpm

3️⃣ Nginx 限流(rate limit)

配置了:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

超过限制 → 503

✅ 查看:

grep limit_req nginx.conf

4️⃣ 后端连接数满了(upstream busy)

upstream backend {
    server 127.0.0.1:8080;
}

后端线程/连接池满 → 503

✅ 日志中常见:

upstream temporarily busy

5️⃣ 负载均衡中后端被标记为不可用

server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;

连续失败 → Nginx 暂时剔除

✅ 查看 error.log:

tail -f /var/log/nginx/error.log

二、Nginx 主动返回 503 的情况

6️⃣ 配置了 return 503;

location /maintenance {
    return 503;
}

✅ 搜索:

grep -R "return 503" /etc/nginx

7️⃣ 维护模式(常见)

error_page 503 @maintenance;

三、系统资源问题

8️⃣ 文件描述符耗尽

ulimit -n

✅ 修改:

/etc/security/limits.conf

9️⃣ 磁盘满了(写不了日志)

df -h

四、快速排查步骤(推荐)

# 1. 看 Nginx 错误日志
tail -n 50 /var/log/nginx/error.log

# 2. 看访问日志
tail -n 20 /var/log/nginx/access.log

# 3. 测试后端
curl -i http://127.0.0.1:端口

# 4. 检查服务状态
systemctl status nginx php-fpm mysql

五、总结一句话

503 不是 Nginx 挂了,而是“后端或资源不可用”

如果你愿意,可以把:

  • nginx.conf 相关配置
  • error.log 报错内容

贴出来,我可以直接帮你定位是哪一条原因。

0 踩