ProxyPassReverse Drop HTTPS
Auf meinem Heim-Netzwerk, ich habe einen web-server und einen DNS-server. Ich habe verschiedene andere Anwendungs-Server, die habe ich Hinzugefügt, Weiterleitungen, so kann ich Sie einfach besuchen Sie Websites wie myapplication.domain.com
oder www.domain.com/application
zu bekommen, um meine verschiedenen Dienstleistungen. Ich habe einen Subsonic-server läuft auf einem anderen server, und mein Ziel ist es, in der Lage sein besuchen Sie https://subsonic.domain.com
und mein Subsonic-Verkehr diente über SSL auf meinem web-server. Schließlich hoffe ich, dass der Zugriff auf diese von außerhalb der Heimat, die ist, warum es wichtig ist, als proxy für die nicht gesicherte HTTP-Datenverkehr über HTTPS, aber für jetzt, ich versuche nur, um es arbeiten zu Hause.
Wenn ich Besuch https://subsonic.domain.com
ich am Ende immer ein "Verbindung nicht möglich" - Fehler. Die Adresse, die ich zu sein scheinen umgeleitet wird subsonic.domain.com/login.view
. Wenn ich tack HTTPS auf der Vorderseite, URL, bekomme ich die login-Seite hab ich gesucht. Sobald ich wieder einloggen, aber die URL ändert, ich bin umgeleitet, und ich am Ende verlieren die HTTPS wieder ein erneut hinzufügen. Offensichtlich mache ich etwas falsch.
Habe ich einen VirtualHost für subsonic.domain.com
und versuche, mit ProxyPass
und ProxyPassReverse
zu bekommen, der Verkehr umgeleitet, in der Art, wie ich will. Hier ist mein VirtualHost für diese Website:
<VirtualHost subsonic.domain.com:443>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/[L,R=301]
ProxyRequests Off
ProxyErrorOverride Off
ProxyPreserveHost On
ServerAdmin webmaster@localhost
ProxyPass /http://192.168.1.5:4040/
ProxyPassReverse /http://192.168.1.5:4040/
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
SSL ist definitiv und läuft ohne problem. Ich habe ein identisches virtualhost für ein anderes Verzeichnis, das funktioniert gut (Weiterleitungen auf https://www.domain.com/directory
), also ich bin mir nicht sicher, was das problem hier ist. Nach der ProxyPassReverse, die URL scheint nur zu sein, verlieren die https://
Teil. Wenn ich es in die Website funktioniert gut, bis ich eine andere Seite besuchen und https://
wieder verloren geht. Wenn ich besuchen Sie den Anwendungsserver direkt an http://192.168.1.5:4040
habe ich keine Probleme überhaupt.
Jede Beratung wäre sehr zu begrüßen.
BEARBEITEN
Ein wenig Aufklärung über das, was ich versuche zu tun. Ich möchte meinen Apache-server zu tun all meine Weiterleitung und Handhabung alle meine SSL-Anforderungen. Im Grunde, aus dem browser auf den Apache-server HTTPS, die ProxyPass
vom Apache-server an den application server uns eine unverschlüsselte HTTP (was in Ordnung ist, dies ist mein internes Netzwerk), die ProxyPassReverse
von der application server der Apache-server ist plain-HTTP -, dann den Apache-server sendet, die den Verkehr als HTTPS.
Hier ist ein weiterer VirtualHost, das ist, was ich will für eine andere sub-Domain. Dies ist getestet und funktioniert zu 100%. Ich eine Verbindung zu meinem Apache-server über HTTPS, Apache-server eine Verbindung zu meiner ownCloud-server in plain old HTTP, die Antwort auf meinen Apache-server plain-HTTP -, dann den Apache-server gibt die Anfrage in HTTPS an den browser:
<VirtualHost www.domain.com:443>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/[L,R=301]
ProxyRequests Off
ProxyErrorOverride Off
ProxyPreserveHost On
ServerAdmin webmaster@localhost
ProxyPass /owncloud/http://192.168.1.251/owncloud/
ProxyPassReverse /owncloud/http://192.168.1.251/owncloud/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
ProxyPass
und -Reverse
.Nein, der Subsonic-back-end dient plain-HTTP. Ich versuche nicht, um anzugeben, die verschiedene Protokolle für den ProxyPass und das Gegenteil von dem, was ich verstehe, Sie beide sollten HTTP. Ich poste meine anderen virtualhost, wenn ich eine minute. Es ist fast identisch mit der obigen. Es geht HTTP der Applikations-server und sendet diese als HTTPS.
Ich denke, Sie würde wollen, dass
http://
auf beiden ProxyPass-und -Rückwärts-dann, und SSL werden entfernt auf der Apache-Schicht.Ich glaube, das ist richtig, das ist, wie es funktioniert auf meinem anderen VirtualHost. Ich habe gerade meinem ursprünglichen post bearbeitet, um zu zeigen, ein Beispiel dieser Arbeit und Klarstellung, was ich Suche.
Ulrich, sorry für die Verwirrung, ich wusste nicht, ich hatte
https://
in Umgekehrter in meinem post. Ich hatte die https://
auf der Rückseite für Testzwecke hatte aber seit entfernt. Auch mit http://
auf die ProxyPass-und der Rückseite, es funktioniert immer noch nicht. Ich habe editiert meinem ursprünglichen post.
InformationsquelleAutor Patrick Tucci | 2014-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, ich lief in dieses problem, als auch, und während auskommentieren
ProxyPreserveHost
behebt das problem mit der Konfiguration von oben, es gibt einen besseren Weg.Den
ProxyPass
Eins - Anweisung teilt Apache mit, um eine eingehende Anforderung an den URI, und führen Sie es durch den angegebenen host. MitProxyPreserveHost On
Apache nicht ändern Host: HTTP-header und leitet die Anfrage unverändert. (Standardmäßig ist es verpasst, das mit dem backend-host angegeben in derProxyPass
- Anweisung).Den
ProxyPassReverse
Zwei - Anweisung teilt Apache mit, entsprechend der host angegeben, die mit den Host: header in der ausgehenden Antwort und wenn es passt, passen Sie die Ort:, Content-Location:, und URI: Header entsprechen den VirtualHost oder-genauer gesagt-was Apache denkt, ist der kanonische name.Also mit der folgenden Konfiguration:
Diese nimmt eine Anfrage:
https://subsonic.domain.com/
->http://192.168.1.5:4040/
aber da
ProxyPreserveHost
auf, Sie lässt das Host: - header in der Anforderung intakt wiesubsonic.domain.com
Ihre web-Anwendung ist wahrscheinlich das senden einer Antwort aus
subsonic.domain.com
aber das entspricht nicht derProxyPassReverse
Regel, die Sie angegeben haben:http://subsonic.domain.com/
<-http://subsonic.domain.com/
Also die Konfiguration:
Dieser Regel übereinstimmen sollten, die Antworten kommen vom proxy-host.
Dank diesem meinen Tag gerettet 😉
Danke. Ich fehlte in der zweiten Zeile, zu. (Die Proxy-host hatte ServerAlias, die habe ich nicht berücksichtigt.) Die kurze version der Antwort lautet: account für alle bekannten server-Namen.
InformationsquelleAutor Jason Kincl
In meinem VirtualHost für Subsonic, ich hatte zu deaktivieren, die
ProxyPreserveHost On
Richtlinie. Ich kann jetzt den Zugriff auf die Website intern und extern.Aus irgendeinem Grund, das funktionierte gut für meine anderen VirtualHost, aber für diesen einen hat es nicht. Ich gehe davon aus, dass es ist, weil in meinem einen VirtualHost, der ProxyPass funktioniert auf ein Verzeichnis und nicht ein hostname. In meinem VirtualHost für Subsonic, ich glaube nicht, ein Verzeichnis anzugeben.
Jedem, der tatsächlich weiß, wovon er spricht, in Bezug auf Apache VirtualHosts, Weiterleitungen, etc, bitte fühlen Sie sich frei, um zu klären, ob ich nicht beschreiben genau, was Los ist.
Hier ist mein VirtualHost für jemand anderes, das das gleiche Problem.
InformationsquelleAutor Patrick Tucci