2013年6月25日

【Node.js】レスポンスヘッダーを上書き



Amazon S3をちょいちょい使っているんですが、
レスポンスヘッダーをファイル1つずつ付けなきゃいけないんですかね?

特に、Cache-Controlのヘッダーを付けたい時に、ファイル1つずつはちょっと・・・

と、思ったので、node-http-proxyに任せて
Cache-Controlをレスポンスヘッダーに上書きしておきました。

ちなみに、S3のファイルにはリファラー制限が掛かっているので、
そのままではアクセスは出来ません。


で、node-http-proxyでレスポンスヘッダーを上書きする方法ですが、

var http = require('http-proxy');
var options = {
    router : {
        's3.shonanshachu.com'   : '[bucket-name].s3-website-ap-northeast-1.amazonaws.com',
        'shonanshachu.com'      : 'localhost:10001',
        'www.shonanshachu.com'  : 'localhost:10001',
    }
}

logging = function() {
    return function(req, res, next) { 
        // Cache Control for CDN 
        if(req.headers.host == 's3.shonanshachu.com') {
            res.setHeader('Cache-Control', 'public,max-age=604800');
        }
        next(); 
    }
}

var proxy = http.createServer(logging(), options);
proxy.listen(80);

と、まぁ、こんな感じで、http-proxyの設定をしております。

staticのファイルは適当にs3へ移動させつづ、cacheも効かせて良い感じです。
が、レスポンス速度はあんまり期待出来無いです。

SyntaxHighlighterとか、たまにCDNがダウンしてる事があったので、
ソースをS3へ移動させちゃいました。