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


36

この種の質問はここで尋ねられたかもしれませんが、私の質問に実際に一致するものは見つかりませんでした。nginxのパフォーマンスは非常に優れていると聞きましたが、Apacheにはヘルプが必要なドキュメント、コミュニティ(read:expert)があります

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

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


tnxからマーティンとwebdestroyaへの回答、今はnginxに傾いています
mhd

ワニスのような特別に設計されたリバースプロキシを使用する方が理にかなっていますか?
ptman

回答:


31

webdestroyasの答えの最も重要な点に同意するため、これをコメントに入れたかったのですが、少し長すぎました。

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

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

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

Rubyの場合:
NginxにはPassengerがありますが、通常、Rubyに接続するための劣ったメソッドとして説明されています。私はRubyプログラマーではないので、これを検証することはできませんが、UnicornとThinがより良い代替手段として言及されているのをよく見ます。

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

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


明確化のために+1。
ジョンガーデニアーズ

私はあなたの唯一のウェブサーバーとしてそれを推薦するまで行きます。私のコメントをご覧ください serverfault.com/questions/133481/…<-こちら。私はこれを私のVPSで唯一のWebサーバーとして使用しており、PHP / CGIアプリ用にFastCGIを搭載した他のユーザーを獲得しています。
ジェイソン

Jason私はこれを1年以上にわたって唯一のWebサーバーとして使用しており、1日に数百万のページ読み込みを処理しています。私はあなたの推薦に完全に同意します!:)
マーティンフィヨルドヴァルド

8

パフォーマンス:
NGinX。このサーバーは、最高のパフォーマンスを発揮するWebサーバーの1つであることが知られており、多くの異なる企業(Notable、MediaTemple)で使用されています。

構成の容易さ:
Apache。Apacheの設定は本当にシンプルで、非常に強力です。Nginxは強力ですが、構成ファイルというよりもプログラミング言語のように見えるため、理解するのは非常に困難です。

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

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

リバースプロキシの勝者:
NGinX


2
私は興味がありますが、議論はしません。なぜNginxがリバースプロキシの勝者なのですか?答えの残りは、実際に一方を他方から際立たせるものではありません。どちらかといえば、Apacheを支持する傾向があります。
ジョンガーデニアーズ

1
それは、ほとんどの場合、高負荷のためにリバースプロキシが必要だからです。パフォーマンスがおそらく最大の問題であることを意味します。その場合、Nginxが勝者であったため、私はそれを選択しました。開発者としては、Apacheが大好きですが、「このWebサーバーから最大のパフォーマンスを得るには」という点から、Nginx
Mitch Dempsey

8

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

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


1

私は約2週間前にあなたと同じジレンマに陥っていました。

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

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

私の知る限り、必要なものはすべて動作し、チュートリアルを見てきました。

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

私は、プロキシをリバースし、nginxから静的ファイルを提供し、実行中のApacheインスタンスにPHPなどの他のすべてを渡す人がいることを読みました。彼らは良いトレードオフを主張します。それに関するパフォーマンスデータはありませんが、知りたいかもしれません。


2
パフォーマンス上の理由でApacheでhtaccessオーバーライドを無効にすることはかなり一般的であり、高性能のために設計されたサーバーでこのような機能をサポートすることはあまり意味がありません。
もう1人は

その声明を追加していただきありがとうございます。OPはプロの管理者ではないため、明確にする必要があります。
deploymonkey

1

ここ数年、さまざまな環境のさまざまなプラットフォームでApacheのmod_proxyに深刻な問題がありました。時々、それは単に動作を停止し、唯一の解決策はApacheサーバーを再起動することであるようです。

個人的には、「nginx vs Apache」ではなく、「nginx vs lighttpd」を求めているのです。


有効な引数ですが、前回チェックしたとき、lighttpdにはまだ長い未解決のバグがあり、メモリリークで有名でした。管理者による実稼働展開に対しては推奨されていません。これは変わりましたか?
deploymonkey

それは確かに、注意点があります(特にどこ非常に大きなファイルを提供する)、それはプロキシとしてのApacheよりも有意に安定だ-私は過去6ヶ月の間にいくつかの展開では本当の問題もなかったしました
ミズーリ

私はいくつかの忘れられた理由のために候補リストからlighttpdを
書き留めました
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.