2016-06-21 15 views
0

Ich habe erfolgreich (soweit ich das beurteilen kann) einen httpd Reverse Proxy von einem Internet-zugewandten Server zu einem anderen Nicht-Internet-zugewandten Server erstellt. Ich habe auch eine Routing-Tabelle mit Haproxy erstellt, um bestimmte Anfragen an bestimmte andere Server an bestimmten Ports zu leiten. Nennen wir sie die Server A, B und C, wobei C die Liste der Server und Ports angibt, an die geroutet wird.httpd Reverseproxy, um alle Dateien in HTML-Seiten zu bedienen serviert

Aufgrund unserer Serverarchitektur ist dies der einzige Weg, Daten auf dem gewünschten Server im Internet bereitzustellen.

Wenn ich die Website unter https serverA.com/jira besuche, habe ich A senden an B mit http serverB/jira, die Routen von/jira auf dem Server in C hostet unsere interne jira Instanz bei http serverC: somePort

Ich bekomme eine Seite zurück von Jira, aber es ist unformatiert und erwähnt, dass die Seite ein defekter Link ist. Im Firefox-Debugger sehe ich in der Netzwerk-Registerkarte, dass die Seite jira mit einem 404-Fehler zurückkehrte, aber dann mehrere andere GETs wegen des Inhalts der empfangenen HTML-Seite platziert wurden und alle 404'd bekommen, was Sinn macht, warum die Seite unformatiert ist .

Meine Hauptfrage ist dies: Die httpd verwendet einen Standort-Block basierend auf/jira, aber wenn die zusätzlichen GET-Anfragen gesendet werden, werden sie an https serverA.com/additionalFiles.(css, js, etc.) gesendet für die der Server Proxy nicht korrekt umkehrt. Gibt es eine Möglichkeit, alle Anfragen in der eingehenden HTML-Seite zu jira/additionFiles anstelle von additionalFiles zu ändern ODER den httpd-Dienst zu haben, um weiterhin den Reverse-Proxy für den Rest der Abhängigkeiten zu bedienen (ich weiß, dass http verbindungslos ist)? Wenn nicht, was wäre die beste Praxis?

Meine zweite Frage, die mit der ersten einhergeht, warum sehe ich die 404 in der ersten Seite laden und wie würde ich es auf 200 ändern?

Antwort

0

Unsere Lösung bestand darin, Stunnel stattdessen auf dem Front-End-Server zu verwenden und den gesamten HTTPS-Verkehr an Server B weiterzuleiten, der dann die Verteilungen verteilt, wohin der Verkehr gehen soll. Ich benutze Server C und habe sie Server A als Proxy verwenden, so dass alle Daten korrekt bedient werden und Server B ist nur ein Mittelmann.