J’effectue donc une installation Docker non prise en charge.
Cela signifie exécuter Ember CLI dans son propre conteneur avec un volume partagé sur un port différent et un proxy, comme prévu, vers le serveur Rails.
Malheureusement, pour tous les actifs .css, j’obtiens un « Bad Gateway 502 » de curl et du navigateur lorsque je passe entièrement par HTTPS et le proxy inverse nginx.
Il semble qu’Ember CLI ajoute un en-tête Content-Length alors que transfer-encoding: chunked est déjà ajouté par le serveur Rails.
(Je peux vérifier la réponse de Rails et d’Ember en accédant à différents ports)
Cela ne viole pas officiellement la norme du protocole HTTP 1.1, je crois (il est censé être ignoré) :
« Si un message est reçu avec à la fois un champ d’en-tête Transfer-Encoding et un champ d’en-tête Content-Length, ce dernier doit être ignoré. »
… mais cela fait que nginx refuse et annonce un 502 et ne sert pas l’actif, donc c’est sans importance.
Je peux parcourir un fichier CSS avec curl directement vers le conteneur sur localhost, mais au niveau de nginx, il n’est PAS content :
upstream sent "Content-Length" and "Transfer-Encoding" headers at the same time while reading response header from upstream
Quelqu’un a-t-il des idées sur la façon d’empêcher Ember CLI de faire cela ou une solution de contournement ? Je suis surpris que ce ne soit pas un problème avec l’installation standard ? (car la chaîne de communication devrait être très similaire).
La version de Discourse est 2.8.9
En-tête dans le dock (coupes mineures pour la brièveté) :
< content-transfer-encoding: binary
< content-type: text/css; charset=utf-8
< referrer-policy: strict-origin-when-cross-origin
< set-cookie: __profilin=p%3Dt; path=/forum; HttpOnly; SameSite=Lax
< **transfer-encoding: chunked**
< Vary: Accept, Accept-Encoding
< x-content-type-options: nosniff
< x-discourse-route: stylesheets/show
< x-download-options: noopen
< x-frame-options: SAMEORIGIN
< x-permitted-cross-domain-policies: none
< x-xss-protection: 0
< content-encoding: null
< **Content-Length: 3055**