node-http-proxy é uma maneira simples de criar proxies com base no nome do host, URIs ou RegEx, para várias portas + IPs. Se você estiver executando vários aplicativos node.js em um único endereço IP, esta é uma ótima maneira de fazer isso. A documentação não explica claramente como ter um site “padrão” no caso de alguém visitar seu IP com um nome de host inválido, pode ser útil se você estiver reutilizando um endereço IP antigo com novos nomes de host. Versões recentes do node-http-proxy permitem RegEx, então, felizmente, isso é bastante simples:
var httpProxy = require('http-proxy');
var options = {
// this list is processed from top to bottom, so '.*' will go to
// '127.0.0.1:3000' if the Host header hasn't previously matched
router : {
'example.com': '127.0.0.1:3001',
'sample.com': '127.0.0.1:3002',
'^.*.sample.com': '127.0.0.1:3002',
'.*': '127.0.0.1:3000'
}
};
// bind to port 80 on the specified IP address
httpProxy.createServer(options).listen(80, '12.23.34.45');
Essa pode ser uma alternativa fácil ao uso do Nginx se você deseja apenas compartilhar um endereço IP com vários aplicativos.
BÔNUS: Quer rodar seu proxy na porta 80 sem rodar como root?
sudo setcap cap_net_bind_service=+ep /path/to/your/node
(Fonte: http://technosophos.com/content/run-nodejs-apps-low-ports-without-running-root )