Mon instance Discourse est derrière un proxy :
server {
server_name forum.[...];
location / {
proxy_pass http://IP_ADDRESS;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
client_max_body_size 10m;
listen 443 ssl; # géré par Certbot
ssl_certificate /etc/letsencrypt/live/forum.[...]/fullchain.pem; # géré par Certbot
ssl_certificate_key /etc/letsencrypt/live/forum.[...]/privkey.pem; # géré par Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # géré par Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # géré par Certbot
}
server {
if ($host = forum.[...]) {
return 301 https://$host$request_uri;
} # géré par Certbot
server_name forum.smbcn.org;
listen 80;
return 404; # géré par Certbot
}
Ce qui redirige vers le serveur où Discourse est installé (installation Docker standard) :
server {
listen 80; listen [::]:80;
server_name forum.[...];
client_max_body_size 10m;
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
Lorsque je force le HTTPS, les utilisateurs invités ne peuvent pas procéder à l’inscription. Les journaux du navigateur affichent une erreur 403 (mauvais CSRF), bien qu’un jeton CSRF ait été généré avec succès. Les invitations fonctionnent parfaitement lorsque le HTTPS n’est pas forcé.
Je suppose qu’il y a un problème avec la manière dont je relaie les requêtes HTTPS vers HTTP, peut-être certains en-têtes manquants ?