配置 Google Compute Engine VM 入口防火墙规则的问题

Issue configuring Google Compute Engine VM ingress firewall rule

我有一个带有 npm 的小型 GCE VM 设置和一个 node.js 应用程序 运行 在端口 8080 上。我可以:

'''curl http://localhost:8080'''

并取回索引页,这样服务器就 运行。

我已将 IP 地址设为静态(不是临时的)。

过滤规则设置如下:

但是我无法连接到外部,它只是说无法访问该站点并且服务器拒绝连接。我打开了防火墙规则的日志记录,但没有看到那里有任何流量,所以很困惑这可能意味着什么。我假设流量甚至没有达到规则?

感谢您的帮助。

很可能您的 node.js 应用程序正在侦听 localhost,或 127.0.0.1 (IPv4) 或 [::1] (IPv6)。这些地址被分配给环回接口,这意味着只接受来自计算机内部的连接。

解决方案是更改您的代码以侦听所有网络接口。这被定义为伪地址 0.0.0.0.

在以下示例中,请注意包含 listen(8080, "0.0.0.0"); 的行。这定义了应用程序正在侦听连接的接口。

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8080, "0.0.0.0");
console.log('Server is running and listening on all interfaces');