wake-up-neo.com

Was ist der De-facto-Standard für einen Reverse-Proxy, um zu wissen, dass das Backend-SSL verwendet wird?

Ich habe einen Reverse Proxy, der HTTPS auf der Außenseite, aber HTTP auf der Innenseite.

Dies bedeutet, dass In-App-URLs standardmäßig HTTP als Schema haben, da dies die Art ist, mit der sie kontaktiert werden.

Wie kann der Proxy dem Backend mitteilen, dass HTTPS verwendet werden soll?

28
Chris Wesseling

Der Proxy kann zusätzliche (oder überschreibende) Header zu Anforderungen hinzufügen, die er empfängt und an das Back-End weiterleitet. Diese können verwendet werden, um Informationen an das Backend zu übermitteln.

Bisher habe ich ein Paar gesehen, das dazu benutzt wurde, die Verwendung von https im URL-Schema zu erzwingen:

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

Und wikipedia erwähnt auch:

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

Das, was Sie zum VirtualHost auf Apache : anderen Proxies hinzufügen sollten, sollte eine ähnliche Funktionalität haben.

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

Ich denke, es ist am besten, sie alle einzustellen oder eine zu setzen, die funktioniert und die anderen bekannten zu entfernen. Um zu verhindern, dass böse Kunden mit ihnen herumspielen.

30
Chris Wesseling

Es dauerte mehrere Stunden, bis ich die magische Umgebung für meine Umgebung gefunden hatte. Ich habe einen SSL-httpd-Apache-Reverse-Proxy vor einem Jetty-App-Server und einem Apache2-HTTP-Server. Diese Antwort gab mir tatsächlich die Informationen, die funktionierten. Das Hinzufügen von RequestHeader set "X-Forwarded-Proto" expr =% {REQUEST_SCHEME} zur Site-Conf-Datei reichte für mich aus, damit das Ziel https anstelle von http als Protokoll verwendet, wenn Links in der Antwort erstellt werden. Ich habe oben das X-FORWARDED-PROTOKOLL probiert, aber das hat nicht funktioniert. Hoffentlich hilft dies bei zukünftigen Google-Suchen!

0
Bryan