Ich weiß nicht, warum dieser Reverse-Proxy nicht funktioniert. Ich habe mehrere Beispiele gesehen und kann nichts falsch finden.
%Vor%Es protokolliert:
%Vor%Wenn ich die Zeile, die das Schema neu definiert, auskommentiere, wird die Fehlermeldung:
%Vor%Wenn ich die Zeile, die den Host neu definiert, auskommentiere, wird der Zielserver stackoverflow.com (dh, er verwendet nie "myrealserver.com").
Wenn ich nach mylocalhost.com:8080/somepath (oder sogar /) frage, bekomme ich einen 404 von Stackoverflow, egal ob stackoverflow.com/somepath existiert oder nicht. Es sagt:
%Vor%Der Host-Header wird nicht automatisch übersetzt.
Wenn ich dann die Zeile auskommentiere, die den Header "Host" setzt (und den anderen druckt). Dann kann ich "stackoverflow.com" im Log lesen, aber ich bekomme immer noch das gleiche 404-Seiten-Reporting, dass ich versuche auf "mylocalhost.com" zuzugreifen.
Ich verwende go1.2.1 linux/amd64
Wie soll ich das Programm als Proxy arbeiten lassen?
Danke an Alex von Golang-nuts, ich habe jetzt die Antwort.
Das hat Alex gesagt:
Sie müssen lediglich http.Request.Host [und Schema] im Director festlegen, um dies zu erhalten arbeiten: Ссылка
Wenn Sie die Quelle für SingleHostReverseProxy gelesen haben ( Ссылка ), es setzt seinen eigenen Direktor, den Sie übersteuern. Also musst du reimplementiere, was es bereits tut, plus den zusätzlichen Hostwechsel.
Wie auch immer, das hat den Header-Teil des Problems nicht gelöst: Der Zielserver hat immer noch "localhost: 8080" als HTTP-Host-Name erhalten, also habe ich es ohne das ReverseProxy-Paket gemacht, nur mit http und einem RoundTripper, plus eine Hilfsfunktion, die alle Header kopiert:
%Vor% Jetzt kann ich StackOverflow oder jede andere Site sehen, wie es sein soll.
Ich arbeite jedoch immer noch an POST-Anrufen, also ist dies eine Arbeit in Arbeit.