servidor proxy node.js, útil para vagrant e dev local

Às vezes, quando estou desenvolvendo um site local que faz uso de subdomínios e / ou domínios alternativos, quero links para recursos na marcação para resolver corretamente. Este pequeno servidor proxy node.js escuta certos hosts na porta 80 e encaminha essas solicitações para uma porta que o vagrant está escutando. Esta é uma maneira de esfolar um gato: do meu jeito.

Ele deve ser executado em sua máquina host, quando o vagrant estiver ouvindo na porta 8080, e você tiver os hosts desejados listados nas /etc/hostsmáquinas host e convidado.

var http = require('http');

var server = http.createServer(function(req,res){
console
.log(req.headers.host + req.url);
var config = {
"path": req.url,
"port": 8080,
"method": req.method,
"host": req.headers.host,
"agent": false
};
config
.headers = req.headers;
var req2 = http.request(config,function(res2){
res
.statusCode = res2.statusCode;
// depending on your use case, you may wish to omit certain headers
var omit_headers = ['x-content-length','x-date','x-etag','x-last-modified'];
for (var k in res2.headers) {
if ( omit_headers.indexOf(k) === -1 ) {
res
.setHeader(k,res2.headers[k]);
}
}
res2
.on('data',function(chunk){
res
.write(chunk);
});
res2
.on('end',function(){
res
.end();
});
});
req2
.on('error', function(e) {
console
.log('problem with request: ' + e.message);
});
req2
.end();
});

['mydomain.dev','z.mydomain.dev'].forEach(function(thishost){
server
.listen(80,thishost,function(){
console
.log('listening for ' + thishost + ' on :80');
});
});