2011-05-14 31 views
8

He creado una aplicación node.js-express. De forma predeterminada, está escuchando en el puerto 3000. Tengo el sistema alojado en una instancia EC2 y he apuntado el registro A de un dominio a la dirección IP elástica de AWS.Configuración de Ubuntu Server para que la aplicación Node.Js (puerto 3000) se publique en una dirección de servidor de dominio en particular

Me gustaría que las solicitudes HTTP al nombre de dominio se dirijan automáticamente a puerto: 3000 o me gustaría poder iniciar el servidor HTTP Express en el puerto 80. (Intenté iniciar el nodo http servidor en el puerto 80 pero obtuvo un error)

Puedo acceder a la aplicación nodo si escribo www.myurl.com:3000 pero necesito poder eliminar ese requisito por el bien de los usuarios finales.

¿Alguien sabe cómo hacer que nodo y puertos y dominios funcionen todos juntos en mi servidor amazon-buntu?

+2

Puede comenzar en el puerto 80 mediante el uso de 'sudo nodo app.js' – Raynos

Respuesta

7

He encontrado este artículo útil cuando tuve el mismo problema:

http://www.debian-administration.org/articles/386

Terminé usando authbind - una vez que se configura simplemente hacer:

authbind node myscript 
+0

Gracias Geoff que parece que debería hacer el truco. * O * 'sudo node app.js' pero parece que podría ser un poco peligroso. :) –

0

usted tiene problema ese mismo conmigo hace varios meses. Tengo la aplicación NodeJS http://obrool.com (aplicación Chats) y http://wpfight.com (Realtime Flight Simulator) que se ejecuta en Amazon EC2 Small. Ejecuto este sitio web durante 3 meses sin ningún reinicio, que es estable para la producción.

Uso Express & Nowjs ejecutándose en el puerto 8003. Luego uso Haproxy como interfaz para redireccionar el puerto 80 al puerto 8003. Por lo tanto, si tiene escucha expresa en el puerto 3000, con Haproxy, puede hacerlo funcionar en express.your-domain.com (puerto 80).

Éstos son mi tutorial que ejecuta la aplicación NodeJS en el puerto 80 en Amazon EC2 Ubuntu:

http://www.yodi.me/blog/2011/09/20/run-nodejs-and-nowjs-as-sub-domain-in-port-80-using-haproxy-websocket-ubuntu/

PS, que ya utilizan muchos método:

  1. El uso de Nginx para el proxy inverso I piratee mi NGINX 0.8 con TCP Upstream pero falló porque aún no soporta sockets web. Basado en https://github.com/LearnBoost/socket.io/wiki/Nginx-and-Socket.io Se dice que el uso de NGINX 1.1.1 tiene soporte para proxys HTTP/1.1. Uso el último NGINX 1.1.3 y no funciona. Incluso @NGINX responde mis tweets y dice que todavía no hay soporte para socket web.

  2. Node-http-proxy todavía tiene problemas.

  3. Authbind y sudo Puede hacer authbind para que nowjs se ejecute en el puerto 80 o lo instale como sudo. Algunas veces ha venido con un problema.

  4. IPTABLES sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-puertos 8003 Mejor utiliza para hacer runit nodejs funcionar como servicio y sobre el permiso del usuario.

  5. HAProxy en Websocket Socket.io haciendo varios errores y apretón de manos para obtener el usuario conectado. Probablemente tome alrededor de 5-10 s.

4

En mi script de implementación, por lo general sólo corro esto para asegurar el tráfico TCP en el puerto 80 va a 3000:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000 
Cuestiones relacionadas