2011-08-29 12 views
12

Apache y Node.js tienen algo en común. Cuanto más uso Node.js, más me gusta Node.js; Del mismo modo, cada vez que uso Apache, me gusta más Node.js.Node.js como contenedor de aplicaciones

Sin embargo, una cosa buena de Apache es que puede hacer muchas cosas a través del mismo puerto. PHP, Python, Perl, diferentes aplicaciones, diferentes rutas, todo el magilla. Node.js no hace eso, y se supone que no, pero me gustaría hacer algo similar.

Me gustaría darle una lista de URL-prefijos (o expresiones regulares idealmente) y suficiente información para, si recibe una solicitud que coincida con un prefijo en particular, pasa la solicitud a una instancia subordinada ejecutando un script especificado (y comenzará una instancia así si no lo ha hecho aún, y lo cerrará cuando hacerlo parezca prudente). Básicamente, quiero que nodejs-proxy y cluster cooperen. Con él, podría ejecutar varias aplicaciones juntas en la misma máquina a través del puerto 80.

Esto parece bastante fácil y muy útil y estaba a punto de escribirlo cuando se me ocurrió, "Esto parece bastante fácil y muy útil, ¡probablemente alguien ya lo haya escrito! " ¿Alguna sugerencia?

+6

+1 clásico. "Cuanto más uso Apache, más me gusta node.js" – Raynos

+0

Mongrel2 se puede usar para enrutar solicitudes como desee (si lo entiendo correctamente) y hay enlaces para Node. No es un software Node sin embargo. – Austin

+0

@Austin - parece que funcionaría, pero quiero un módulo Node (¿un "nódulo"?). Creo que es posible construir un sistema complejo, altamente eficiente, completamente de Javascript y deseo probar esta creencia. – Malvolio

Respuesta

7

Node.js no tiene ninguna capacidad incorporada para enrutar solicitudes a diferentes aplicaciones, pero marcos como este están en desarrollo.

Nodejitsu's Haibu me viene a la mente - administra los procesos secundarios para cada aplicación y usa node-http-proxy para enrutar las solicitudes.

+0

Esta respuesta verificada necesita ser actualizada. –

+0

@ Miss.Code ¡Siéntete libre! – s4y

1

Puedes echar un vistazo a http://expressjs.com que describo como un 'sinatra para el nodo'. Proporciona todo el enrutamiento basado en URL/patrón. Puede acoplar esto con https://github.com/visionmedia/express-resource para crear un enfoque de recurso de estilo RESTful.

+0

¿Estás seguro? Miré a través de los documentos y parece que el enrutamiento es a las funciones internas, no a otros nodos, que es muy muy diferente. – Malvolio

+0

Supongo que esto fue interpretar "pasa la solicitud a una instancia subordinada" como "enrutar la solicitud a un hilo en el que puede hacer algo con él" en lugar de "si es necesario iniciar un nuevo proceso de nodo para tratar la solicitud" ". Ahí es donde vería god + nginx + una cola de solicitudes para el balanceo de carga en lugar de escribir algo desde cero. YMMV. Enlace relevante: http://blog.acmarques.com/deploying_node_with_nginx_and_god –

0

Para mí, parece que está buscando un proxy HTTP basado en eventos (para reemplazar Apache) - en ese sentido, nginx parece ser el rey actual de la colina.

+0

¿Estás seguro? No parece que va a mantener procesos secundarios para atender esas solicitudes de proxies. – Malvolio

+0

@Malvolio Muchas personas usan nginx como * proxy inverso * para distribuir solicitudes para separar las instancias de node.js. – s4y

+0

@Sidnicious: gracias, pero mi pregunta es si * mantendrá * (es decir, se iniciará y, si es aconsejable, se apagará) esas instancias de node.js. Si no lo hace, tendré que crear un programa node.js que lo haga, y ese programa también podría hacer el proxy; si es * will * [hace feliz danza]. – Malvolio

Cuestiones relacionadas