Última actualización:
Problema resuelto, se encontró la causa raíz; no estaba relacionada con Discourse (¡lo siento, chicos!). El problema fue que el certificado se actualizó y se sirvió a través de un HAP. Antes no utilizábamos un HAP y Discourse lo servía por sí mismo. Olvidamos este detalle, lo que provocó el error de CORS.
Lecciones aprendidas:
- Revertir Discourse no es una opción; es mejor tener una copia de seguridad de toda la máquina (afortunadamente, en este caso sí la teníamos).
- Todavía estoy investigando por qué fue tan difícil reconstruir con un SHA específico siguiendo las instrucciones que leí aquí; no pude hacerlo.
- Es mejor siempre servir los certificados desde el HAP, pero no olvidarse de ello. (Como nota para cualquier otra persona: es necesario añadir el parámetro
'set-header X-Forwarded-Proto https', ya que Discourse tiene su propio NGINX, y ahí es donde fallaba). - El hecho de que nadie reportara el mismo problema (incluso considerando que este es un caso extremo, ya que el plugin no es oficial) apuntaba en esa dirección (comunidad tal como se pretendía :P).
- El problema solo se manifestó tarde (hasta el punto de que no recordábamos el cambio de certificado) debido a la reconstrucción desencadenada por la actualización, momento en el cual falló.
Una vez más, gracias y disculpas por el ruido.