Tengo un servidor Linux con una única IP vinculada. Quiero alojar varios sitios Node.js en este servidor en esta IP, cada uno (obviamente) con un dominio o subdominio único. Los quiero a todos en el puerto 80.
¿Cuáles son mis opciones para hacer esto?
Una solución obvia parece ser que todos los dominios sean atendidos por una aplicación web node.js que actúe como un proxy y pase a las otras aplicaciones node.js que se ejecutan en puertos únicos.
Respuestas:
Elija uno de:
fuente
Diet.js tiene una forma muy agradable y sencilla de alojar varios dominios con la misma instancia de servidor. Simplemente puede llamar a uno nuevo
server()
para cada uno de sus dominios.Un ejemplo simple
Separando sus aplicaciones
Si desea tener diferentes carpetas para sus aplicaciones, entonces podría tener una estructura de carpetas como esta:
En
/server/index.js
necesitaría cada aplicación por su carpeta:En
/server/yourApp/index.js
, configuraría su primer dominio como:Y en
/server/yourOtherApp/index.js
, configuraría su segundo dominio como:Lee mas:
fuente
Hm ... por qué piensas que nodejs debería actuar como un proxy. Sugeriré ejecutar varias aplicaciones de nodo escuchando en diferentes puertos. Luego use nginx para reenviar la solicitud al puerto correcto. Si usa un solo nodejs, también tendrá un solo punto de falla. Si esa aplicación falla, todos los sitios caen.
fuente
Utilice nginx como proxy inverso.
http://www.nginxtips.com/how-to-setup-nginx-as-proxy-for-nodejs/
Nginx aporta una gran cantidad de beneficios a sus aplicaciones en forma de almacenamiento en caché, manejo de archivos estáticos, ssl y equilibrio de carga.
fuente
Tengo una API que uso en un sitio y a continuación se muestra mi configuración. También lo tengo con SSL y GZIP, si alguien lo necesita, solo coméntamelo.
fuente
Si está utilizando el servidor Connect / Express, puede ver el
vhost
middleware. Permitirá que se utilicen varios dominios (subdominios) para la dirección del servidor.Puede seguir el ejemplo dado aquí , que se ve exactamente como lo que necesita.
fuente
La mejor manera de hacerlo es utilizar vhost Middleware de Express. Consulte este tutorial para obtener una explicación paso a paso:
http://shamadeh.com/blog/web/nodejs/express/2014/07/20/ExpressMultipleSites.html
fuente
Este es mi proyecto de demostración más simple sin ningún middleware o proxy.
Esto requiere solo unos pocos códigos y es suficiente.
https://github.com/hitokun-s/node-express-multiapp-demo
Con esta estructura, puede configurar y mantener fácilmente cada aplicación de forma independiente.
Espero que esto sea de ayuda para ti.
fuente
Primero instale para siempre y rebotando .
Luego escribe un script de inicio. En este script, agregue una regla a la utilidad de firewall de iptables para indicarle que reenvíe el tráfico en el puerto 80 al puerto 8000 (o cualquier otra cosa que elija). En mi ejemplo, 8000 es donde corro bouncy
Usando para siempre, digamos al script que se ejecute bouncy en el puerto 8000
El route.json sería algo como
NodeJS application1, application2 y application3 se ejecutan en los puertos 5000, 5001 y 5002 respectivamente.
El script que utilizo en mi caso se puede encontrar aquí y es posible que deba cambiar un poco para adaptarse a su entorno.
También escribí sobre esto con más detalles y lo puedes encontrar aquí .
fuente
A continuación, le indicamos cómo hacerlo con Vanilla Node.js:
Bastante simple, ¿eh?
fuente
literalmente, cuando obtiene el objeto de solicitud y respuesta, puede obtener el dominio a través de "request.headers.host" ... (no la ip, en realidad el dominio)
fuente
Esta guía del océano digital es una excelente manera. Utiliza el módulo pm2 que demoniza su aplicación (los ejecuta como un servicio). No se necesitan módulos adicionales como Forever, ya que reiniciará su aplicación automáticamente si falla. Tiene muchas características que lo ayudan a monitorear las diversas aplicaciones que se ejecutan en su servidor. ¡Es bastante impresionante!
fuente