GCP计算引擎-无法在端口80上侦听?

yen*_*yen 2 node.js google-compute-engine google-cloud-platform

我创建了一个具有以下网络标记和防火墙规则的计算引擎: 在此处输入图片说明

在此处输入图片说明 因此,如果我正确理解这一点,则机器可以在端口80上侦听。我安装了node并创建了一个非常简单的http服务器,以查看是否可以通过http到达该框。在云控制台上通过ssh登录。当我尝试启动它(例如npm start运行服务器)时,它说:

Error: listen EACCES: permission denied 0.0.0.0:80

为什么?怎么解决?

我在某个地方读到低端口号通常仅限于root用户,因此我尝试sudo说它sudo: npm: command未找到,并且与sudo节点类似。

同样为什么在使用此类脚本创建服务器时,文章说它们是作为root执行的?这是怎么发生的,为什么当我启动计算机并以自己的身份登录时却不以root用户身份执行?是的,我对linux perms的理解非常新手。

谢谢...

Joh*_*ley 5

为了使用低于1024的TCP端口,您的节点服务器必须以root特权运行。TCP端口1024及更高端口不需要特权。

登录到Google Cloud Compute Engine实例时,您以normal用户身份登录。您没有root特权。要为命令授予root特权,请在命令前面加上sudo。范例:sudo mkdir /directoryname

建议以root特权运行节点服务器。这在您的系统中可能会造成严重的安全漏洞。在决定之前,请先搜索有关此主题的Internet。

您的选择是:

  1. 选择1023以上的端口。公用端口号:8000、8080、5000。
  2. 使用root特权启动节点服务器: sudo node hello.js

关于npm找不到。您将需要修改环境的PATH变量,以包括为用户安装节点工具集的位置root

  • 他还可以运行反向代理(例如nginx),代理该域的端口。 (2认同)
  • 另一个项目。由微型服务器(如节点,Flask等)提供的Web服务并非旨在可靠。它们旨在提供“微服务”。它们旨在随时启动和杀死。它们在“容器”,“ kubernetes”等中非常有用。在作为服务器的普通计算实例上,它们充其量是“有问题的”。 (2认同)
  • @yen-只需使用端口8000或8080,这是非常常见的。发展和学习。然后担心负载平衡器,反向代理,容器等。 (2认同)