X-Forwarded-Proto
L'en-tête qui indique à l'application le protocole employé par le client, puisque la requête que le proxy lui adresse est en HTTP simple sur 127.0.0.1:3000 : proxy_set_header X-Forwarded-Proto $scheme vaut https quand le navigateur est arrivé sur 443. Le HTTPS terminé par Nginx n'est pas observable depuis l'application — son socket est en clair, et le restera. Sans cet en-tête, elle se croit en clair, et trois choses suivent : des URL absolues construites en http://, une boucle de redirections quand le framework force HTTPS pendant que Nginx renvoie la requête, et des cookies posés sans l'attribut Secure. C'est le dernier qui coûte, parce qu'il ne ressemble pas à une erreur de configuration : il ressemble à « ma session se perd au hasard ». L'application doit encore l'accepter — app.set('trust proxy', 1) avec Express — sinon elle l'ignore, à juste titre, un client pouvant le falsifier lui aussi.
Aussi écrit : XFP, X-Forwarded-Protocol
