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


10

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

Railsアプリケーションでphpとrubyを実行します。

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

どうもありがとう!

回答:


8

ええ、それは有効です。私の個人的なアプローチは、事前にVarnishを使用し、VCLを使用して静的なNGINXリクエストと負荷のかかるトラフィック(ApacheかPassengerか、...関係ない)の間でトラフィックを分割することです。それがあれば、これは特にそうであるであるあなたが余分なオーバーヘッドを必要としないのと同じマシン上で。必ずしも何かを購入する必要はありません。


ええ、これはかなり良いアイディアです。ワニスはこれのためにかなり速いはずです
Zoran Zaric

6

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

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

httpの場合:

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

httpsの場合:

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

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

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


どんなワニスにコンテンツを提供していることはgzipでそれをコードする場合、その後、ワニスは文句なしでgzip圧縮された上でそれを渡します:varnish-cache.org/wiki/FAQ/Compressionを ワニスは行わない唯一のものは、非キャッシュから圧縮されていないテイクコンテンツでありますアプリケーションを圧縮して予約します。これもあなたの理解ですか?
ewalk

ワニスの前でnginxを実行するのは、ESIを使用しているときだけです。圧縮されたページからESIアセンブリを行うことはできず、Varnishはアセンブルされたページを圧縮しないため、NginxはVarnishの前に配置され、その圧縮を提供します。オリジンが圧縮されたコンテンツを提供する場合、Varnishはそのデータを圧縮形式でクライアントに渡します。
user6738237482 2010年

ええ、ESIはこの構成をお勧めする理由の1つですが、バックエンドが圧縮され、ESIを使用しない場合は、nginxを省くことができると思います。ワニスは、汗をかく。
mogsie 2010

@ user6738237482、nginxはSSL終了をサポートしていますが、Varnishはサポートしていません。実際、ニスやアパッチなどの前にいることは、nginxが高速で軽量なプロキシサーバーとして最初に設計されたものとまったく同じです。
rmalayter

4

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

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

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


ええ、私はレールからapacheからnginxに切り替えるかもしれませんが、顧客が.htaccessファイルを使用できるようにすることは、少なくともphpにとっては、apacheの+です。
Zoran Zaric

2

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

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

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


3
ワニスがsslを話さないのをご存知ですか?
Mike

1

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

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

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


0

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


これは古い回答であることは承知しておりますが、残念ながらそのリンクはご利用いただけなくなったため、申し立てを確認することができません。私の経験では、リバースプロキシとしての速度と柔軟性の点で、ワニスを打ち負かすのは困難です。
Martijn Heemels

@MartijnHeemels web.archive.org/web/20130501222206/http://todsul.com/...と別のベンチマークがあります:nbonvin.wordpress.com/2011/03/24/...
VBart

-1

ApacheはSSL終了(復号化)に使用できます。http://noosfero.org/Development/Varnish#SSLを確認してください


1
リンクを回答として投稿することは避けてください。linkrotの影響を受けると、回答の意味がすべて失われる可能性があります。回答を編集し、回答に提供したリンクから関連部分を含めることを検討してください。参照としてリンクをそのままにしておいてください。
ブライアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.