2011-05-14 1 views
8

J'ai construit une application node.js-express. Par défaut, il écoute le port 3000. J'ai le système hébergé sur une instance EC2 et ai pointé l'enregistrement A d'un domaine vers l'adresse IP élastique AWS. Je souhaite que les requêtes HTTP vers le nom de domaine soient automatiquement redirigées vers le port: 3000 ou que je souhaite pouvoir démarrer le serveur HTTP Express sur le port 80. (J'ai essayé de démarrer le nœud HTTP http: //www.youtube.com/watch? serveur sur le port 80 mais j'ai eu une erreur)Configuration d'Ubuntu Server pour que l'application Node.Js (port 3000) soit servie à une adresse de serveur de domaine particulier

Je peux accéder à l'application de nœud si je tape www.myurl.com:3000 mais je dois pouvoir abandonner cette exigence pour le bien des utilisateurs finaux.

Est-ce que quelqu'un sait comment faire un nœud et des ports et des domaines tous bien jouer ensemble sur mon serveur amazon-buntu?

+2

Vous pouvez commencer sur le port 80 en utilisant 'sudo noeud app.js' – Raynos

Répondre

7

J'ai trouvé cet article utile quand j'ai eu le même problème:

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

J'ai fini à l'aide authbind - une fois que vous avez configuré le faire:

authbind node myscript 
+0

Merci Geoff qui a l'air de faire un truc. * OU * 'sudo node app.js' mais cela semble être un peu dangereux! :) –

0

Vous avez problème même avec moi il y a plusieurs mois. J'ai l'application NodeJS http://obrool.com (application Chats) et http://wpfight.com (Realtime Flight Simulator) qui fonctionne sur Amazon EC2 Small. Je cours ce site sur 3 mois sans aucun redémarrage ce qui est moyen stable pour la production. J'utilise Express & Nowjs fonctionnant sur le port 8003. Ensuite, j'utilise Haproxy comme frontal pour rediriger le port 80 vers le port 8003. Donc, si vous avez l'écoute expresse sur le port 3000, avec Haproxy, vous pouvez le faire fonctionner sur express.your-domain.com (port 80).

Voici mon tutoriel en cours d'exécution l'application NodeJS sur le port 80 dans 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, j'utilise déjà beaucoup méthode:

  1. En utilisant Nginx pour proxy inverse I pirater mon NGINX 0.8 avec TCP Upstream mais a échoué parce qu'il ne prend toujours pas en charge les sockets Web. Basé sur https://github.com/LearnBoost/socket.io/wiki/Nginx-and-Socket.io Il est dit utiliser NGINX 1.1.1 car il supporte le proxy HTTP/1.1. J'utilise le dernier NGINX 1.1.3 et ça ne marche pas. Même @NGINX répond à mes tweets et dit qu'il n'y a pas encore de support de socket web.

  2. Node-http-proxy a toujours des problèmes. AuthBind et sudo AuthBind et sudo Authbind et sudo Authbind et sudo Authbind et sudo Vous pouvez faire authbind pour exécuter nowjs sur le port 80 ou l'installer en tant que sudo. Parfois, c'est un problème.

  3. iptables iptables -t nat sudo -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003 Mieux vous utilisez runit pour faire nodejs fonctionner comme service et sur l'autorisation de l'utilisateur. HAProxy sur Websocket Socket.io effectue plusieurs erreurs et se met en contact pour se connecter à l'utilisateur. Cela prend probablement environ 5-10.

4

Dans mon script de déploiement, je généralement courir tout cela pour assurer le trafic TCP sur le port 80 va à 3000:

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