用于服务器端事件的 Traefik conf

Traefik conf for server-side events

我正在尝试使用 Traefik 正确设置服务器端事件,但无济于事。 我有一个 Django 服务器,它有一个发送 sse 的 URL,我可以使用这个简单的 conf 轻松地使用 nginx 代理:

server {
  listen 80;
  server_name _ ;
  charset utf-8;
  client_max_body_size 20M;

  location / {
    proxy_pass http://django:8000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
  }
}

在 traefik 中使用 docker 我设置的标签:

    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" 
       #- "traefik.http.routers.dj.middlewares=compress-no-stream"
       #- "traefik.http.middlewares.compress-no-stream.compress=true"
       #- "traefik.http.middlewares.compress-no-stream.compress.excludedcontenttypes=text/event-stream"

这解决了内部服务器错误。当使用 运行 服务器(即 docker 中使用的非 Daphne)代理到 django 运行 时,我收到“名称解析暂时失败”并且我不明白它指的是什么。

关于使服务器发送事件起作用的正确配置的任何提示?

事实证明,用 sse 响应的 Django 视图将 2 设置为相同 headers,这让 Traefik 很生气。

关于 issue 的完整解释。

修复后 headers 一切正常。