Qual è lo standard di fatto per un proxy inverso per indicare che il back-end è utilizzato SSL?

Ho un proxy inverso che fa HTTPS all’esterno, ma HTTP all’interno.

Ciò significa che per impostazione predefinita gli URL in-app avranno HTTP come schema, in quanto è il modo in cui viene contattato.

In che modo il proxy può indicare al back-end che deve essere utilizzato HTTPS?

Il proxy può aggiungere intestazioni extra (o sovrascrivere) alle richieste che riceve e passa al back-end. Questi possono essere usati per comunicare informazioni al back-end.

Finora ho visto un paio usato per forzare l’uso di https nello schema URL:

X-Forwarded-Protocol: https X-Forwarded-Ssl: on X-Url-Scheme: https 

E wikipedia menziona anche:

 # a de facto standard: X-Forwarded-Proto: https # Non-standard header used by Microsoft applications and load-balancers: Front-End-Https: on 

Questo è ciò che dovresti aggiungere a VirtualHost su apache : altri proxy dovrebbero avere funzionalità simili

 RequestHeader set X-FORWARDED-PROTOCOL https RequestHeader set X-Forwarded-Ssl on # etc. 

Penso che sia meglio impostarli tutti, o impostarne uno che funzioni e rimuovere quelli noti. Per evitare che i malvagi clienti si prendano cura di loro.

Mi ci sono volute diverse ore di googling per trovare l’ambientazione magica per il mio ambiente. Ho un proxy inverso httpd apache SSL di fronte a un server di app di jetty e un server http apache2. Questa risposta in realtà mi ha dato le informazioni che hanno funzionato. Per me, l’aggiunta di RequestHeader ha impostato “X-Forwarded-Proto” expr =% {REQUEST_SCHEME} al file conf del sito è stato sufficiente affinché la destinazione utilizzi https anziché http come protocollo quando si creano collegamenti nella risposta. Ho provato X-FORWARDED-PROTOCOL sopra, ma non ha funzionato. Speriamo che questo possa aiutare nelle future ricerche su google!