2

標準的なトラフィックの多い e コマース Web サイトを開発していて、Varnish でキャッシュを設定したいと考えています。このセットアップの特徴は、アプリケーションがユーザーの特定の場所に応じて異なるコンテンツを返すことです。

だから私の計画はこれらです:

  • GeoIP モジュールを使用して Nginx をセットアップし、アプリのバックエンドに送られるすべてのリクエストで X-Country: XX ヘッダーを取得できるようにします。
  • 「Vary: X-Country」応答ヘッダーを常に返すように Rails アプリケーションを構成します。
  • Varnish サーバーを Nginx とアプリ バックエンドの背後に置くことで、Rails によって提供されるオブジェクトの複数のバージョンをキャッシュし、Nginx (クライアント ブラウザーではなく)によって設定された要求ヘッダーに基づいてそれらを提供できます。

このようなセットアップの経験がある人はいますか? 知っておくべきことはありますか?

4

1 に答える 1

1

GeoIP ルックアップが遅い場合、および/または国の設定を上書きできるようにしたい場合は、のCookie を使用して、フロントエンドの Varnish チェックを行うことができます。

  • 国の Cookie がない場合は、GeoIP ルックアップのためにリクエストを nginx バックエンドに転送します。Nginx はSet-Cookie: country=usヘッダー付きのリダイレクトを提供します。リダイレクトを回避し、Cookie を拒否するクライアント/ロボットをサポートする場合、ngingx はそれを Rails に転送し、応答で国の Cookie を設定しようとします。または、Varnish はリダイレクト応答をキャプチャし、新しく設定された Cookie で「再起動」してバックエンドに移動できます。
  • すでにカントリー Cookie がある場合は、Varnish ハッシュでこれを使用します

Rails が GeoIP 解決を実行できる場合、Ngingx を使用してファイルを提供する場合を除いて、Ngingx は必要ありません...

于 2011-11-29T13:39:25.687 に答える