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