Zum Hauptinhalt springen

Wie mache ich eine Umleitung von HTTP auf HTTPS?

Eine Umleitung von HTTP zu HTTPS kann an verschiedenen Stellen erfolgen: in der Applikation, im Webserver oder einem vorgelagerten Proxy/CDN wie Cloudflare.

Bei Verwendung von Apache httpd als Managed Service kann die Umleitung mit einer .htaccess-Datei konfiguriert werden.

Die Datei .htaccess sollte in dem mit nine-manage-vhost definierten Ordner --webroot (document root) abgelegt werden und folgende Direktiven beinhalten.

.htaccess
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]

Wenn deine .htaccess-Datei bereits Rewrite-Regeln enthält, solltest du die obige Regel an den Anfang stellen.

Beachte, dass es für NGINX keine vergleichbare Alternative zu .htaccess-Dateien gibt, eine Umleitung ist in diesem Fall nur mit einem massgeschneiderten Template möglich.

Wird Apache httpd oder auch NGINX als Proxy für z.B. eine Node.js-Anwendung verwendet, kann die Umleitung mit einem bestehenden Template für nine-manage-vhosts umgesetzt werden.

Wenn alle Anfragen an deine Applikation mit HTTPS erfolgen, kann die Anwendung von Strict-Transport-Security (HSTS) zusätzliche Sicherheit schaffen.

Umleitung hinter einem Load Balancer​

Wenn ein Load Balancer von Nine die sichere Verbindung terminiert, verbindet sich dieser intern ohne Verschlüsselung auf den Webserver. Da der obige Check mit %{HTTPS} !on nicht anschlagen kann, kommt beim Aufruf der Seite über eine TLS-Verbindung die Endlosschlaufe. Aus diesem Grund gibt es einen alternativen Check, welcher auf einem HTTP-Header basiert:

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]