Apache-Weiterleitung von http zu https mit Squid-Reverse-Proxy

Apache-Weiterleitung von http zu https mit Squid-Reverse-Proxy

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.comwird eine HTTP-Verbindung (keine HTTPS-Verbindung) hergestellt und die Umleitung ist nicht erfolgreich.

Ein Problem, das Sie anscheinend haben, ist, dass http://example.comin Ihrer Apache-Virtual-Host-Konfiguration keine Einträge für vorhanden sind. Das wwwPräfix ist technisch gesehen eine Subdomäne von example.comund 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.commit der ServerAliasDirektive 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.comhierher 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.

verwandte Informationen