Kita berbicara 1-3 server frontend secara total, bukan server server besar dengan load balancing antara tingkatan?
Menempatkan nginx di depan Vanish memungkinkan Anda melakukan kompresi HTTP dengan cepat. Itu adalah praktik kinerja terbaik, tetapi bisa dihilangkan. (Konten dalam Varnish sering tidak dikompresi, sehingga ESI Termasuk berfungsi, dan karenanya Anda tidak harus berurusan dengan beberapa versi cache dari objek yang sama tergantung pada header / pencocokan browser yang Bervariasi.)
Mengenai nginx di server aplikasi - adalah Apache dengan mod_wsgi bukan cara yang disarankan dan paling umum untuk menggunakan instalasi Django baru saat ini? Saya tidak mengetahui alasan kuat untuk menggunakan nginx / fastcgi di atas Apache / mod_wsgi untuk Django; tetapi Anda harus mendapatkan saran dari seorang ahli Django.
Mengenai Varnish memiliki fitur load balancing yang menarik yang tidak dimiliki nginx, saya tidak melihat apa itu? Varnish memiliki balancing acak dan round-robin. nginx memiliki round-robin, IP klien dan hashing yang konsisten - Saya tidak melihat manfaat signifikan untuk Varnish? Apakah itu konfigurasi ulang anggun VCL atau Varnish 'atau sesuatu yang lain?
Untuk pengaturan server 1-3 kecil saya kira saya hanya akan melakukannya
Varnish -> Apache / mod_wsgi / Django
atau mungkin
Squid -> Apache / mod_wsgi / Django
dan abaikan kompresi HTTP untuk kesederhanaan, kecuali bandwidth mahal.
Memperbarui:
Graham Dumpleton telah menulis komentar berharga di bawah ini. Dia menyebutkan pengaturan yang sangat umum misalnya blog di VPS, atau web farm kecil tanpa caching:
nginx -> Apache / mod_wsgi / Django
Ini adalah solusi yang sangat bagus, karena beberapa alasan:
- Pengaturan sederhana
- nginx, yang memiliki kecepatan tinggi dan overhead minimal, menangani penyajian file statis dan koneksi browser tetap terjaga.
- Django berjalan di mod_wsgi Graham Dumpleton yang sangat baik, platform yang direkomendasikan untuk Django.
Alasan saya tidak menyebutkan ini pada awalnya adalah bahwa OP tampaknya memerlukan Varnish, solusi caching kinerja sangat tinggi. Combo nginx / Apache / mod_wsgi tidak dapat melakukan caching dengan tingkat kinerja dan fleksibilitas yang cocok dengan Varnish.
Anda dapat menggunakan nginx tanpa pernis untuk memproksi dan menyimpan konten.
sumber
Saya telah menggunakan Nginx, Varnish, dan Apache / mod_wsgi / Django dengan sukses. Saya mulai dengan konfigurasi berikut:
Setelah saya mulai melihat beban signifikan di Apache, saya menambahkan Varnish:
Saya menggunakan Nginx sebagai semacam "router URL". Permintaan admin Django dikirim langsung dari Nginx ke Apache. Permintaan klien dikirim dari Nginx ke Varnish yang cache permintaan dari Apache dan juga melayani item "dihidupkan" dari cache jika server aplikasi tidak tersedia.
Server Nginx saya juga menyajikan konten statis tertentu secara langsung (mis. Gambar, CSS, dan file javascript).
Secara umum, kinerja sangat baik. Saya perhatikan beberapa peringatan yang harus saya sebutkan:
sumber
Saya menggunakan Nginx-> Varnish-> uWSGI-> Django
sumber