Mówimy w sumie 1–3 serwery frontendowe, a nie duża farma serwerów z równoważeniem obciążenia między warstwami?
Umieszczenie nginx przed Vanish umożliwia kompresję HTTP w locie. Jest to najlepsza praktyka w zakresie wydajności, ale można jej zrezygnować. (Treść w Varnish jest często nieskompresowana, dzięki czemu ESI Obejmuje pracę, dzięki czemu nie musisz radzić sobie z wieloma buforowanymi wersjami tego samego obiektu w zależności od dopasowania nagłówka / przeglądarki Vary).
Jeśli chodzi o nginx na serwerze aplikacji - czy Apache z mod_wsgi nie jest obecnie zalecanym i najczęstszym sposobem wdrażania nowych instalacji Django? Nie znam ważnego powodu używania nginx / fastcgi nad Apache / mod_wsgi dla Django; ale powinieneś uzyskać poradę od eksperta Django.
Co do lakieru mającego atrakcyjne funkcje równoważenia obciążenia, którego nginx nie ma, nie rozumiem, czym one są? Lakier ma równoważenie losowe i okrągłe. nginx ma funkcję round-robin, adres IP klienta i spójny skrót - nie widzę znaczących korzyści dla Varnish? Czy to ładna konfiguracja VCL lub Varnish, czy coś jeszcze?
W przypadku niewielkiej konfiguracji 1-3 serwerów chyba po prostu bym to zrobił
Lakier -> Apache / mod_wsgi / Django
albo może
Squid -> Apache / mod_wsgi / Django
i dla uproszczenia ignoruj kompresję HTTP, chyba że pasmo jest drogie.
Aktualizacja:
Graham Dumpleton napisał poniżej cenny komentarz. Wspomina o bardzo powszechnej konfiguracji, na przykład blogu na VPS lub małej farmie internetowej bez buforowania:
nginx -> Apache / mod_wsgi / Django
To bardzo dobre rozwiązanie z kilku powodów:
- Prosta konfiguracja
- nginx, który ma dużą szybkość i minimalny narzut, obsługuje statyczne wyświetlanie plików i utrzymywanie połączenia z przeglądarką.
- Django działa w doskonałej mod_wsgi Grahama Dumpletona, zalecanej platformie dla Django.
Powodem, dla którego nie wspomniałem o tym na początku, jest to, że OP wymagało, aby Varnish, rozwiązanie buforowania o bardzo wysokiej wydajności. Kombinacja nginx / Apache / mod_wsgi nie może buforować z poziomem wydajności i elastyczności pasującym do Varnish.
Możesz używać nginx bez lakieru do proxy i buforowania zawartości.
źródło
Korzystam z Nginx, Varnish i Apache / mod_wsgi / Django. Zacząłem od następującej konfiguracji:
Gdy zacząłem widzieć znaczne obciążenie Apache, dodałem Lakier:
Używam Nginx jako swego rodzaju „routera URL”. Żądania administratora Django są wysyłane bezpośrednio z Nginx do Apache. Żądania klientów są wysyłane z Nginx do Varnish, który buforuje żądania z Apache, a także udostępnia „ozdobne” elementy z pamięci podręcznej, jeśli serwery aplikacji są niedostępne.
Mój serwer Nginx obsługuje również bezpośrednio niektóre treści statyczne (np. Obrazy, CSS i pliki javascript).
Ogólnie wydajność była doskonała. Zauważyłem kilka zastrzeżeń, o których powinienem wspomnieć:
źródło
Używam Nginx-> Lakier-> uWSGI-> Django
źródło