No se puede habilitar DiscourseID en un sitio con force-https desactivado

Para dar contexto, tengo mi sitio de prueba de Discourse ejecutándose en un contenedor Proxmox detrás de Nginx (npmplus) en un servidor diferente de la misma red (pero no de la misma subred). No es algo realmente especial. Intenté habilitar force-https, pero seguí obteniendo varios errores de validación CSRF, así que simplemente lo desactivé de nuevo porque no valía la pena pelear. Independientemente de todo eso, el sitio funciona bien en https porque Nginx y Cloudflare están configurados correctamente para ello:

Acabo de intentar habilitar DiscourseID en el sitio, pero me encontré con un error:


¿Existe una solución alternativa que no implique pelear con npmplus durante horas para que la validación CSRF de Discourse deje de quejarse de todo? Este hilo no es para depurar npmplus ni SSL; simplemente quiero arreglar Discourse ID.

El mensaje de error “Discourse ID returned” indica que el URI de redirección del sitio debe ser https, por lo que necesitas activar force_https o, de lo contrario, indicar mediante tu configuración del proxy que las solicitudes están llegando a través de https.

Excepto para todo lo que no lo hace:

3 Me gusta

Vaya, supongo que nunca noté nada de eso. Como dije, intenté habilitar force_https, pero seguía recibiendo errores CSRF al hacer cualquier cosa. Quizás las variables normales de nginx simplemente no funcionan en npmplus (según las instrucciones que dicen lo mismo justo arriba), ya que esta era la configuración que estaba usando:

Además, el puerto 443 en mi CT no respondía, por lo que aún se está conectando localmente por el 80.

Debes solucionar la configuración de tu proxy inverso y hacer que HTTPS funcione correctamente.

1 me gusta

Creo que el problema actual es simplemente una extrañeza con las variables que npmplus está exponiendo. Tenía una configuración funcional antes, pero la perdí y en este momento no estoy muy seguro de qué hacer. Me decidí por lo siguiente, pero no quiero habilitar la configuración hasta tener el 100% de certeza de que funcionará, para evitar BAD CSRF y tener que recurrir nuevamente a la consola de Rails para solucionarlo.



Curiosamente, parece que solo está rechazando el tráfico por encima del puerto 443, lo cual no creo que sea normal, aunque el proxy esté configurado en el puerto 80 en este momento.

No se puede desreferenciar este puntero: creo que te refieres al contenedor de Discourse.

force_https no afecta si Discourse se sirve en el puerto 443 (HTTPS); solo indica a Discourse que debe asumir que siempre se accede a él mediante https.

1 me gusta