Muchos activos devuelven 500 aleatoriamente

Mi primera suposición fue que se trataba de un problema de optimización de Cloudflare: asegúrate de que Rocket Launcher esté desactivado (probablemente ya lo esté, pero vale la pena comprobarlo).

Además, creo que podrías querer configurar el almacenamiento de objetos del bucket S3 utilizando Cloudflare R2 si deseas continuar usando el hardware que estás utilizando actualmente.

Mencionaste en nuestra conversación que estás usando algunos SSDs antiguos donados que instalaste poco antes de que empezara a ocurrir este problema, lo cual es una pista contundente: el firmware de Dell indica que están defectuosos, pero smartctl los muestra como correctos. Creo que el firmware de Dell parpadea en naranja porque detecta una alta latencia y respuestas de E/S erráticas, o un firmware no compatible. Discourse solicita a los discos que lean decenas de archivos de JavaScript compilados todos al mismo tiempo, y los SSDs antiguos no compatibles pueden saturarse bajo esta repentina ráfaga de E/S. El controlador de almacenamiento se cuelga intentando obtener los datos, agotándose el tiempo de espera después de exactamente 30 segundos, que es un tiempo de espera predeterminado común para dispositivos SCSI/de bloque.

Dado que los discos se cuelgan durante 30 segundos, Discourse (Rails/nginx) se bloquea o agota el tiempo de espera al intentar obtener los archivos y genera un error 500. Cloudflare probablemente esté capturando estos errores 500 y aplicando las cabeceras incorrectas, pasando la información al navegador, lo que provoca el NS_ERROR_CORRUPTED_CONTENT que estás viendo.

Reemplaza esos SSDs, o si debes usarlos, entonces utiliza un bucket de almacenamiento de objetos para descargar los activos y las subidas de Discourse; puedes usar Cloudflare R2, que es compatible con S3 y tiene un plan gratuito (yo lo tengo y funciona bien). Así, tu servidor no necesitará leer miles de archivos pequeños desde esos SSDs defectuosos, ya que evitará el cuello de botella del hardware para los activos web.