node-http-proxy モジュールを使うと、簡単にリバースプロキシを作れます。
Squid や Apache などを使用してプロキシサーバを立ち上げる方法もありますが、Node.js でプロキシサーバを作成する利点は以下のようなものがあります(本家 README.md より抜粋)。
$ npm install http-proxy
var httpProxy = require('http-proxy');
httpProxy.createServer(80, 'localhost').listen(8080);
$ node myproxy.js
これで、localhost:8080
へのアクセスが、localhost:80
へ転送されるようになります。
リバースプロキシが2行で書けた(゜O゜)!
さらに拡張して、サーバアクセス時のホスト名に応じて、別々のポートへ処理を振り分けるようにしてみます(バーチャルホスト)。
aaa.example.com
としてアクセスしてきたら 8000
ポートに振り分けbbb.example.com
としてアクセスしてきたら 9000
ポートに振り分けvar httpProxy = require('http-proxy');
var options = {
hostnameOnly: true,
router: {
'aaa.example.com': '127.0.0.1:8000',
'bbb.example.com': '127.0.0.1:9000'
}
}
httpProxy.createServer(options).listen(80);
んー、お手軽!