Djangoアプリがあり、その前のサーバーでVarnishをセットアップしたいのですが、 another serverfault thread では、NginxをVarnishの前に置くことを提案されました。
キャッシングサーバーでVarginの前にNginxを配置する必要がありますか?その場合、アプリサーバーでNginxを使用する必要がありますか?
合計で1〜3台のフロントエンドサーバーを対象としており、階層間の負荷分散を行う大規模なサーバーファームではありませんか?
NginxをVanishの前に置くと、その場でHTTP圧縮を実行できます。これはパフォーマンスのベストプラクティスですが、省略してもかまいません。 (Varnishのコンテンツは圧縮されないまま維持されることが多いため、ESI作業が含まれるため、Varyヘッダー/ブラウザーの一致に応じて、同じオブジェクトの複数のキャッシュバージョンを処理する必要がありません。)
アプリサーバーのnginxについて-is Apache with mod_wsgi は、現在推奨されていない新しい展開方法の最も一般的な方法Django現在のインストールですか? DjangoのApache/mod_wsgiではなくnginx/fastcgiを使用する理由ですが、Djangoの専門家からアドバイスを受ける必要があります。
Varnishにnginxにはない魅力的なロードバランシング機能があることに関して、私はそれらが何であるかわかりませんか?ワニスには、ランダムとラウンドロビンのバランスがあります。 nginxには、ラウンドロビン、クライアントIP、および一貫性のあるハッシュがあります-Varnishに大きなメリットはないと思いますか?それはVCLまたはVarnishの優雅な設定の再読み込みですか、それとも何か他のものですか?
小さな1〜3のサーバー設定の場合、私はただ行うと思います
ワニス-> Apache/mod_wsgi/Django
または多分
イカ-> Apache/mod_wsgi/Django
帯域幅が高価でない限り、単純化のためにHTTP圧縮を無視します。
更新:
Graham Dumpletonが以下に貴重なコメントを書いています。彼は非常に一般的な設定、たとえばVPS上のブログ、またはキャッシュなしの小さなWebファームについて言及しています。
nginx-> Apache/mod_wsgi/Django
これは、いくつかの理由から、非常に優れたソリューションです。
最初にこれについて触れなかった理由は、OPには非常に高性能なキャッシングソリューションであるVarnishが必要であるように思われたためです。 nginx/Apache/mod_wsgiコンボは、Varnishに匹敵するパフォーマンスと柔軟性のレベルでキャッシュを実行できません。
ワニスなしでnginxを使用して、コンテンツのプロキシとキャッシュを行うことができます。
Nginx、Varnish、Apache/mod_wsgi/Djangoをうまく使用しています。私は次の設定から始めました:
Nginx-> Apache/mod_wsgi/Django
Apacheにかなりの負荷がかかり始めたら、Varnishを追加しました。
Nginx->ワニス-> Apache/mod_wsgi/Django
Nginxを一種の「URLルーター」として使用しています。 Django管理要求はNginxからApacheに直接送信されます。クライアント要求はNginxからVarnishに送信され、Apacheからの要求をキャッシュし、アプリサーバーが利用できない場合はキャッシュから「グレース」アイテムを提供します。
私のNginxサーバーは、特定の静的コンテンツ(画像、CSS、JavaScriptファイルなど)も直接提供します。
一般的に、パフォーマンスは優れています。私が言及すべきいくつかの警告に気づきました:
私はNginx-> Varnish-> uWSGI-> Djangoを使用しています