配置 Ubuntu 服务器,以便 Node.Js 应用程序(端口 3000)在特定域服务器地址提供服务



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

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

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

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

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

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

我最终使用了身份验证 - 一旦配置,您只需执行以下操作:

authbind node myscript

在我的部署脚本中,我通常只运行以下命令以确保端口 80 上的 TCP 流量达到 3000:

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

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

我使用在端口8003上运行的Express和Nowjs。然后我使用 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上游破解了我的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回复我的推文并说还没有网络套接字支持。

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

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

  4. IPTABLES sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j 重定向 --to-ports 8003最好使用 runit 使 nodejs 作为服务运行并在用户许可下运行。

  5. HAProxy on WebsocketSocket.io 执行几个错误和握手以使用户连接。可能需要大约 5-10 秒。

最新更新