Puertos y NodeJS

Iniciado por Diesan Romero, 20 Agosto 2016, 05:42 AM

0 Miembros y 1 Visitante están viendo este tema.

Diesan Romero

He visto varios tutoriales donde escriben codigo en NodeJS por lo que a la hora de crear un servidor especifican el puerto. Ahora, cuando voy a visualizar la pagina tengo que poner http://midominio.com:elpuerto ejemplo(localhost:8080) y tiene que ser obligatoriamente por ese puerto. Ahora mi pregunta es ¿Cómo hago para no tener que un usuario entre por la URL sin tener que especificar el puerto?

Saludos y gracias de antemano;

ivandiaz

Puerto 80 es el default que el navegador asume si no se especifca un puerto. Ejemplo www.google.com es lo mismo que www.google.com:80

WHK

#2
Pues tienes dos opciones, o configuras la app para que escuche por el puerto 80 o usas un reverse proxy.

Normalmente si tu app va a ser la unica app en todo el servidor entonces usa el 80, pero esto quiere decir que no podrás tener mas apps funcionando.

Para evitar esto lo que se hace es instalar apache o el servidor http que desees y debes configurar un reverse proxy, ¿que significa?, significa que tu apache correrá en el puerto 80 y tu app en el 8080, pero tu servidor http va a tener una configuración para que el usuario cuando ingrese a http://demo.com/ el servidor web vaya a consultar por debajo a tu app con node, es como crear un puente, el usuario consulta al servidor, el servidor consulta a la app al puerto 8080 y tu app le responderá al servidor y el servidor al usuario.

¿Cómo se logra esto?, acá algunos tutoriales:

http://stackoverflow.com/questions/14259321/apache-node-js-mod-proxy-how-to-route-one-domain-to-3000-and-another-to-8
http://www.codingtricks.biz/run-nodejs-application-apache/
https://www.digitalocean.com/community/questions/how-to-run-nodejs-with-apache-for-ubuntu-12-04

¿Cómo seguir buscando?, en google por "Nodejs + apache reverse proxy"

Ahora, también hay una tercera opción pero es mas compleja y necesita mas conocimientos y es usando Phusion Passenger:
https://github.com/phusion/passenger/wiki/Phusion-Passenger:-Node.js-tutorial
https://www.phusionpassenger.com/library/walkthroughs/deploy/nodejs/
https://www.phusionpassenger.com/library/walkthroughs/basics/nodejs/fundamental_concepts.html

Lo que hace esto es crear un puente de tipo CGI entre apache y node tal como se logra con apache + php pero este driver hace posible cargar la ejecución de varios lenguajes de programación dentro del mismo módulo (passenger) tales como: nodejs y ruby on rails, yo lo uso para publicar apps en rails pero no es muy cómodo, especialmente cuando debes instalar algunas dependencias desde rvm (administrador de versiones de rails) y no desde el repositorio del sistema operativo, pero no se si será igual en node.

De todas las alternativas te recomiendo hacer lo del reverse proxy, es lo que la gran mayoría hace, es cómodo y sirve para múltiples proyectos a futuro sin tener que realizar instalaciones especiales por proyecto.

Ahora, hay una cuarta opción pero es aun mas compleja xD y es usando contenedores LXD o Docker y desde ahi publicar con el reverse proxy con apache, pero ahi si necesitas mas conocimientos. De todas maneras si te interesa:
https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
https://www.npmjs.com/package/node-lxd
http://www.infoworld.com/article/2843865/virtualization/canonicals-lxd-turns-docker-into-vm.html

Saludos.

Diesan Romero

Cita de: WHK en 22 Agosto 2016, 02:21 AM
Pues tienes dos opciones, o configuras la app para que escuche por el puerto 80 o usas un reverse proxy.

Normalmente si tu app va a ser la unica app en todo el servidor entonces usa el 80, pero esto quiere decir que no podrás tener mas apps funcionando.

Para evitar esto lo que se hace es instalar apache o el servidor http que desees y debes configurar un reverse proxy, ¿que significa?, significa que tu apache correrá en el puerto 80 y tu app en el 8080, pero tu servidor http va a tener una configuración para que el usuario cuando ingrese a http://demo.com/ el servidor web vaya a consultar por debajo a tu app con node, es como crear un puente, el usuario consulta al servidor, el servidor consulta a la app al puerto 8080 y tu app le responderá al servidor y el servidor al usuario.

¿Cómo se logra esto?, acá algunos tutoriales:

http://stackoverflow.com/questions/14259321/apache-node-js-mod-proxy-how-to-route-one-domain-to-3000-and-another-to-8
http://www.codingtricks.biz/run-nodejs-application-apache/
https://www.digitalocean.com/community/questions/how-to-run-nodejs-with-apache-for-ubuntu-12-04

¿Cómo seguir buscando?, en google por "Nodejs + apache reverse proxy"

Ahora, también hay una tercera opción pero es mas compleja y necesita mas conocimientos y es usando Phusion Passenger:
https://github.com/phusion/passenger/wiki/Phusion-Passenger:-Node.js-tutorial
https://www.phusionpassenger.com/library/walkthroughs/deploy/nodejs/
https://www.phusionpassenger.com/library/walkthroughs/basics/nodejs/fundamental_concepts.html

Lo que hace esto es crear un puente de tipo CGI entre apache y node tal como se logra con apache + php pero este driver hace posible cargar la ejecución de varios lenguajes de programación dentro del mismo módulo (passenger) tales como: nodejs y ruby on rails, yo lo uso para publicar apps en rails pero no es muy cómodo, especialmente cuando debes instalar algunas dependencias desde rvm (administrador de versiones de rails) y no desde el repositorio del sistema operativo, pero no se si será igual en node.

De todas las alternativas te recomiendo hacer lo del reverse proxy, es lo que la gran mayoría hace, es cómodo y sirve para múltiples proyectos a futuro sin tener que realizar instalaciones especiales por proyecto.

Ahora, hay una cuarta opción pero es aun mas compleja xD y es usando contenedores LXD o Docker y desde ahi publicar con el reverse proxy con apache, pero ahi si necesitas mas conocimientos. De todas maneras si te interesa:
https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
https://www.npmjs.com/package/node-lxd
http://www.infoworld.com/article/2843865/virtualization/canonicals-lxd-turns-docker-into-vm.html

Saludos.

No te preocupes amigo, es la única aplicación que quiero, una sola en el puerto 80, pero eh ahí mi problema y el por qué pregunto; lo que pasa es que cada vez que prendo cualquier server (wampp, Xampp), como para probar, me sale el IIS Windows(Internet Information Service) anunciándome que instale Windows Server 2008. No se como arreglar eso, ponga la aplicación que ponga me sigue saliendo.