你的客户端愿意等待六十秒。十秒后它却收到 HTTP 504。把客户端超时调到两分钟,并不会给网关多五十秒的工作时间。

504 描述的是网关或代理在尝试完成请求时,没有及时收到上游响应。网关已经作出决定并返回了响应。你的客户端能够正常读取这个响应。

是哪个中间层返回的?

可能是正向代理发出的。也可能是网站运营的后续网关。在 CONNECT 内部使用普通的端到端 TLS 时,来自该受保护的目标交换的 HTTP 响应,与 CONNECT 本身被拒绝 并不相同。

请保留所处阶段、响应头、错误页面的措辞,以及可获得的对应日志。服务器名称可能是线索,但不应视为不会出错的归属。链路中的中间层可能比你在客户端里配置的更多。

然后再查那次上游操作为什么没有完成。可达性、过载的服务、上游无法按预期处理的请求体,以及应用本身的行为,都可能有影响。仅凭数字状态并不能证明改 User-Agent 或加一个超时选项就是通用解法。

比较同一个请求

当另一个工具能成功时,请比较方法、目标、正文编码、身份验证和路径。“浏览器能打开这个 URL”并不等于与服务客户端发出的 multipart 提交做过完整对比。

如果你运营发出该响应的网关,应让其上游预算与所支持的工作负载及周边时限相匹配。如果不运营,就把它的结果留作证据,并走运营方有文档记录的访问或支持渠道。本地多等一会儿,改变不了已经到达的响应。

相关文章