es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Configuración de Traefik para eventos en el lado del servidor

Estoy tratando de configurar correctamente un evento en el servidor con Traefik, pero no he tenido éxito.
Tengo un servidor Django que tiene una URL que envía eventos sse, puedo proxyarlo fácilmente con nginx usando esta configuración simple:

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;
  }
}

En Traefik, utilizando etiquetas de Docker, he configurado lo siguiente:

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"

Esto genera un error interno del servidor. Cuando proxio a django usando runserver (es decir, sin Daphne que se utiliza en el contenedor Docker), obtengo un “Fallo temporal en la resolución del nombre” y no puedo entender a qué se refiere.

¿Alguna pista sobre cuál es la configuración correcta para hacer funcionar los eventos de tipo Server-Sent?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar relacionado con la configuración del servidor Daphne utilizado en el entorno Docker. El error “Error temporal en la resolución de nombres” sugiere que el contenedor Docker puede no ser capaz de resolver el nombre DNS de la aplicación Django.

    Para resolver el problema, es posible que deba actualizar la configuración de Docker para utilizar la dirección IP de la aplicación Django en lugar del nombre de host. También puede intentar especificar el nombre de host del contenedor Django en la configuración de Traefik, utilizando la etiqueta traefik.docker.network.

    Además, es posible que deba asegurarse de que Daphne esté correctamente configurado para manejar eventos enviados por el servidor. Esto puede implicar configurar el punto final del origen del evento para devolver el tipo de contenido y los encabezados correctos. Puede consultar la documentación de Daphne para obtener más información sobre cómo configurar esto.

    En general, es importante asegurarse de que todos los componentes de la pila estén correctamente configurados y trabajando juntos para admitir eventos enviados por el servidor.

Comments are closed.