You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik代理Django Server-Sent Event(SSE)正确配置方法咨询

Traefik代理SSE(Django)正确配置方案

1. 域名解析错误修复(Temporary failure in name resolution)

该错误本质是Traefik所在的网络环境无法解析你配置的后端服务地址:

  • 如果Django运行在与Traefik同Docker网络的容器中:确认Django容器和Traefik加入了同一个Docker网络,且容器服务名配置正确可被正常解析
  • 如果Django是运行在宿主机的runserver实例:在Traefik的docker-compose配置中增加extra_hosts配置,将你使用的$HOST_ADK指向Docker宿主机网关地址,或者直接使用宿主机的局域网IP作为后端地址,不要使用本地环回地址127.0.0.1(容器内的127.0.0.1指向容器自身而非宿主机)

2. SSE专属配置调整

SSE为长连接流式响应,需要关闭Traefik的响应缓冲、排除SSE类型的压缩、调整连接超时参数,正确的标签配置如下:

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.dj.rule=Host(`$HOST_ADK`)"
  - "traefik.http.routers.dj.entrypoints=web"
  - "traefik.http.routers.dj.service=dj"
  - "traefik.http.services.dj.loadbalancer.server.port=8000"
  # 关闭代理响应缓冲,实现SSE内容流式传输
  - "traefik.http.services.dj.loadbalancer.server.responsebuffering=0"
  # 配置SSE压缩排除规则
  - "traefik.http.routers.dj.middlewares=sse-compress,sse-headers"
  - "traefik.http.middlewares.sse-compress.compress=true"
  - "traefik.http.middlewares.sse-compress.compress.excludedcontenttypes=text/event-stream"
  # 调整长连接超时时间,可根据你的SSE最长连接需求调整,单位为秒
  - "traefik.http.services.dj.loadbalancer.server.transport.respondingtimeout=300"
  # 显式配置Host头传递,适配Django的域名校验规则
  - "traefik.http.middlewares.sse-headers.headers.hostsproxyheaders=Host"

3. 额外验证项

  • 确认Django返回的SSE响应头Content-Type为text/event-stream,且服务端没有主动开启Gzip压缩
  • 如果使用Daphne作为ASGI服务器,确认其启动参数中没有限制连接超时,允许长连接存在
  • 确认Traefik和Django服务之间没有防火墙规则拦截长连接流量

内容的提问来源于stack exchange,提问作者Alessandro Dentella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:15:07