Es handelt sich um 1 - 3 Frontend-Server insgesamt, keine große Serverfarm mit Lastenausgleich zwischen den Ebenen?
Wenn Sie Nginx vor Vanish setzen, können Sie die HTTP-Komprimierung im Handumdrehen durchführen. Dies ist eine bewährte Vorgehensweise, auf die jedoch verzichtet werden kann. (Inhalte in Varnish werden häufig nicht komprimiert, sodass ESI Includes funktioniert und Sie nicht mit mehreren zwischengespeicherten Versionen desselben Objekts arbeiten müssen, abhängig von der Übereinstimmung von Header und Browser.)
In Bezug auf Nginx auf dem App-Server - ist Apache mit mod_wsgi nicht die empfohlene und häufigste Methode, um heutzutage neue Django-Installationen bereitzustellen? Mir ist kein zwingender Grund für die Verwendung von nginx / fastcgi über Apache / mod_wsgi für Django bekannt. Sie sollten sich jedoch von einem Django-Experten beraten lassen.
Was Lacke anbelangt, die attraktive Lastausgleichsfunktionen haben, die Nginx nicht bietet, sehe ich nicht, was sie sind? Der Lack hat ein zufälliges und ein Round-Robin-Gleichgewicht. nginx verfügt über Round-Robin, Client-IP und konsistentes Hashing. Ich sehe keinen signifikanten Vorteil für Varnish? Ist es VCL oder Varnish 'anmutiges Konfigurations-Reload oder etwas anderes?
Für ein kleines 1-3 Server Setup würde ich das wohl einfach machen
Lack -> Apache / mod_wsgi / Django
oder vielleicht
Tintenfisch -> Apache / mod_wsgi / Django
und ignorieren Sie die HTTP-Komprimierung der Einfachheit halber, es sei denn, die Bandbreite ist teuer.
Aktualisieren:
Graham Dumpleton hat unten einen wertvollen Kommentar geschrieben. Er erwähnt ein sehr verbreitetes Setup, zum Beispiel ein Blog auf einem VPS oder eine kleine Webfarm ohne Caching:
nginx -> Apache / mod_wsgi / Django
Dies ist aus mehreren Gründen eine sehr gute Lösung:
- Einfaches Setup
- nginx, das eine hohe Geschwindigkeit und einen minimalen Overhead aufweist, verwaltet das Serving statischer Dateien und die Verbindung zum Browser wird beibehalten.
- Django läuft in Graham Dumpletons exzellentem mod_wsgi, der empfohlenen Plattform für Django.
Der Grund, warum ich dies anfangs nicht erwähnte, war, dass für OP anscheinend Varnish erforderlich war, eine sehr leistungsfähige Caching-Lösung. Die Kombination nginx / Apache / mod_wsgi kann kein Caching mit einer Leistung und Flexibilität durchführen, die mit Varnish übereinstimmt.
Sie können nginx ohne Lack verwenden, um den Inhalt zu proxyen und zwischenzuspeichern.
quelle
Ich benutze Nginx, Varnish und Apache / mod_wsgi / Django erfolgreich. Ich habe mit folgender Konfiguration angefangen:
Nachdem ich festgestellt hatte, dass Apache stark ausgelastet ist, fügte ich Varnish hinzu:
Ich benutze Nginx als eine Art "URL-Router". Django-Administratoranforderungen werden direkt von Nginx an Apache gesendet. Client-Anfragen werden von Nginx an Varnish gesendet, das die Anfragen von Apache zwischenspeichert und auch "graced" -Elemente aus dem Cache bereitstellt, wenn die App-Server nicht verfügbar sind.
Mein Nginx-Server stellt bestimmte statische Inhalte auch direkt bereit (z. B. Bilder, CSS- und Javascript-Dateien).
Im Allgemeinen war die Leistung hervorragend. Ich habe ein paar Vorbehalte bemerkt, die ich erwähnen sollte:
quelle
Ich benutze Nginx-> Lack-> uWSGI-> Django
quelle