1. 问题现象与初步排查
最近在维护线上服务时,突然收到大量用户反馈网站无法访问,页面显示"502 Bad Gateway"错误。作为运维人员,我立即登录服务器查看Nginx错误日志,发现大量如下报错:
code复制2023/03/15 10:23:45 [error] 21547#21547: *3287626 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.100, server: example.com, request: "GET /api/user HTTP/1.1", upstream: "http://127.0.0.1:8080/api/user", host: "example.com"
这个错误表明Nginx作为反向代理,无法连接到后端的应用服务器(upstream)。502错误是网关类错误中最常见的一种,通常意味着Nginx与后端服务之间的通信出现了问题。
重要提示:遇到502错误时,第一步永远是检查Nginx的error.log,位置通常在/var/log/nginx/error.log。日志级别需要设置为warn或error才能捕获这类连接问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 深入分析Bad Gateway的常见原因
2.1 后端服务不可用
这是最常见的原因,表现为:
- 后端进程崩溃或未启动
- 后端服务监听地址/端口配置错误
- 后端服务器资源耗尽(CPU、内存、文件描述符等)
验证方法:
bash复制# 检查后端进程是否存活
ps aux | grep [your_backend_process]
# 测试端口连通性
telnet 127.0.0.1 8080
nc -zv 127.0.0.1 8080
2.2 连接超时设置不当
Nginx默认的连接超时时间可能不适合高负载场景:
- proxy_connect_timeout:与后端建立连接的超时(默认60s)
- proxy_read_timeout:读取后端响应的超时(默认60s)
- proxy_send_timeout:发送请求到后端的超时(默认60s)
优化建议:
nginx复制locati
