nodejsで作ったWebアプリを80番ポートで動作させたいけど、Apacheが使っているし、Apacheを止めてルートで80番ポートを割り当てるのもセキュリティ的にいやなんでApacheを使ってポート8080を80にリバースプロキシさせてみました。
Apacheの設定はこんな感じ。
NameVirtualHost *:80 <VirtualHost *:80> ServerName example.com // ServerNameは適宜変更してください。 ProxyPass / http://hogehoge.net:8080/ ProxyPassReverse / http://hogehoge.net:8080/ </VirtualHost>
nodeのソースはこんな感じ。
サーバ側
var express = require('express'), app = express(), http = require('http'), server = http.createServer(app), io = require('socket.io').listen(server); app.configure(function(){ app.use(express.static(__dirname + '/public')); }); // listen for new web clients: server.listen(8080);
クライアント側
var socket = io.connect('http://hogehoge.net:8080'); socket.on('connect', function(req, res) { // 必要な処理 });
これで、http://hogehoge.netにアクセスすればリバースされてアプリが動きます。
他にもやり方はありそうだけど、とりあえずはこれで。