出于测试目的,我创建了一个Google Cloud Compute Engine VM(Debian 9)。
我安装了nodejs并创建了一个小脚本。通过浏览器导航到外部ip地址时,没有任何反应。
const express = require('express')()
express.get('/', (req, res) => {
console.log('browser access')
}
express.listen(8000, () => console.log('server is running'))
导航到 http://[EXTERNAL_IP_ADDRESS]:8000 时,没有任何反应。
我可以通过外部IP进行SSH访问,
我可以ping到外部IP地址,这也可以
通过终端(SSH访问)执行“ node app.js”时,我看到“服务器正在运行”
我已设置防火墙规则以接受tcp = 8000(IP范围0.0.0.0/0)上的所有传入流量
我有防火墙规则default-allow-http(tcp:80)和default-allow-https(tcp:443)
我有一个静态IP地址
有什么我想念的吗?
编辑:
当我通过浏览器访问服务器(使用:8000)时,页面不断加载。但是消息“浏览器访问”不会发送到控制台。假设30秒后,我在浏览器中收到一个ERR_CONNECTION_TIME_OUT。
Express版本是4.17.1。我也将'express'更改为'app'。
当我打开终端窗口并执行“ curl EXTERNAL_IP_ADDRESS:8000”时,什么也没发生。好像它一直在加载。
我将listen(8000)更改为listen(8000,'0.0.0.0')。没有差异。
问题已解决:
我知道了。我在VM上安装了ufw,并打开了端口8000。这是我的解决方案。
答案 0 :(得分:1)
解决方案:
不仅需要在我的VPC中添加防火墙规则(0.0.0./0 tcp:8000,传入),还需要在VM本身上打开端口8000。我安装了ufw并打开了端口8000。它现在可以工作。