複数Webアプリを1つのホストで立ち上げる方法

expressを使うとわりかし簡単にWebアプリを作れます。
で、いくつもつくって立ち上げ続けたいのですが、ポートをいちいち分けてアクセスするのもイケてないです。
そんな時に使うのがnode-http-proxyを使います。

node-http-proxy自体は結構色々出来るんですが、タイトル通りのことしかしない場合の方法をメモしておきます。

$ npm install http-proxy -g
$ npm link http-proxy
  • ~/usr/Router/app.js
var httpProxy = require('http-proxy')
  , options = {
      router : {
        'hoge' : 'localhost:8001',
        'fuga' : 'localhost:8002' //勝手に増やせばよい
      }
    }
  , proxyServer = httpProxy.createServer(options)
  , apacheUID;
proxyServer.listen(80);

process.setuid(apacheUID);

こうしておけば、ルーティングしてくれます。あとは、アプリを適当なポートで立ち上げるだけです。

ざ・簡単!

nodeの実行ユーザの変更

あ、あと、嬉しそうにexpressでwebアプリとか作って、「ダサいから」という理由で80(<1024)ポートで上げたくなりますが、sudoとかしてroot権限でやったりしたら大変です。

ちゃんと以下のようにしてapache程度にしておきましょう。
上のコードで言うと最後の行がそれです。

process.setuid()

で変えることができます。

あ、サーバを立ち上げる前に変えちゃうと80番使えなくなります。