Spiegeln des Datenverkehrs mit Nginx

16

Ich muss den Datenverkehr duplizieren / spiegeln, der zu meinem Server / meiner Ressource kommt.

Ich meine, ich habe Server A und B und N (nginx) als Webserver.

Der gesamte Verkehr, der zu N / resource kommt -> leiten Sie zu A und B um

Ist es möglich?

Agus
quelle
2
Das wollen Sie wahrscheinlich nicht. Was versuchst du wirklich zu tun?
Michael Hampton
1
Ich brauche es wirklich, um es zu tun
Agus
2
Ich habe einen Anwendungsfall. Ich habe einen Client, der Daten auf meine Server überträgt, die in unserer Produktionsinfrastruktur verwendet werden. Ich benötige genau dieselben Daten, die auf meine Entwickler-Server übertragen werden, um sie weiterzuentwickeln. Der Client kann die Daten nur an einen Endpunkt senden. Frag nicht warum, ich weiß es nicht.
Der
1
Oh, ich muss den Verkehr duplizieren, ich meine, der Verkehr wird von A verarbeitet, aber B wird den Offline-Prozess empfangen
Agus
2
Ich habe eine andere Version dieser Frage mit einer Antwort gefunden, die mir geholfen hat: serverfault.com/a/515531/175380 Grundsätzlich legen Sie den Speicherort fest, der in einer post_actionDirektive gespiegelt werden soll . Dies wird ausgeführt, nachdem die Anforderung von der Produktionsmaschine erfüllt wurde.
Adam Lukens

Antworten:

14

Nginx verfügt jetzt über ein http-Spiegelmodul. Die Dokumentation finden Sie unter https://nginx.org/en/docs/http/ngx_http_mirror_module.html

Beispielkonfiguration aus der Dokumentation:

location / {
    mirror /mirror;
    proxy_pass http://backend;
}

location /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
}
Schlaffes Undertow
quelle
Gibt es eine Möglichkeit, einen Spiegel zu verwenden, auch wenn einer der Hosts nicht verfügbar ist? Dafür habe ich einen Anwendungsfall.
Sagar Kharab
3

Hier ist eine neue Funktion von Nginx (1.13.4): http://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror

Das Modul ngx_http_mirror_module (1.13.4) implementiert die Spiegelung einer ursprünglichen Anforderung, indem Unteranforderungen für die Hintergrundspiegelung erstellt werden. Antworten auf Spiegeln von Unteranforderungen werden ignoriert.

BLiN
quelle
2

Basierend auf ihren README-Datei. Es sieht so aus, als ob GOR Ihnen bei der Lösung Ihres Problems helfen könnte.

Ich habe es noch nie benutzt, bin diese Woche nur darauf gestoßen, also viel Glück!

Marcel
quelle
Hey, bei Verwendung von GOR wird dies nur mit einem http 200 bestätigt. Wenn er also ein Antwortobjekt oder eine Validierung hat, möchte er damit fertig sein, was der Client ihm sendet. Ich glaube nicht, dass dies für ihn funktionieren wird. Soweit ich das beurteilen kann, und ich bin neu in Gor, können Sie das Ergebnisobjekt aus einem Ihrer Ausgabesegmente nicht weitergeben.
PatrickWalker
Wir testen gerade GOR und haben ein paar Probleme. Es interpretiert Header wie: Location: // newpath und generiert Requests wie GET // newpath. Leitet lose Original-Header um (einschließlich Host-User-Agent usw.). Wir migrieren auf ein anderes Tool.
Aalex Gabi
0

Nach dem Graben und Graben fand ich eine Lösung. Sie können es hier sehen. Kopieren Sie eine Anfrage und senden Sie sie an einen anderen Nginx-Server, um den tatsächlichen Datenverkehr zu testen senden von @scari zu testen

Ich dachte nur, ich sollte es hier erwähnen, um die Suche nach anderen Leuten zu erleichtern. In meinem Setup habe ich nicht uwsgi verwendet. Stattdessen wollte ich jede eingehende Anfrage auf einen zusätzlichen Server duplizieren (zusätzlich zu den Backboneservern, die bereits über einen Lastenausgleich verfügten).

Hoffe es wird helfen,
Liron

Liron
quelle