So erstellen Sie einen einfachen Reverse-Proxy, der mehrere Dienste unter einem einzigen Port verfügbar macht

566
Datageek

Das häufig auftretende Problem bei Microservices ist, dass die Entwicklung dieser Dienste mühsam sein kann, wenn Sie AJAX verwenden und versuchen, Eingaben von Multiuple-Hosts / Ports (aufgrund von domänenübergreifenden Anforderungen) zu lesen.

Ich bin auf der Suche nach einer sehr einfachen Lösung, die mit Linux funktioniert (vorzugsweise mit Python oder Socat), wo ich einige Hosts / Ports unter einem einzigen Port verketten kann.

host1:port1/service1 and host2:port2/service2 ... -> localhost:port 

Auf alle entfernten Hosts / Ports kann von demselben localhost-Port aus zugegriffen werden.

Die Anfragen sollten anhand der Pfade weitergeleitet werden:

localhost:port/service1 -> host1:port1/service1  localhost:port/service2 -> host2:port2/service2 
0

1 Antwort auf die Frage

1
把友情留在无盐

Ein HTTP-Reverse-Proxy kann diese Apache-Konfiguration mit aktiviertem mod_proxy verwenden.

Listen port ProxyPass /service1 http://host1:port1/service1 ProxyPass /service2 http://host1:port1/service2 

Senden von localhost: port / service1 und localhost: port / service2 setzt Kenntnisse über das http-Protokoll voraus. der service unterscheidet sich nicht auf der tcp-ebene, sondern auf einer http-get-anforderung. Ich weiß nicht, dass socat damit umgehen kann.