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.
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]
Wenn Ihre .htaccess-Datei bereits Rewrite-Regeln enthält, sollten Sie die obige Regel an den Anfang stellen.
Beachten Sie, 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 Ihre 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 SSL-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]