配置 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');
我有一个带有 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');