在 Linux 上 Nginx 返回 503(Service Temporarily Unavailable),通常表示 Nginx 本身正常运行,但后端服务不可用或拒绝处理请求。下面按常见原因给你梳理:
如果你用了 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
报错类似:
connect() to unix:/run/php-fpm.sock failed
✅ 解决:
systemctl start php-fpm
systemctl enable php-fpm
配置了:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
超过限制 → 503
✅ 查看:
grep limit_req nginx.conf
upstream backend {
server 127.0.0.1:8080;
}
后端线程/连接池满 → 503
✅ 日志中常见:
upstream temporarily busy
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
连续失败 → Nginx 暂时剔除
✅ 查看 error.log:
tail -f /var/log/nginx/error.log
return 503;location /maintenance {
return 503;
}
✅ 搜索:
grep -R "return 503" /etc/nginx
error_page 503 @maintenance;
ulimit -n
✅ 修改:
/etc/security/limits.conf
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 报错内容贴出来,我可以直接帮你定位是哪一条原因。