Hola a todos,
Estoy encontrando un problema específico donde los videos de más de 5 MB no generan vistas previas de Onebox en mi instancia de Discourse (instalación estándar de Docker), mientras que los mismos enlaces de video funcionan perfectamente en otros sitios de Discourse.
El Problema:
Cuando publico un enlace de video (por ejemplo, un archivo .webm de 5.1 MB), el Onebox falla. He aislado el problema a un fallo en la negociación de la solicitud de rango (Range request).
Resultados de la depuración desde la consola de Rails:
- Prueba manual de Ruby (Éxito): Usando
Net::HTTPestándar y estableciendo manualmente la cabeceraRange: bytes=0-10, obtengo con éxito un 206 Partial Content del servidor de origen. - Prueba del sistema de Discourse (Fallo): Cuando Discourse intenta obtener la misma URL a través de
FinalDestination.new(url).get, recibe un 200 OK (Net::HTTPOK) en lugar de un 206. En consecuencia, intenta descargar el archivo completo, alcanza el límite de 5 MB deMAX_REQUEST_SIZE_BYTESy el Onebox falla con un error de “tamaño demasiado grande”.
Ya he probado las siguientes configuraciones, pero el problema persiste:
- Establecer una cadena similar a la de un navegador en
onebox_user_agent. - Añadir el dominio de origen a
force_custom_user_agent_hosts. - Verificar que el servidor no tiene un proxy global configurado (
env | grep -i proxyestá vacío). - Probar la misma URL en otras instancias de Discourse, donde se previsualiza perfectamente con Onebox.
La Pregunta:
¿Por qué una instancia de Discourse fallaría en negociar una solicitud de rango (206) mientras que otra instancia, apuntando a la URL exacta, tiene éxito en la misma red?
¿Existe alguna configuración interna específica, middleware de seguridad o lógica de FinalDestination que pueda estar eliminando las cabeceras Range o causando que el servidor remoto recurra a una respuesta 200 completa?
¡Cualquier información o indicación sobre dónde buscar a continuación sería muy apreciada!