HTTP X-Forwarded-Proto Header

Der HTTP-Header X-Forwarded-Proto ist ein Request-Header, der das ursprüngliche Protokoll (HTTP oder HTTPS) transportiert, wenn SSL-Termination an Proxies oder Load-Balancern erfolgt. Backend-Server verwenden ihn für sichere Redirect-Generierung und HTTPS-Enforcement.

Typ

Request-Header

Syntax

Der Header enthält das ursprüngliche Protokoll-Schema.

http
X-Forwarded-Proto: https
X-Forwarded-Proto: http

Direktiven

Die Direktiven definieren ursprüngliches Request-Protokoll.

https
Ursprünglicher Client-Request war verschlüsselt via HTTPS, auch wenn Proxy-zu-Backend unverschlüsselt ist.
http
Ursprünglicher Client-Request war unverschlüsselt via HTTP.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für den X-Forwarded-Proto-Header.

Beispiel 1 SSL Termination Load Balancer

http
GET /checkout HTTP/1.1
Host: backend.internal
X-Forwarded-Proto: https
X-Forwarded-For: 203.0.113.42
X-Forwarded-Host: shop.example.com

Load-Balancer terminiert HTTPS, Backend empfängt HTTP-Request aber erkennt ursprüngliches HTTPS via Header.

Beispiel 2 HTTPS Redirect Logic

http
GET /login HTTP/1.1
Host: app-backend.local
X-Forwarded-Proto: http

HTTP/1.1 301 Moved Permanently
Location: https://app.example.com/login

Backend erkennt unverschlüsselten Request und redirected zu HTTPS-Version basierend auf X-Forwarded-Proto.

SSL Termination Flow

X-Forwarded-Proto SSL-Termination-Ablauf

Vorteile für die Systemarchitektur

  • SSL-Offloading: Zentralisierte SSL-Termination am Load-Balancer entlastet Backend-Server
  • Sichere Redirects: Backend generiert HTTPS-Links ohne selbst TLS zu implementieren
  • Security-Header-Logic: Secure-Cookies und HSTS basierend auf ursprünglichem Protokoll

Spezifikation

RFC 7239 – Forwarded HTTP Extension https://www.rfc-editor.org/rfc/rfc7239.html

Weitere Spezifikationen

Forwarded Header, X-Forwarded-For Header