2011年9月26日月曜日

VarnishでS3のコンテンツに"x-jphone-copyright"ヘッダを付与

スズキです。

下記で紹介されているように、SoftBankの携帯で画像転送の禁止を行うには、
画像ファイルのレスポンスヘッダに"x-jphone-copyright"を付与する必要があります。
携帯サイトの著作物保護 ~画像転送禁止を厳しく設定する~
しかし画像をS3に置く場合は、S3は"x-jphone-copyright"のようヘッダを
つけることはできないので、Varnishなどのプロキシーを経由する必要があります。

例えば、"s3.suz-lab.com"でアクセスできるS3に対して、
"softbank.suz-lab.com"でアクセスできるVarnish経由で上記のS3にアクセスするには、
下記のように設定ファイル(/etc/varnish/default.vcl)を記述すればOKです。

backend default {
    .host = "localhost";
    .port = "80";
}
sub vcl_recv {
    if(req.http.host == "softbank.suz-lab.com") {
        set req.backend   = s3_suz_lab_com;
        set req.http.host = "s3.suz-lab.com";
        return (pass);
    }
    return (lookup);
}
sub vcl_deliver {
    if(req.http.host == "s3.suz-lab.com") {
        set resp.http.x-jphone-copyright = "no-store";
    }
    return (deliver);
}
backend s3_suz_lab_com {
    .host = "s3.suz-lab.com";
    .port = "80";
}

ポイントは、"vcl_deliver"でレスポンスヘッダを付与していることと、
そのときのHostヘッダは、"softbank.suz-lab.com"ではなく、
"s3.suz-lab.com"となっていることでしょうか?

ただし可用性は、このVarnishサーバがボトルネックになってしまうので、
必要に応じて"Auto Scaling"など利用する必要があると思います。

負荷テストしなきゃ...
--------
http://www.suz-lab.com

0 コメント: