node.js ドメインのポート番号なくす
ポート80のサーバーを作り、プロキシサーバとしてそこにアクセスが来るようにして、そこから各ポートへ飛ばす。
■app.jsを作る。
var url = require('url'), http = require('http'); var port = 80; http.createServer(function(serverRequest, serverResponse) { var requestUrl = url.parse(serverRequest.url); var body = []; console.log(requestUrl.href); serverRequest.on('data', function(data) { body.push(data); }); serverRequest.on('end', function() { var request = http.request({ host: serverRequest.headers.host, port: 3000, // 飛ばしたいポート path: requestUrl.path, method: serverRequest.method, headers: serverRequest.headers }, function(response) { serverResponse.writeHead(response.statusCode, response.headers); response.on('data', function(chunk) { serverResponse.write(chunk); }); response.on('end', function() { serverResponse.end(); }); }); if(body.length > 0) { request.write(body.join('')); } request.end(); }); }).listen(port);
■起動させる
※node.jsはポート80の時、sudo じゃないと起動できない。
$ sudo node app.js
■正常に動くことを確認しforeverで常時起動させる
普通にsudo forever start app.jsしてもnodeがsbinの中にないのでリンクはる
$ sudo ln -s ~/.nave/installed/0.8.4/bin/node /sbin/node sudo forever start app.js
以上でポート指定なしでドメインを叩くと:3000へいく
参考)
http://rockf.es/blog/2012/02/02/node/http://blog.monoweb.info/blog/2012/05/18/nodejs-proxy-server/