web-dev-qa-db-ja.com

ワニス-> Nginx-> Apacheは良い考えですか?

新しいWebサーバーのアーキテクチャについて考えています。 Nginxの前のキャッシュとしてVarnishをリバースプロキシとして使用し、Apacheの前で静的ファイルを提供して、すべての重い作業を行うことは良い考えでしょうか?

PhpとRuby on Rails applications。

他の2つのプロセスを介してApacheにPHPリクエストを渡すオーバーヘッドが多すぎますか?

どうもありがとう!

10
Zoran Zaric

ええ、それは有効です。私の個人的なアプローチは、Varnishを前もって使用し、VCLを使用して静的NGINXリクエストと負荷の高いトラフィック(ApacheかPassengerか、それとも問題ではない)の間でトラフィックを分割することです。これは、余分なオーバーヘッドを必要としないため、同じマシンでisの場合に特に当てはまります。それは必ずしもあなたに何かを買うわけではありません。

8
McJeff

Varnishは(まだ)gzip圧縮をサポートしていないため、これを前のnginxと入れ替えて、varnishが送り返すものを圧縮することをお勧めします。ワニスとnginxは同じリソースを争わないため(nginxはCPUをgzip圧縮に使用し、ワニスはメモリを使用)、同じマシンでスムーズに実行する必要があります。

今ワニス gzip圧縮をサポート なので、(コメントで提案されているように)SSL終了が必要でない限り、ワニスをインターネットに直接接続することをお勧めします。

Httpの場合:

(インターネット)->(ワニス、gzip、キャッシング、esi)->(アプリケーション)

Httpsの場合:

(インターネット)->(nginx、ssl)->(ワニス、gzip、キャッシング、esi)->(アプリケーション)

Apacheも必要な場合(ユビキタスなmod_foobarサポートのため)、ワニスとアプリケーションの間に配置します

Update:ワニス3.0にgzipサポートが含まれるように更新されました。コメントで提案されたssl/esiを追加

6
mogsie

オーバーヘッドの量は重要ではありません。これらの2つの層が必要な理由の一部は、スケーラビリティのためだと思います。その場合、Apacheと比較して、ワニスとnginxがあまり機能していないことがわかるでしょう。

1つのマシンに3つの層すべてを配置する場合、サーバー自体の容量に到達する前に、パフォーマンスへの影響が少なくなるはずです。

代わりに、ワニス+ nginxを乗客と一緒に使ってみませんか?私は過去にこの設定を使用したことがありますが、nginxを使用するパッセンジャーは比較的軽く、かなりうまく動作しました。 Railsスタックを実行しているApacheと結婚していない場合は、検討する価値があるかもしれません。

4
Tony

私は、スタートアップeコマースプラットフォームのシステム管理者です。 PHP/Apacheスタックの前でvarnish + nginxを使用していますが、これは不思議に機能しました。

メモリ使用量の多いアプリケーションがあり、アプリはWebノードあたり約15〜20ギガバイトのRAMを使用しており、ワニスを前面に配置すると、ノードあたり約8ギガバイトのRAMになります。彼らは急上昇したことがありません。

だから私はそれを強くお勧めします。

2
Mike

Apache + PHP + MySQLサーバーでboostモジュールを使用してDrupalを実行していますが、それらの前ではggin-static機能をオンにしてNginxを使用し、boostの結果を使用してユーザーにサービスを提供しています。

さらに、ワニスをすべて同じPCで使用していることに加えて、良い結果が出ています。

また、Nginxを使用して、Drupalがキャッシュに対して十分に機能しないヘッダーを微調整します。

1
Go2linux

ESIのようなものが必要でない限り、それは良い考えではありません。 Nginxには、独自のキャッシングシステムがあります パフォーマンスが向上します

0
VBart