我从
复制了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
答案 0 :(得分:0)
您应该能够使用其IP查看服务器上的页面。但您可能需要先采取以下几个步骤:
记下您的Node应用正在侦听的端口。 3000? 80?在生产中(即在您的云服务器实例上),习惯上在默认的HTTP端口(即80)上运行您的应用程序。但是其他端口也可以使用。
根据您的云提供商,您可能必须先调整其网络设置,然后才能允许从互联网到服务器的任何入站流量。例如,在AWS上,每个实例都绑定到安全组。将此视为云级防火墙,可控制与服务器之间的Internet访问。在AWS上,再次作为示例,您必须调整安全组入站规则以允许建立TCP连接以端口 80 (或者您的端口为节点应用正在监听)。这是一张它看起来像的样本图片。在此示例中,我已打开服务器的端口80以获取TCP流量。打开Node应用程序正在侦听的端口。 HTTP的协议是TCP。
$ sudo ufw status
如果状态为inactive
,则表示Ubuntu未强制执行任何防火墙规则。但是,如果它是active
,则需要确保它允许传入流量到您的Node应用程序的端口。我将让您研究如何调整ufw
设置。
答案 1 :(得分:0)
我收到了DreamHost.com技术支持的答复。我引用:&#34;问题是,为了绑定到低于1000的任何端口,你需要使用sudo。&#34;
我正在使用端口80,因此以下工作:
sudo node index01
更新:确切的限制是1024,即,当使用低于1024的端口时,sudo必须在node命令之前。