AI中转流式输出兼容全客户端配置教程

为什么你的AI中转需要流式输出 + 全客户端兼容

很多人在自建AI中转(把OpenAI API通过国内服务器转发)后,发现网页聊天卡顿、手机App等不到回复,或者客户端直接报错。
根本原因往往是中转层没开启流式输出,或者响应头兼容性不到位。
流式输出让AI回复一个字就传一个字,体验更实时;
全客户端兼容则保证不同终端(网页、iOS/Android App、API调用)都能正常接收。
本文从零搭建一套可直接用的Nginx反代中转,同时解决流式传输、跨域和客户端适配问题。

前置准备:域名、服务器与反向代理基础

  1. 一台Linux服务器(CentOS 7+或Ubuntu 20+),已安装Nginx(可用宝塔面板一键安装,也可手动编译)。
  2. 一个已解析到服务器IP的域名(示例用 api.yourdomain.com),之后客户端会用这个地址请求AI。
  3. 拿到上游API地址(比如 https://api.openai.com)和你的API Key。
  4. 确保服务器能访问外网(否则无法转发OpenAI)。

如果你用的是宝塔面板,进入「网站」→「添加站点」输入域名并创建。
下面所有Nginx配置都可以在宝塔的配置文件中直接修改。

核心配置:让Nginx支持Streaming并适配全客户端

1. 关闭代理缓冲,打开流式输出

编辑站点的Nginx配置文件,在 location / 块内添加:

proxy_buffering off;
proxy_cache off;
chunked_transfer_encoding on;
proxy_set_header Connection '';

解释proxy_buffering off 让Nginx不缓存上游响应,数据一来就发给客户端;chunked_transfer_encoding on 支持分块传输,流式数据必须靠它;
清空 Connection 头防止复用连接导致流式中断。

2. 添加必要的跨域与内容类型头

proxy_set_header Host api.openai.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

# 允许所有来源跨域
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'Content-Type, Authorization';

# 流式输出必须的内容类型(仅对chat/completions生效,可按需调整)
if ($request_uri ~* "/v1/chat/completions") {
    add_header Content-Type 'text/event-stream; charset=utf-8' always;
}
注意:Content-Type 只在流式端点下强制设为 text/event-stream,非流式请求(如图像生成)不受影响。

3. 完整的location配置示例

location / {
    proxy_pass https://api.openai.com;
    proxy_buffering off;
    proxy_cache off;
    chunked_transfer_encoding on;
    proxy_set_header Connection '';
    proxy_set_header Host api.openai.com;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'Content-Type, Authorization';

    if ($request_uri ~* "/v1/chat/completions") {
        add_header Content-Type 'text/event-stream; charset=utf-8' always;
    }
}

保存配置后,重载Nginx:nginx -s reload(宝塔面板里点「重载配置」按钮也可)。

踩坑现场:最常遇到的3个问题

问题1:客户端一直转圈,没有流式效果

  • 原因:proxy_buffering 没有关,或者 chunked_transfer_encoding 未开启。检查Nginx配置文件,用 curl -N --header "Content-Type: application/json" --data '{"stream": true, "messages": [{"role":"user","content":"hi"}]} ' https://你的域名/v1/chat/completions -H "Authorization: Bearer 你的key" 测试,如果响应一次性返回而非逐个data块,说明缓冲未关。

问题2:手机App或第三方客户端(如LobeChat)报CORS错误

  • 原因:缺少跨域头。确保 add_header Access-Control-Allow-Origin *; 出现在 location 块内,并且位于 proxy_pass 之前或之后(只要同一作用域)。另外对OPTIONS预检请求也要放行,可以单独处理:
  if ($request_method = 'OPTIONS') {
      add_header Access-Control-Allow-Origin *;
      add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
      add_header Access-Control-Allow-Headers 'Content-Type, Authorization';
      add_header Content-Length 0;
      add_header Content-Type text/plain;
      return 204;
  }

问题3:非AI的普通API请求(如图像生成)被强制改为text/event-stream

  • 解决方法:用 if ($request_uri ~* "/v1/chat/completions") 精准限定,只对聊天补全接口添加该头。其它请求保持默认的 application/json

验证效果:一场真实的“流式”对话

打开任意支持自定义API地址的AI客户端(推荐使用NextChat或LobeChat),将接口地址改为 https://你的域名/v1,API Key填上你的Key,发送一条消息。
观察回复:文字应该逐字或逐块显示,没有卡顿几秒后才弹出全部内容。

也可以用命令行测试流式输出:

curl -N --request POST \
  --url https://你的域名/v1/chat/completions \
  --header "Authorization: Bearer 你的key" \
  --header "Content-Type: application/json" \
  --data '{"model": "gpt-3.5-turbo", "stream": true, "messages": [{"role": "user", "content": "你好"}]}'

你会看到类似这样的逐行输出:

data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"content":"你"}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"content":"好"}}]}

最后一行是 data: [DONE]
如果整个输出一次性刷完,请回头检查 proxy_buffering

写在最后

AI中转流式输出兼容全客户端的本质就三步:关闭缓冲、启用分块、加对响应头
按照本文的Nginx配置,绝大多数主流客户端(OpenAI官方、NextChat、LobeChat、ChatBox、Pandora等)都能流畅使用。
少数特殊客户端(如某些微信机器人)可能需要额外调整 ConnectionCache-Control,但基本原理一致。
如果你在配置中遇到其他报错,先回看避坑部分,排查缓存和跨域问题基本都能解决。

分享到:
上一篇
bit量化模型降低住宅主机显存占用方案
下一篇
住宅主机Docker Compose一键启动NewAPI网关
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意