8

我已经构建了一个 node.js-express 应用程序。默认情况下,它正在侦听端口 3000。我将系统托管在 EC2 实例上,并将域的 A 记录指向 AWS 弹性 IP 地址。

我希望对域名的 HTTP 请求自动定向到端口:3000 或者我希望能够在端口 80 上启动 Express HTTP 服务器。(我尝试在端口 80 上启动节点 http 服务器但出现错误)

如果我输入 www.myurl.com:3000,我可以访问节点应用程序,但为了最终用户的利益,我需要能够放弃该要求。

有谁知道如何让我的 amazon-buntu 服务器上的节点、端口和域都很好地协同工作?

4

3 回答 3

7

当我遇到同样的问题时,我发现这篇文章很有帮助:

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

我最终使用了 authbind——一旦配置好,你就可以:

authbind node myscript
于 2011-05-14T23:37:52.250 回答
4

在我的部署脚本中,我通常只是运行它来确保端口 80 上的 TCP 流量达到 3000:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
于 2013-07-10T03:22:40.937 回答
0

几个月前你和我有同样的问题。我有运行在 Amazon EC2 Small 上的 NodeJS 应用程序http://obrool.com(聊天应用程序)和http://wpfight.com (实时飞行模拟器)。我运行这个网站超过 3 个月没有任何重启,这意味着生产稳定。

我使用 Express & Nowjs 在端口 8003 上运行。然后我使用 Haproxy 作为前端将端口 80 重定向到端口 8003。因此,如果您在端口 3000 上进行快速侦听,使用 Haproxy,您可以使其在 express.your- 上运行domain.com(端口 80)。

这是我在 Amazon EC2 Ubuntu 的 80 端口上运行 NodeJS 应用程序的教程:

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

PS,我已经使用了很多方法:

  1. 使用 NGINX 进行反向代理我用 TCP Upstream 破解了我的 NGINX 0.8 但失败了,因为它仍然不支持 Web 套接字。基于https://github.com/LearnBoost/socket.io/wiki/Nginx-and-Socket.io据说使用 NGINX 1.1.1 支持代理 HTTP/1.1。我使用最新的 NGINX 1.1.3,但它不起作用。甚至@NGINX 也回复了我的推文,并说还没有 web-socket 支持。

  2. Node-http-proxy 仍然存在问题。

  3. Authbind 和 sudo 您可以执行 authbind 以使 nowjs 在端口 80 上运行或安装为 sudo。有时它会带来问题。

  4. IPTABLES sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003 最好使用 runit 使 nodejs 作为服务和用户权限运行。

  5. Websocket Socket.io 上的 HAProxy 执行多个错误和握手以使用户连接。大概需要5-10秒。

于 2011-11-09T05:38:10.313 回答