使用 ngrok 建立隧道 mongodb

Tunneling mongodb using ngrok

我有一个 MongoDb 本地托管在我的机器上,并在端口 localhost:27017 中成功运行。该数据库有一个用户名和密码以及一个名为 "testDb" 的集合。在代码中,我能够使用本地主机成功访问数据库。

我正在尝试使用 ngrok 从远程桌面访问此 MongoDb。我实施了端口转发,命令提示符中显示了以下响应。

转发https://5e825c82.ngrok.io -> http://localhost:27017

我也试过更改端口=> 转发https://5e825c82.ngrok.io -> http://localhost:28017

两个端口都失败并显示以下错误消息: 与 http://5e825c82.ngrok.io 的连接已成功连接到您的 ngrok 客户端,但客户端未能建立与本地地址 localhost:28017 的连接。 确保 Web 服务是 localhost:28017 上的 运行 并且它是一个有效地址。 遇到的错误是:dial tcp [::1]:28017: connectex: No connection could be because the target machine actively refused.

// Works fine
MongoClient client = new MongoClient("mongodb://admin:admin@localhost:27017/testDb");

// Fails:
MongoClient client = new MongoClient("mongodb://admin:admin@5e825c82.ngrok.io/testDb");

我想知道如何使用 ngrok 建立到 MongoDb 的连接。

MongoDB 使用 TCP 而不是 HTTP

尝试以下命令:

ngrok tcp 27017

(注意 tcp,而不是 http,我认为这是您使用的)


当您使用 TCP 时,出于某种原因需要执行几个额外的步骤,当您尝试上述命令时,ngrok 会提示您并告诉您需要执行的操作。

  1. https://dashboard.ngrok.com/get-started
  2. 注册一个 ngrok 帐户
  3. 运行 本地显示此页面上方框 3 中的命令。连接您的帐户(例如ngrok authtoken 123ABC456ETC

  1. 现在再次尝试该命令 (ngrok tcp 27017)