Pour contexte, j’ai mon site de test Discourse exécuté dans un conteneur Proxmox derrière Nginx (npmplus) sur un autre serveur du même réseau (mais pas du même sous-réseau). Rien de vraiment spécial. J’ai essayé d’activer force-https, mais j’ai continué à recevoir de nombreuses erreurs de validation CSRF, alors je l’ai désactivé car cela ne valait pas la peine de se battre. Quoi qu’il en soit, le site fonctionne correctement en https car Nginx et Cloudflare sont tous deux correctement configurés à cet effet :
Existe-t-il une solution de contournement qui n’implique pas de se battre pendant des heures avec npmplus pour que la validation CSRF de Discourse cesse de se plaindre de tout ? Ce fil de discussion n’est pas destiné au débogage de npmplus ou de SSL ; je souhaite simplement corriger Discourse ID.
Le message d’erreur « Discourse ID returned » indique que l’URI de redirection du site doit être en https. Vous devez donc activer force_https ou indiquer autrement, via votre configuration de proxy, que les requêtes arrivent via https.
Hé, je suppose que je n’ai jamais remarqué tout cela. Comme je l’ai dit, j’ai essayé d’activer force_https, mais je continuais à recevoir des erreurs CSRF lors de toute action. Peut-être que les variables nginx normales ne fonctionnent tout simplement pas sur npmplus (selon les instructions qui le précisent juste au-dessus), car voici la configuration que j’utilisais :
Je pense que le problème actuel vient simplement d’un comportement étrange des variables exposées par npmplus. J’avais une configuration fonctionnelle auparavant, mais je l’ai perdue et je ne suis pas vraiment sûr de quoi faire pour le moment. Je me suis arrêté à la configuration suivante, mais je ne veux pas activer le paramètre tant que je ne suis pas à 100 % certain que cela fonctionnera, afin d’éviter une erreur BAD CSRF et d’avoir à passer par la console Rails pour la corriger à nouveau.
Curieusement, il semble rejeter uniquement le trafic au-dessus du port 443, ce que je ne pense pas être normal, même si le proxy est actuellement configuré sur le port 80.
Impossible de désréférencer ce pointeur — je pense que vous parlez du conteneur Discourse ?
force_https n’affecte pas le fait que Discourse serve sur le port 443 (HTTPS) ; cela indique simplement à Discourse qu’il doit supposer qu’il est toujours accédé via https.