如何在Google计算引擎外部IP中使用2个独立端口运行nodejs

wbgh16ku  于 9个月前  发布在  Node.js
关注(0)|答案(2)|浏览(91)

我正面临一个问题。
我已经在谷歌计算引擎上创建了虚拟机示例。虚拟机示例的外部IP是:104.198.225.177。访问了ssh并安装了nodejs。现在我想运行2个nodejs脚本,一个在端口8000,另一个在端口9000。
如果想运行并访问两个nodejs URL,如下所示:http://104.198.225.177:8000http://104.198.225.177:9000
我已经创建了脚本,但当我启动并尝试使用vm示例外部ip在浏览器中访问时,如:http://104.198.225.177:3000/但不工作。我在ssh cur中尝试了像:curl localhost:3000/和它的工作,但使用外部ip它不工作。
当我在启动nodejs时添加IP地址时,如下所示:app.listen(9000,"104.198.225.177");我得到了这个错误:listen EADDRNOTAVAIL 104.198.225.177:9000 at Object.exports._errnoException
任何帮助感激。

pobjuy32

pobjuy321#

确保您已允许外部源的流量到达网络防火墙部分中的GCE示例的某些端口。

已解决:同时确保您的应用程序绑定到0.0.0.0/all接口和地址,而不仅仅是VM公共IP地址。

wmtdaxz3

wmtdaxz32#

我在Google Cloud Engine Instance (VM Instance)中遇到了同样的问题。
错误是:

node:events:491
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRNOTAVAIL: address not available 34.19.24.199:3000
    at Server.setupListenHandle [as _listen2] (node:net:1446:21)
    at listenInCluster (node:net:1511:12)
    at doListen (node:net:1660:7)
    at processTicksAndRejections (node:internal/process/task_queues:84:21)
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1490:8)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'EADDRNOTAVAIL',
  errno: -99,
  syscall: 'listen',
  address: '34.19.24.199',
  port: 3000
}

字符串
我按照@PrecariousJimi和@ Pawan开发人员的评论,并解决了这个问题.但感到困惑的是,如何按照步骤来解决.所以,在这里我提到了如何可以解决这个问题,如果你面对.

**STEP-1:**在控制台中进入防火墙(Firewall link),创建一个新策略,详细信息如下:

Name:zhang cheng
网络:default
优先级:1000
交通方向:ingress
匹配时的操作:Allow
源过滤器:0.0.0.0/0
协议和端口:all
现在点击Create按钮。

**STEP-2:**无论您的文件名是什么,请转到您的index.jsapp.js,并将主机名更改为内部IP地址,该内部IP地址将在示例或0.0.0.0的外部IP旁边提供,如下所示

const http = require('node:http');
const hostname = '10.129.0.2'; // In my case, Internal IP address works!!
const port = 3000;
const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});
server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

**STEP-3:**运行您的文件

sudo node index.js


您的 NodeJS 脚本将在您的外部IP地址上运行,并指定端口:示例:

http://34.19.24.199:3000

**STEP-4:**如果节点应用程序仍然没有显示,请允许您的示例防火墙连接到虚拟机的3000端口。

在虚拟示例中运行以下命令。

sudo ufw allow 3000:3007/tcp
sudo ufw allow 3000:3007/udp


这将允许从3000到3007端口用于UDP和TCP
我希望这能帮助一些人…

相关问题