最近,在使用 Nginx 作为反向代理处理 OpenAI Response 协议时,我遇到了一个问题:当请求处理时间超过60秒,连接就会被意外截断,即便数据仍在流式传输过程中。
这个问题在 Codex CLI 工具中的具体表现如下:
通过分析报文可以发现,连接在服务器发送标志着传输完成的event: response.completed
事件之前,就被提前中断了:
经过探究,我发现问题根源在于 OpenAI Response 协议与 OpenAI 传统端点在工作方式上的差异。传统端点通常采用“请求-响应”模式,通过轮询获取结果;而 Response 协议则依赖于一个长连接来持续推送数据。
Nginx 作为代理服务器,其默认的代理读取超时时间(proxy_read_timeout)恰好是60秒。当后端(OpenAI)的响应时间超过这个阈值后,Nginx 会判定上游服务器超时并主动关闭连接,这正是导致数据流被截断的直接原因。
定位到问题根源后,解决方案就非常明确了:只需在 Nginx 的配置文件中,为相应的反向代理设置更长的超时时间即可。具体配置样例如下:
1 | server { |
配置完再尝试发送请求,问题解决
PS:配置样例中使用的超时时间是300秒,如果你让 GPT-5 执行的任务非常复杂,建议调整为600秒