6

Django アプリケーションを nginx Web サーバーにデプロイしようとしていますが、システムが正しく構築されていることを確認したいと考えています。

Django を apache サーバーにデプロイする場合でも、アプリケーションの前に nginx サーバーを配置して、静的ファイルを提供する必要があるというのが一般的な知恵のようです。

Django コードの apache の代わりに、nginx + FastCGI を使用して Django アプリケーションをホストしたい場合、動的コンテンツを提供している nginx サーバーの前に配置して静的を処理するように 2 つ目の nginx インストールを構成する理由はありますか?コンテンツだけでなく、動的コンテンツへのリダイレクト?

具体的には、静的コンテンツと動的コンテンツに異なる構成パラメーターがあり、サーバーを分離したままにするか、または単一の nginx インストールですべてをホストし、一部の URL を django コンテンツにマップして、同じnginxインストールから提供される静的コンテンツにマッピングされていますか?

アドバイスありがとうございます!

4

4 に答える 4

5

ほとんどの構成ディレクティブはロケーションブロック内に存在でき(つまり、グローバルのみではありません)、これを行うのは非常に一般的です。nginxのインスタンスを1つだけ使用して、これを設定するのに問題はありません。

これの優れた点の1つは、最初はこのように設定し、後でロケーションブロックを切り替えて、外部に表示されることなくバックエンドサーバーにパススルーすることで気が変わることです。

したがって、スケールアップする必要があるときにバックエンドサーバーまたはクラスターを後で配置できることを知って、今すぐ1つのサーバーで実行してください。

于 2009-04-19T15:11:02.220 に答える
4

nginxサーバーを別のnginxの前に配置することについての質問に答えるには:いいえ、通常、そうする正当な理由はありません。この古いアドバイスは、特にmod_pythonがApachepreforkMPMで使用された場合のApacheからのものです。このセットアップでは、Djangoの各インスタンスはmod_python / Apacheコンテナー内で個別のプロセスとして実行され、これは大量のRAMを使用します。アイデアは、nginxのような軽量のイベント駆動型HTTPサーバーを重いApacheプロセスの前に配置することにより、静的ファイルの提供をApacheから遠ざけることでした。これによりRAMが節約され、パフォーマンスが向上しました。すべてのリクエストにnginxのような軽量サーバーを使用する場合、これは問題ではありません。

nginxはURL書き換えを適切に処理します。書き換えモジュールを調べてください。

あなたの質問は、あなたが期待している負荷(接続/秒)、またはそもそもなぜnginxを使用したいのかについては述べていません。これがVPSサーバー上のブログまたは同様の低負荷セットアップの場合は、デーモンモードでmod_wsgiを使用してApacheを使用することを検討してください。これはFastCGIに非常に近いパフォーマンスとRAM使用量を持ち、mod_wsgiは最近Djangoをホストする公式に推奨される方法になりました。http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/を参照してください

一般的に、可能であればApache / mod_wsgiを使用することをお勧めします。これは、安定した柔軟な組み合わせです。Apache + mod_wsgiで問題なく動作するnginxを使用して、「時期尚早に最適化」していないことを確認してください。デーモンモードでのmod_wsgiのパフォーマンスの概要については、 http ://code.google.com/p/modwsgi/wiki/PerformanceEstimatesを参照してください。

nginxは素晴らしいですが、Djangoソリューションの場合、nginxは、多くのApacheインスタンスのロードバランサー、または静的ファイルの個別のサーバーとしてIMHOに適しています。これらの使用シナリオは両方とも、大きな負荷に対してのみ意味があります。

于 2009-04-22T21:22:44.437 に答える
2

自分のサーバーにdjangoをプロキシするのは、mod_pythonを使用してローリングする場合にのみ実際に入ると言います。つまり、nginxで静的にサービスを提供し、djangoをmod_pythonを実行するApacheインスタンスにプロキシします。私は、fastcgi を介して lighttpd で django を実行し、同じ lighttpd で静的コンテンツも提供しています。

于 2009-04-19T23:11:51.410 に答える
0

1つのnginxサーバーで1つの構成ファイルですべての動的および静的コンテンツを構成できると確信しています

于 2009-04-18T23:11:18.283 に答える