
Ich habe einen Webserver, auf dem die Website example.com läuft. Ich habe eine HTTP-zu-HTTP-Umleitung auf Apache konfiguriert; siehe unten
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /usr/www/htdocs
SSLEngine On #etc...
</VirtualHost>
Eine Anfrage über http wird intern erfolgreich umgeleitet.
Das Problem sind also externe Anfragen, die über den Squid Reverse Proxy laufen müssen. Und beim Versuch, eine Verbindung zu http://example.com herzustellen, wird eine http-Verbindung hergestellt. Nicht https, die Umleitung ist erfolglos.
Wenn wir die URL eingeben alshttp://example.com/index.html, die Verbindung wird erfolgreich auf https umgeleitet.
Hat jemand eine Idee, wie wir dieses Problem lösen können?
Antwort1
Beim Verbindungsversuch
http://example.com
wird eine HTTP-Verbindung (keine HTTPS-Verbindung) hergestellt und die Umleitung ist nicht erfolgreich.
Ein Problem, das Sie anscheinend haben, ist, dass http://example.com
in Ihrer Apache-Virtual-Host-Konfiguration keine Einträge für vorhanden sind. Das www
Präfix ist technisch gesehen eine Subdomäne von example.com
und wird daher für die Auflösung als separate Site betrachtet. Abgesehen von Problemen mit Squid wäre eine einfache Lösung, Ihre virtuellen Hosts so zu ändern, dass die verschiedenen Variationen von example.com
mit der ServerAlias
Direktive berücksichtigt werden:
# Redirect http://example.com and http://www.example.com
# to https://www.example.com
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://www.example.com
</VirtualHost>
# Serve https://example.com and https://www.example.com
# from the same DocumentRoot
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /usr/www/htdocs
SSLEngine On #etc...
</VirtualHost>
Beachten Sie, dass Sie auch https://example.com
hierher weiterleiten können https://www.example.com
:
# Redirect http://example.com and http://www.example.com
# to https://www.example.com
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://www.example.com
</VirtualHost>
# Redirect https://example.com to https://www.example.com
<VirtualHost *:443>
ServerName example.com
Redirect permanent / https://www.example.com
SSLEngine On #etc...
</VirtualHost>
# Serve https://www.example.com
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /usr/www/htdocs
SSLEngine On #etc...
</VirtualHost>
Weitere Informationen zu namenbasierten virtuellen Hosts finden Sie unterHier.