web-dev-qa-db-ja.com

Nginx対Apache、リバースプロキシ、どちらを選択するか

この種の質問はおそらくここで尋ねられましたが、私の質問に本当に一致するものは見つかりませんでした。 nginxのパフォーマンスは非常に印象的であると聞いたが、Apacheにはヘルプを得るために、より多くのドキュメント、community(read:expert)がある

ここで私が知りたいのは、パフォーマンス、設定の容易さ、カスタマイズのレベルなどに関して、両方のWebサーバーがどのように比較されるかです。 vps環境の逆プロキシサーバーとして??

シン(Ruby Webサーバーの1つ)で提供されるRuby Webアプリ(RORではない))について、私はまだ2つの間を比較検討しています。
具体的な回答をいただければ幸いです。 Rubyの部分に触れない一般的な答えは問題ありません。私はまだWebサーバー管理の初心者です。

39
mhd

Webdestroyasの回答の最も重要な点に同意したので、これをコメントに入れたかったのですが、少し時間がかかりすぎました。

あなたはVPS環境にいるので、これはRAMが少なくなる可能性が高いことを意味します。この理由だけで、メモリのフットプリントがApacheよりも小さいため、Nginxが必要になります。

また、私は言及された議論のいくつかに同意しません。

Easiness of Config:
NginxはApacheよりも難しくありません。違います。 Apacheに慣れている場合、変更は常により困難になります。これは、構成スタイル自体がより困難であることを意味しません。 1年以上前にApacheからNginxに完全に移行しましたが、Nginxの設定は非常に簡単であるのに、今日はApacheサーバーの設定に苦労しました。

Rubyの場合:
NginxにはPassengerがありますが、通常、Rubyに接続するための劣った方法として説明されています。私はRubyプログラマではないので、これを確認することはできませんが、UnicornとThinがより優れた選択肢として言及されているのをよく見ます。

結論:
Nginxはリバースプロキシとして作成されました。最初は、静的ファイルとリバースプロキシをHTTP/1.0経由でバックエンドサーバーに提供するだけでした。それ以来、fastcgi、ロードバランシング、その他のさまざまな機能が追加されていますが、最初の設計目的は、静的ファイルとリバースプロキシを提供することでした。そして、これは本当にうまくいきます。

反対に、Apacheは汎用のWebサーバーです。プロキシを完全にリバースできることは間違いありませんが、メモリフットプリントが最小限になるように設計されていなかったため、Nginxが必要とするよりも多くのリソースが必要です。つまり、最初のVPS環境の引数が機能します。

34

パフォーマンス:
NGinX。このサーバーは、最もパフォーマンスの高いWebサーバーの1つであることが知られており、さまざまな企業(注目すべきはMediaTemple)で使用されています。

Easiness of Config:
Apache。 Apacheの設定は本当にシンプルで、本当に強力です。 Nginxは強力ですが、構成ファイルというよりはプログラミング言語のように見えるため、理解するのが非常に難しい場合があります。

カスタマイズのレベル:
Apache。 Apacheには大量のModとその他のプラグインが作成されています。 Nginxにはプラグインがまだありますが、ApacheにはNginxよりも多くのプラグインがあると思います。

Rubyの場合:
私はNginxがMongrel/webrickで強力なロードバランサーとして使用できることを知っています。ただし、ApacheにはPhusion/Passengerがあり、統合がより簡単になります。

Reverse Proxy Winner:
NGinX

9
Mitch Dempsey

Nginxはイベントベースですが、Apacheはプロセスベースです。高負荷のもとでは、これは世界に大きな違いをもたらします... Apacheは接続ごとに新しいスレッドをフォークまたは開始する必要がありますが、nginxはそうしません。この違いは、主にメモリ使用量だけでなく、ユーザーの応答時間やその他のパフォーマンスメトリックにも現れます。 Nginxは、最新のハードウェアで数万の同時 HTTPキープアライブ接続を処理できます。 Apacheは接続ごとに1〜2 MBのスタックを使用するため、計算を行うと、スワップを開始しなければ、数百または数千の接続しか同時に処理できないことがわかります。

Apacheの前でnginxを使用し、負荷分散およびキャッシングプロキシとしてIIS私たちの環境では、これは満足できません。ペアの代わりに2つの小さめのnginxボックスを使用します非常に高価なリースF5デバイスと当社のサイトは、感触と測定された応答時間の両方ではるかに高速です。

8
rmalayter

二週間ほど前、私はあなたと同じジレンマを抱えていました。

あなたに本当に簡潔な答えを与えるために:私の研究から、nginxは本当に高速でリソースフレンドリーですが、静的プロキシファイルをリバースプロキシすることだけが考えられていました。残りはあなたがあなたの方法で設定またはスクリプト化しなければならないソリューションにボルトで固定されています。

AFAIK nginxにはhtaccessファイルがないため、その機能に依存している場合は、回避策を見つける必要があります。

AFAIKは必要なすべてが機能し、チュートリアルを見てきました。

テストとプロファイリングのセットアップではnginxを使用します。典型的なLAMPアプリケーションがあります。

Nginxから静的ファイルをリバースプロキシして提供し、他のすべてをPHPのように実行中のApacheインスタンスに渡す。 、しかしあなたは知りたいかもしれません。

1
deploymonkey

過去2年間、さまざまな環境のさまざまなプラットフォームでApacheのmod_proxyに深刻な問題を抱えてきました。時々、それは単に動作を停止し、唯一の治療法はApacheサーバーを再起動することのようです。

個人的には、「nginx対Apache」ではなく「nginx対lighttpd」と尋ねるのですが、それははるかに厳しいコールです!

1
Mo.