2017-02-13 7 views
1

Ich habe 5 Backend-Server. Ich möchte, dass nginx die POST-Anfrage für/myapp/refresh an alle 5 Backend-Server weiterleitet. Für jede andere Anfrage kann es Lastenausgleich durchführen. Ist das möglich ? Können Sie bitte eine Beispielkonfiguration geben?Nginx - Umleiten von Anfragen an alle Backends

Antwort

0

Sie sollten nginx als Load Balancer mit einer einfachen Konfiguration zu verwenden, wie der Lage sein:

http { 
    upstream myproject { 
    server 127.0.0.1:8000 weight=3; 
    server 127.0.0.1:8001; 
    server 127.0.0.1:8002; 
    server 127.0.0.1:8003; 
    } 

    server { 
    listen 80; 
    server_name www.domain.com; 
    location/{ 
     proxy_pass http://myproject; 
    } 
    } 
} 

docs: https://www.nginx.com/resources/admin-guide/load-balancer/

Dies sollte Route alle Anforderungen einschließlich der POST-Anfrage Sie erwähnt.

+0

Danke. Aber ich möchte nur, dass bestimmte POST zu allen Servern gehen ... andere Anfragen sollten nur von einem Backend-Server bedient werden. Funktioniert die obige Konfiguration so? – RDR

0

Ich bin nicht bewusst über die fertige Lösung zu tun, was Sie wollen.

Es ist definitiv möglich, ein solches Verhalten in C oder Lua zu implementieren.

Sie können nginx C-Modul entwickeln, aber es ist keine triviale Aufgabe mit ernsthafter Lernkurve.

Sie können https://github.com/openresty/lua-nginx-module verwenden und etwas wie https://github.com/openresty/lua-nginx-module#ngxlocationcapture_multi verwenden.

Aber in beiden Fällen sollten Sie eine Art von Logik implementieren, wann und welche Antwort Sie zurücksenden werden.

Frage zum Nachdenken - müssen Sie mit 200 OK antworten, wenn einer der Back-End Timeout oder reagiert mit Fehler?

Verwandte Themen