Skip to content

Instantly share code, notes, and snippets.

@cranic
Created April 29, 2014 13:39
Show Gist options
  • Save cranic/11400686 to your computer and use it in GitHub Desktop.
Save cranic/11400686 to your computer and use it in GitHub Desktop.
// require dos pacotes necessários
var http = require('http');
var httpProxy = require('http-proxy');
// inicializando o proxy e o servidor web
var proxy = httpProxy.createProxyServer();
var server = http.createServer();
// Aqui temos a nossa lista de aplicações
var apps = [
{ host: 'meusite.com.br', local: 'localhost:8080' },
{ host: 'minhabreja.com.br', local: 'localhost:8081' },
{ host: 'sub.sitecomsubdominio.com.br', local: 'localhost:8082' }
];
// Vamos escutar por requisições
// vindas do servidor web
server.on('request', function(req, res){
// precisamos ver se a requisição que chegou pertence
// à alguma app que cadastramos acima
var host = null;
apps.forEach(function(app){
if(app.host === req.host)
host = app;
});
// Se o host foi encontrado, vamos fazer o proxy
if(host)
return proxy.web(req, res, {
target : host.local
});
// Se o host não foi encontrado vamos
// terminar a requisição
res.statusCode = 404; // Não encontrado.
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.write('<h1>Não encontrado</h1>');
res.write('A aplicação solicitada não foi encontrada neste servidor');
res.end();
});
// servidor web precisa escutar na porta 8080
server.listen(8080);
@cranic
Copy link
Author

cranic commented Apr 29, 2014

OBS: não testei :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment