2014-02-06 10 views
5

Fall:Sicherungsprotokoll und die Portnummer von Reverse-Proxy-Anfrage

Benutzer fordert https://api.abc.com

Diese umgekehrte Proxy-Klasse zugänglich ist (Apache 2.2) auf einem internen Server-Server an http://internal.abc.com:123

Per Retain original request URL on mod_proxy redirect, durch Zugabe von :

zu httpd.conf, internal.abc.com erkennt derzeit das ursprüngliche requ est url als:

http://api.abc.com:123

Gibt es für mich eine Möglichkeit, die Original-URL von https://api.abc.com zu erholen? Das heißt, auch das ursprüngliche Protokoll zu behalten (http) und Port (80 oder leer ist auch in Ordnung)

+0

Hallo ChaimKut, hast du eine Lösung gefunden? Wenn ja, könntest du bitte teilen? Danke – Daniyar

Antwort

1
ProxyRequests Off 
ProxyPreserveHost On 

ProxyPass/http://internal.abc.com:123 
ProxyPassReverse/http://internal.abc.com:123 

Dieser Code ist aus meiner Prüfung in meinem eigenen envoirment sollte nehmen internal.abc.com:123 und Umgehe es zu welcher URL du den Code in die < virtualhost> Klammern hinzufügt.

Wenn es api.abc.com sollte es die Informationen von internal.abc.com:123 zu api.abc.com Proxy ohne die Portnummer dahinter. Das ProxyPassReverse erledigt dies für Sie.

+0

Die Frage ist nicht wie Proxy. Nehmen wir an, dass das Proxying funktioniert (mit einer ähnlichen Lösung wie die von Ihnen vorgeschlagene Lösung). Die Frage ist, wie der Rechner hinter dem Reverse-Proxy (Hostname 'internal') den Port und das Protokoll der ursprünglichen Benutzeranforderung kennen kann. – ChaimKut

+0

Alle Daten werden normalerweise weitergeleitet, zB benutze ich das für Wordpress Admin Projekte. Es wird die Login- und Cookie-Informationen für mich weitergeben. Die meisten Leute, die ich benutze, scheinen es für tomcat auf einem anderen Port zu verwenden, aber mit proxypass, um es intern zu tarnen. – alexj

+0

Ja, es stimmt, dass Login und Cookie weitergegeben werden. Mein Problem ist, dass ich das Protokoll der ursprünglichen Anfrage (https, sagen wir mal) nicht sehe und dass der Port ebenfalls übergeben wird. – ChaimKut

2

Der Weg, den ich habe, ist durch Hinzufügen eines Headers in meiner virtuellen Host-Datei. RequestHeader-Set original-protocol-ssl true early

Sie müssen dann in Ihrem Code nach dieser Kopfzeile suchen, um festzustellen, wo sie herkommt.

Verwandte Themen