Ich möchte zwei oder mehr Webanwendungen auf dem Hostrechner bedienen, die in einer VM laufen (verschiedene Ports und einige Zeit in einem anderen Verzeichnis unter demselben Port) und weil ich den Benutzer anmelden muss, bevor er auf diese Apps zugreifen kann kann keinen statischen Proxy wie Nginx oder Apache verwenden.
Also hier ist meine Situation:
192.168.1.1: ist die Host-IP-Adresse 192.168.1.2: ist die VM IP
In der VM habe ich Folgendes:
192.168.1.2/owncloud: owncloud Adresse
192.168.1.2:8080: eine andere App
192.168.1.2:8888: 3. App
Ich möchte das haben:
192.168.1.1/app1 - & gt; 192.168.1.2/owncloud
192.168.1.1/app2 - & gt; 192.168.1.2:8080
192.168.1.1/app2 - & gt; 192.168.1.2:8888
Ich habe versucht, golang httputil.ReverseProxy zu verwenden, um dieses Routing zu erreichen, aber mit wenig Erfolg: Mein Code basiert auf dieser Arbeit: gist
%Vor% Bearbeiten:
Ich habe die VM-IP-Adresse geändert: 192.168.1.2 nicht 192.168.1.1
Es wäre besser, wenn Sie dies mit Hostnamen und nicht mit URL tun. zB
%Vor%Wenn Ihnen das nicht bekannt ist, ist der Hostname nur ein HTTP-Anforderungsheader (Host: domain.com), so dass Sie mehrere Hostnamen pro IP haben können (Apache nennt diese "benannten virtuellen Hosts").
Der Vorteil der Verwendung von Hostnamen anstelle von URLs besteht darin, dass die Webanwendung am anderen Ende nicht die URLs kennt, die Sie als Präfix verwenden, diese jedoch beachten müssen, sodass Sie Probleme mit den URLs der Web App funktioniert nicht mit den URLs, die vom Reverse Proxy erwartet werden. Wo als Hostname basierte Proxies funktionieren sollten, da die meisten Web Apps den Domainnamen nicht neu schreiben. (Dies ist eine große Verallgemeinerung, aber einige Web-Apps erlauben es Ihnen, eine Proxy-Adresse hinzuzufügen - aber im Allgemeinen werden Sie weniger Probleme mit Host-Namen bekommen)
Das größte Problem ist das Einrichten von Subdomains auf Ihrem Nameserver. Ich gehe davon aus, dass Ihre Registra / DNS-Anbieter Ihnen erlauben, Sub-Domains kostenlos zu erstellen (die meisten sollten), aber wenn Sie so etwas wie dynamisches DNS verwenden, mit dem Ihre Breitband-Verbindung abläuft, dann werden Sie auf Probleme stoßen und haben um Ihren eigenen Domainnamen mit den CNAM-Unterdomänen an Ihre dynamische DNS-Adresse zu kaufen (oder verwenden Sie ein kostenpflichtiges Konto bei Ihren dynamischen DNS-Providern, wenn sie Subdomains anbieten).
Noch eine letzte Sache, wenn Sie in owncloud suchen, dann möchten Sie vielleicht auch einen Blick auf Pydio (formal AjaxExplore) werfen. Beide haben unterschiedliche Stärken und Schwächen, aber meiner persönlichen Meinung nach ist Pydio ein besseres Produkt.
Sie übergeben die falsche IP an den Reverse-Proxy. Sollte die 192.168.1.2
Ihrer VM sein.
In den Dokumenten
NewSingleHostReverseProxy returns a new ReverseProxy that rewrites URLs to the scheme, host, and base path provided in target.
Erstellen Sie eine Karte wie diese
%Vor% Benutze httputil.ReverseProxy
baue deinen Handler
ListenAndServe
%Vor% Sie können httputil.ReverseProxy
in der globalen Karte, alle in der Datei oben, zwischenspeichern.
Hier ist ein SSLDocker Projekt, das am besten zu Ihnen passt.
Tags und Links proxy go reverse-proxy pydio