Golang Reverse Proxy mit mehreren Apps

8

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

    
Amine 10.01.2014, 21:58
quelle

3 Antworten

3

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.

    
Laurence 18.01.2014, 17:00
quelle
0

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.

    
alpe1 13.01.2014 11:38
quelle
-1

Erstellen Sie eine Karte wie diese

%Vor%

Benutze httputil.ReverseProxy baue deinen Handler

%Vor%

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.

    
user2924994 03.12.2017 04:06
quelle

Tags und Links