jueves, 20 de octubre de 2011

Proxys inversos con node.js

Voy a crear unos proxys inversos triviales con node.js

Empezamos montando un servidor en el puerto 9000. En el fichero proxy-test.js:

var http = require("http");  
http.createServer(function (req, res) { 
  res.writeHead(200, { 'Content-Type': 'text/plain' }); 
  res.write('Respuesta en servidor original! ' + '\n' + JSON.stringify(req.headers, true, 2)); 
  res.end(); 
}).listen(9000); 



Arrancamos el servidor:

node proxy-test.js

Accediendo a http://localhost:9000/ deberíamos ver algo como:


Respuesta en servidor original! 
{
  "host": "localhost:9000",
  "connection": "keep-alive",
  "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1",
  "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
  "accept-encoding": "gzip,deflate,sdch",
  "accept-language": "es-ES,es;q=0.8",
  "accept-charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3"
}


A continuación nos descargaremos una librería para el proxy inverso, con lo que no reinventamos la rueda. Se trata de la libreria http-proxy que podemos encontrar en https://github.com/nodejitsu/node-http-proxy.

Para instalarla utilizamos npm:

npm install http-proxy

Con una instalación correcta veremos algo como:

http-proxy@0.7.3 ./node_modules/http-proxy
├── colors@0.5.1
├── pkginfo@0.2.2
└── optimist@0.2.8


Creamos en el fichero proxy-test.js el proxy inverso referenciando la librería e instanciandolo con una sencilla sentencia.

var httpProxy = require("http-proxy"); 
httpProxy.createServer(9000, 'localhost').listen(8000); 


Arrancamos node y accedemos a http://localhost:8000 y deberíamos los mismo que accediendo al puerto 9000.




No hay comentarios:

Publicar un comentario