增加超时之前,先确定请求在哪一步失败。502 通常指向上游通信失败;504 通常指向等待上游超时。日志能区分实际故障。
示例:应用没有监听目标端口
假设错误日志片段如下:
text
connect() failed (111: Connection refused) while connecting to upstream
upstream: "http://127.0.0.1:3000/products"
Nginx 尝试连接端口 3000,但被拒绝。检查应用是否运行并监听该地址。从 Nginx 所在机器或容器中测试 curl -i http://127.0.0.1:3000/products。容器内部的该地址指容器自身,不会自动指向另一个应用容器。
示例:已经连接,但未及时收到响应头
text
upstream timed out while reading response header from upstream
这表示在等待响应头。把请求与应用日志和慢数据库查询关联起来。检查连接耗时和上游响应耗时,区分网络建立阶段与应用处理阶段。
