2011年10月21日金曜日

"cloudpack"と"Varnish"

スズキです。

"cloudpack"には「リダイレクトサービス」と「プロキシーサービス」と呼ばれる
付加サービスがあり内部的にはVarnishを利用しています。


リダイレクトサービスは下記のように、"www"無しのドメイン名(suz-lab.com)のみで
アクセスしてきたHTTPリクエストを、"www"のついたものにリダイレクトする
サービスです。


このサービスは、ELB、S3、CloudFrontを独自ドメインで利用するときに、DNSに対して
CNAMEレコードで設定する必要があるのですが、ドメイン名(suz-lab.com)に対しては
CNAMEが利用できないので、その対策としてのサービスです。
(現在はELBに関してはRoute53で対応できますが...)

そしてVarnishでどのように実現しているかというと、下記の記事で紹介した通りです。
Varnishでリダイレクト専用Webサーバの構築


プロキシーサービスはVarnishで実現できることを、共通のVarnishサーバで「if文」を用い
個別(アクセスHost名ごとなど)に設定するものです。

今までの実績として、下記のようなものを行っています。


キャッシュを使ったコンテンツの高速配信


普通のキャッシュサーバでるVarnishの使い方です。場合によっては、
ディレクトリや拡張子ごとに、キャッシュの設定を細かく変更して利用しています。

このあたりは本ブログでも下記で紹介しています。
Varnishでキャッシュ期限を指定


FacebookアプリのコンテンツをS3に配置


Facebookアプリで利用するコンテンツをS3に配置しようとしたら、
FacebookアプリはコンテンツをPOSTメソッドで取得しにくるのですが、
S3はGETメソッドしか対応していないので、Varnishを経由させPOSTメソッドを
GETメソッドに変換してFacebookアプリでもS3を利用できるようにしています。

このあたりは本ブログでも下記で紹介しています。
Varnish経由でS3のコンテンツをPOSTで取得(Facebookアプリ用)


S3(独自ドメイン設定)でHTTPSを利用


S3のコンテンツを独自ドメインで公開することは、現在HTTPではできるのですが、
HTTPSは対応していません。ですのでS3のコンテンツを独自ドメインでHTTPSで
公開する場合は、上記のように、ELBでHTTPSのリクエストを受け、ELBの
SSLターミネーションでHTTPSの処理を行い、その後Varnish経由でS3にHTTPで
接続する形で実現しています。

このあたりは本ブログでも下記で紹介しています。
ELBを利用して1つのEC2で複数ドメインのHTTPS(SSL)


S3で携帯サイト(Softbank)の著作権保護


S3で独自ヘッダをつけることはできるのですが、"x-amz-meta-XXX"の形式のキーしか
付けることができません。ですのでSoftbank携帯サイトでの著作権保護機能に必要な
"x-jphone-copyright"のようなヘッダは直接S3で付けることができないので、
アクセスをVarnish経由にしてVarnishでそのヘッダを付けるようにしています。

このあたりは本ブログでも下記で紹介しています。
S3のオブジェクトのユーザー独自ヘッダのキーの形式は"x-amz-meta-XXX"
VarnishでS3のコンテンツに"x-jphone-copyright"ヘッダを付与


以上のように"cloudpack"ではAWSのサービスを補完するような形でVarnishを利用しています。

そろそろ「プロキシー職人」をメニュー化するか!?
--------
http://www.suz-lab.com

0 コメント: