Estoy usando un servidor para alojar varias aplicaciones web Node.js, que se distribuyen en varios dominios. Mi práctica actual es ejecutar un servidor Express para cada aplicación en un puerto diferente y ejecutar un servidor base que simplemente enruta (redirecciona) solicitudes al puerto correcto/servidor Express. Esto funciona, pero significa que mi servidor base está enrutando cada solicitud HTTP (y redirigiéndola manualmente), y que mis usuarios ven mis aplicaciones como alojadas en [hostname.com]: 8000.¿Cómo debo organizar múltiples servidores Express en el mismo sistema?
Después de investigar un poco, he descubierto que puedo usar http-proxy para mis necesidades de enrutamiento, pero aún me gustaría saber si hay una mejor práctica para ejecutar múltiples servidores Express en el mismo sistema. Así es como estoy planeando hacerlo:
Cada aplicación web tendrá su propia carpeta, con una estructura de carpetas Express completa (app.js, rutas, vistas, etc.) Las aplicaciones se agruparán por dominio, por lo que ejemplo de estructura de carpetas sería:
hostname.com/
app.js
routes/
views/
...
app1/
app1.js
routes/
views/
...
app2
...
hostname2.com/
app.js
routes/
views/
...
que tendrá que ejecutar cada app.js separado con el nodo (o con forever, que actualmente estoy usando), y cada uno tendrá que utilizar un puerto diferente internamente , con redireccionamientos de aplicaciones cruzadas dirigidos al puerto de la aplicación de destino.
Entonces, ese es mi plan actual. ¿Cuáles son los problemas con esto y qué peligros debería tratar de evitar? Lo más importante es que existe una solución establecida para este problema: ¿el problema de alojar múltiples aplicaciones web en el mismo sistema con Node.js/Express?
EDIT: Yo planeo usar el tiempo WebSockets y HTTPS, y la cantidad de ancho de banda de mi programa de instalación puede soportar es de poca importancia para mí - esto es un servidor de desarrollo (al menos por ahora). Gracias a David Ellis por mencionar el tema de WebSockets.
SEGUNDA EDICION: Gracias a ambos EhevuTov y David Ellis por sus respuestas, que me ayudaron mucho. Todavía me estoy conformando con una estructura general para mi aplicación, y parece que esa pregunta se aborda en detalle por this StackOverflow question
TERCERA EDICIÓN: He venido desde que publiqué esta pregunta (aunque tengo mucho más que ir). Consulte this file in my GitHub repository, que aprovecha lo que aprendí de las respuestas a esta pregunta.
Gracias por el comentario. Empecé a usar vhost (con la ayuda de algunos usuarios útiles de IRC en #express) y funciona como un hechizo. También gracias por la posibilidad de pasar a Node.Cluster. – Aaron
@aaron. De nada. Nos vemos en el IRC, tal vez – EhevuTov
@ Aaron ¿Tiene algún código que podría compartir para mostrarnos cómo lo hace? – Matt