insomnio + apache + node + node-http-proxy

60 views
Skip to first unread message

Mariano Ferro

unread,
Jan 19, 2012, 4:24:07 AM1/19/12
to nodojs
Mi caso es el siguiente, para quien le sirva.

Tengo un VPS con una IP, me di cuenta que usando

dominio.com -> apache
dominio.com:8080 -> node
y comunicandome con JSONP echo con jQuery

la experiencia para el el usuario decaia a los 10 minutos

Pensando un poco se me ocurrio:

si tengo 2 ips,
apache escucha una ip con dominio.com (127.0.0.1)
node service.dominio.com (127.0.0.2)

Cotiso con mi Hosting me cobravan 50 u$s por mes la nueva ip ( ni que
fuera de oro )

como Rata y Argetino canuto que me criaron,

encontre node-http-proxy la gloria :)

la cosa se hace en 20 minutos

1. crear proxyNode.js con esto
[code]
var http = require('http'),
httpProxy = require('http-proxy');

var options = {
hostnameOnly: true,
router: {
'service.dominio.com': '127.0.0.1:8080', // nodeJs
'dominio.com': '127.0.0.1:8181', // Apache
'www.dominio.com': '127.0.0.1:8181', // Apache esto no estoy
seguro pero no chillo
}
}

var proxyServer = httpProxy.createServer(options);
proxyServer.listen(80);
[/code]

2. Modificar el archivo de configuracion ports.conf de apache (el mio
esta en /etc/apache2/ports.conf )
[code]
NameVirtualHost *
Listen 127.0.0.1:8181
[/code]
** una cosa en mi caso todo el VPS esta para un dominio por lo que
modifico el apache para todos por igual
*** en este archivo tambien hay configuracion del HTTP (443) asi que
si lo usas tene cuidado

3. Modifico el Virtual host de mi dominio ( en mi caso esta en /etc/
apache2/sites-available/default )
[code]
<VirtualHost 127.0.0.1:8181>
[/code]
Diciendole a mi virtual que escuche el 127.0.0.1:8181

4. reinicio Apache
[code]
sudo /etc/init.d/apache2 restart
[/code]
o como sea en tu caso
**** Cuidado que en este momento no va estar andando la web asi que si
esta en produccion apaga el celular

5. corro node-http-proxy
[code]
forever proxyNode.js
[/code]
o
[code]
node proxyNode.js
[/code]

como avos te guste ;)

6. salgo por ahi con los 50 u$s que me ahore


----

Criticas se aceptan de todos los colores e idiomas, solo si aportan
Contenido
Disculpen las faltas (:


Una cosa mas por el tema de REMOTE_ADDR lo estoy tratando de
solucionar, pero el sol ya salio y mi novia me va a pegar.
Encontre esto
http://stackoverflow.com/questions/8373951/how-to-get-programmatically-the-web-browsers-ip-address-and-port-number-in-c

mas a la noche investigo y aporto :)









Mariano Iglesias

unread,
Jan 19, 2012, 8:08:26 AM1/19/12
to nod...@googlegroups.com
El tema es obviamente tenes que correr proxyNode con un upstart o algo que te lo restartee si se te cae. Tambien me sorprende que no use cluster.

Yo primero dejaria de lado apache, si podes, y me cambiaria a NGINX. Y usando NGINX, podes hacer un proxy hacia tu node, ponele, si my /api va a ser manejada exclusivamente por node:

server {
    listen 80;
    server_name *.myserver.com;
    root /home/www/myserver.com;
    index index.html index.htm index.php;
    #....
    # MAS CONFIG ACA
    #
    location /api {
        proxy_pass http://localhost:8080; # 8080 es node
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_max_temp_file_size 0;
        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 90;
        proxy_read_timeout 90;
        proxy_send_timeout 90;
        proxy_buffers 4 32k;
        proxy_buffer_size 4k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
    }
}

De esta manera tendrias un solo webserver, sin herramientas agregadas. Aca hay otro ejemplo, con instrucciones especificas para ubuntu (y una config un poco mas sencilla que la que te di aca): http://stackoverflow.com/questions/5009324/node-js-nginx-and-now

Un tema es si tu node app usa websockets. Ahi lo anterior se te pincha. Pero por suerte nginx tiene un modulo para solucionarlo: http://www.letseehere.com/reverse-proxy-web-sockets

2012/1/19 Mariano Ferro <ferro....@gmail.com>

Cedric Luckie

unread,
May 13, 2014, 5:25:39 PM5/13/14
to nod...@googlegroups.com

Hola, me parece muy interesante tu publicación, en mi caso mi proveedor de hosting me da dos IP's... se que eso debería hacer las cosas más sencillas... pero la verdad no tengo ni idea de cómo asignar una IP (en la que corro node) a un dominio determinado, me podrías echar la mano??

Cedric Luckie

unread,
May 13, 2014, 9:43:36 PM5/13/14
to nod...@googlegroups.com
tengo instalado centos en el VPS, es difícil reemplazar apache? dejaría de funcionar whm y las cuentas de cpanel? sabes de algún tutorial o algo en lo que me pueda basar?

De antemano te agradezco mucho el tiempo que te tomaste en responderme :)
Reply all
Reply to author
Forward
0 new messages