Node.js:将Hello World页面设为公共

时间:2018-01-24 04:54:35

标签: node.js

我从

复制了Hello World示例
https://nodejs.org/en/about/

它在我的Ubuntu云实例上运行正常。现在,我想让Hello World页面对整个Internet可见。代码需要做哪些更改才能完成此任务?

更新:当port设置为80且hostname设置为实例IP地址时,尝试启动node.js会话时会生成以下错误:

ubuntu@instance04:~/NodeJS/NodeHW$ node index01
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: listen EACCES <my_ip_address>:80
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at Server.setupListenHandle [as _listen2] (net.js:1334:19)
    at listenInCluster (net.js:1392:12)
    at doListen (net.js:1501:7)
    at _combinedTickCallback (internal/process/next_tick.js:141:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
    at Function.Module.runMain (module.js:686:11)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

2 个答案:

答案 0 :(得分:0)

您应该能够使用其IP查看服务器上的页面。但您可能需要先采取以下几个步骤:

  1. 记下您的Node应用正在侦听的端口。 3000? 80?在生产中(即在您的云服务器实例上),习惯上在默认的HTTP端口(即80)上运行您的应用程序。但是其他端口也可以使用。

  2. 根据您的云提供商,您可能必须先调整其网络设置,然后才能允许从互联网到服务器的任何入站流量。例如,在AWS上,每个实例都绑定到安全组。将此视为云级防火墙,可控制与服务器之间的Internet访问。在AWS上,再次作为示例,您必须调整安全组入站规则以允许建立TCP连接以端口 80 (或者您的端口为节点应用正在监听)。这是一张它看起来像的样本图片。在此示例中,我已打开服务器的端口80以获取TCP流量。打开Node应用程序正在侦听的端口。 HTTP的协议是TCP。

  3. AWS Security Group Inbound Rules allowing HTTP traffic through port 80

    1. 此外,您可能还需要调整服务器的内部防火墙设置。在Ubuntu上,为了检查防火墙的状态,请发出以下命令:
    2.   

      $ sudo ufw status

      如果状态为inactive,则表示Ubuntu未强制执行任何防火墙规则。但是,如果它是active,则需要确保它允许传入流量到您的Node应用程序的端口。我将让您研究如何调整ufw设置。

      1. 最后,获取面向服务器的公共 IP地址或分配的域名。在AWS上,此信息可在您的实例详细信息视图中找到:
      2. Instance public DNS and IP

        因此,现在您应该能够从互联网上的任何位置浏览到您的服务器的公共IP和您的Node应用程序的端口并查看该页面。

        http://ip:port

        如果您的服务器的IP是123.123.123.123且您的Node应用程序正在侦听端口3000,则地址将为http://123.123.123.123:3000。如果您的Node应用程序正在侦听端口80,则在浏览时无需指定端口。因此,您只需访问:http://123.123.123.123

答案 1 :(得分:0)

我收到了DreamHost.com技术支持的答复。我引用:&#34;问题是,为了绑定到低于1000的任何端口,你需要使用sudo。&#34;

我正在使用端口80,因此以下工作:

sudo node index01

更新:确切的限制是1024,即,当使用低于1024的端口时,sudo必须在node命令之前。