Hallo Leute ! In diesem Tutorial zeigen wir, wie man Apache HTTP zwangsweise auf HTTPS umleitet
Wenn Sie Websitebesitzer oder Systemadministrator sind, haben Sie wahrscheinlich regelmäßig mit Apache zu tun. Eine der häufigsten Aufgaben, die Sie wahrscheinlich ausführen werden, ist das Umleiten des HTTP-Datenverkehrs auf die gesicherte (HTTPS) Version Ihrer Website.
Im Gegensatz zu HTTP, wo Anforderungen und Antworten im Klartext gesendet und zurückgegeben werden, verwendet HTTPS TLS/SSL, um die Kommunikation zwischen dem Client und dem Server zu verschlüsseln.
Wir werden dies auf zwei verschiedene Arten sehen:
ich. Virtuellen Host verwenden.
ii. Verwendung von .htaccess
Fangen wir an
Virtuellen Host verwenden
In der Direktive für virtuelle Hosts können Sie das Site Document Root (das Verzeichnis, das die Website-Dateien enthält) angeben, eine separate Sicherheitsrichtlinie für jede Site erstellen, verschiedene SSL-Zertifikate verwenden, die Umleitung konfigurieren und vieles mehr.
Wenn ein SSL-Zertifikat auf einer Domäne installiert ist, haben Sie zwei virtuelle Hostanweisungen für diese Domäne. Der erste für die HTTP-Version der Website auf Port 80 und der andere für die HTTPS-Version auf Port 443.
In Red-Hat-basierten Distributionen wie CentOS und Fedora werden virtuelle Hostdateien in /etc/httpd/conf.d gespeichert. Unter Debian und seinen Derivaten wie Ubuntu werden die Dateien in /etc/apache2/sites-available
gespeichert Verzeichnis.
Um eine Website auf HTTPS umzuleiten, verwenden Sie Redirect
Direktive, wie am Beispiel „unixcop.com“
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
</VirtualHost>
Erklärung
Lassen Sie uns den obigen Code erklären
VirtualHost *:80
– Der Apache-Server wartet auf eingehende Verbindungen auf Port 80 (HTTP) für die angegebene Domain.VirtualHost *:443
– Der Apache-Server wartet auf eingehende Verbindungen auf Port 443 (HTTPS) für die angegebene Domain.
Der ServerName
und ServerAlias
Direktiven geben die Domänennamen des virtuellen Hosts an. Stellen Sie sicher, dass Sie es durch Ihren Domainnamen ersetzen. (in unserem Fall unixcop.com)
Die hervorgehobene Zeile, Redirect permanent / https://example.com/
innerhalb des virtuellen HTTP-Hosts leitet den Datenverkehr an die HTTPS-Version der Website weiter.
Normalerweise möchten Sie auch die HTTPS-www-Version der Website auf die Nicht-www-Version umleiten oder umgekehrt. Hier ist eine Beispielkonfiguration:
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
<If "%{HTTP_HOST} == 'www.unixcop.com'">
Redirect permanent / https://unixcop.com/
</If>
</VirtualHost>
Der obige Code prüft, ob der Anforderungsheader die www-Domain enthält und leitet zur Nicht-www-Version weiter.
Immer wenn Sie Änderungen an den Konfigurationsdateien vornehmen, müssen Sie den Apache-Dienst neu starten oder neu laden, damit die Änderungen wirksam werden
.htaccess
ist eine Konfigurationsdatei auf Verzeichnisbasis für den Apache-Webserver. Diese Datei kann verwendet werden, um zu definieren, wie Apache Dateien aus dem Verzeichnis bereitstellt, in dem die Datei abgelegt wird, und um zusätzliche Funktionen zu aktivieren/deaktivieren.
Üblicherweise die .htaccess
Datei wird im Domain-Root-Verzeichnis platziert, aber Sie können auch andere .htaccess
haben Dateien in den Unterverzeichnissen.
Diese Methode erfordert den mod_rewrite
Modul, das auf dem Apache-Server geladen werden soll. Dieses Modul wird standardmäßig auf den meisten Servern geladen. Wenn möglich, ziehen Sie es vor, eine Umleitung im virtuellen Host zu erstellen, da dies einfacher und sicherer ist.
Um den gesamten HTTP-Datenverkehr auf HTTPS umzuleiten, öffnen Sie das Stammverzeichnis .htaccess
Datei, und fügen Sie ihr den folgenden Code hinzu
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
Erklärung
RewriteEngine On
– aktiviert die Rewrite-Fähigkeiten.RewriteCond %{HTTPS} off
– prüft auf HTTP-Verbindung, und wenn die Bedingung erfüllt ist, wird die nächste Zeile ausgeführt.RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
– Umleitung von HTTP zu HTTPS mit Statuscode 301 (Moved Permanently).
Das folgende Beispiel hat eine zusätzliche Bedingung, die prüft, ob die Anfrage mit www
beginnt . Verwenden Sie es, um alle Besucher zu zwingen, die HTTPS-Nicht-www-Version der Website zu verwenden
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
Beim Bearbeiten von .htaccess
-Datei müssen Sie den Server nicht neu starten, da Apache die Datei bei jeder Anfrage liest.
Sie wissen also bereits, wie Sie Apache dazu zwingen, HTTPS zu verwenden.
Apache-Dokumentation