Estoy ejecutando una instancia autoalojada de Discourse en forum.embeetle.com. Ha estado funcionando bien durante varios años.
Esta mañana, noté que toda la interacción del teclado y el mouse con el foro en el navegador dejó de funcionar. Puedo cargar cualquier página del foro, pero no puedo desplazarse, iniciar sesión, buscar, etc.
Probé tanto Firefox como Chromium: el mismo problema.
Las herramientas de desarrollador de Firefox muestran este error:
Content-Security-Policy: La configuración de la página bloqueó la carga de un recurso en línea ("script-src"). forum.embeetle.com:362:10
No he realizado ninguna actualización ni he instalado ningún plugin nuevo recientemente.
¿Alguna sugerencia sobre cómo puedo depurar y solucionar esto?
Hasta donde sé, tengo una instalación estándar basada en docker, excepto que la estoy ejecutando detrás de un proxy inverso Nginx. Configuración de Nginx a continuación (no estoy seguro de si es relevante):
No recuerdo haber establecido un tema por defecto, pero quizás lo hice y lo olvidé.
Me gustaría deshabilitar temporalmente los temas por defecto, para que nuestro foro sea utilizable mientras averiguamos qué está mal con los temas. ¿Cómo puedo hacerlo, si solo puedo acceder a las páginas de administración con los temas deshabilitados? En modo seguro, todos los temas ya están deshabilitados, y habilitarlos y luego deshabilitarlos de nuevo no parece tener ningún efecto.
Hay tres temas disponibles (ver abajo). Ninguno de ellos está habilitado por defecto.
Extraño, para mí en Safari, está informando que se niega a ejecutar la línea 315. Que es el script en línea para el precargador de Discourse-spash. Así que no está relacionado con el tema.
Como solución inmediata, podría deshabilitar CSP usando una configuración del sitio:
Solo especulando: Si el problema persiste, podría ser que su entorno de servidor esté enviando algo inesperado. ¿O algún otro script interfiriendo (está ejecutando algún plugin personalizado u otros scripts)?
Tenga en cuenta que eso lo dejará en un estado vulnerable y debería solucionarse lo antes posible. Pero al menos su foro vuelve a funcionar.
Por ahora, he implementado una solución alternativa diferente, añadiendo una reescritura en la configuración de nginx (a nivel de servidor) de la siguiente manera:
rewrite ^(.*)$ $1?safe_mode=no_themes break;
Así que los visitantes usarán el modo seguro por defecto ahora.
Para permitir una mayor exploración de este problema, también he duplicado el servidor del foro sin la rewrite en https://raw.forum.embeetle.com. Si visitas esa URL, todavía verás el problema original.
No estoy usando ningún script personalizado. Estoy usando algunos plugins, experimentaré si deshabilitar alguno de ellos tiene algún efecto.
Lo encontré: en realidad fue un problema con mi configuración de nginx que ahora emitió accidentalmente un encabezado Content-Security-Policy demasiado estricto para Discourse.
Eliminar Content-Security-Policy solucionó mi problema.