如何使用 Fixie Socks(Heroku 插件)通过 mongoose 连接到 mongodb

Posted

技术标签:

【中文标题】如何使用 Fixie Socks(Heroku 插件)通过 mongoose 连接到 mongodb【英文标题】:How to use Fixie Socks (Heroku add-on) to connect to mongodb via mongoose 【发布时间】:2020-08-06 03:36:26 【问题描述】:

我有一个在 heroku 上托管的 node.js express api。它通过mongoose连接到mongodb atlas如下

mongoose.connect(
`mongodb+srv://$process.env.MONGO_USER:$process.env.MONGO_PWD@$process.env.MONGO_HOST/$process.env.MONGO_DEFAULT_DB?retryWrites=true`, 
  useNewUrlParser: true,
  autoReconnect: true,
  keepAlive: 300000,
  connectTimeoutMS: 300000,
  socketTimeoutMS: 300000

)
.then(result => 
  console.log('Connected and listening to requests!');
  app.listen(process.env.PORT || 3000);
.catch(err => console.log(err));

我想为 Heroku 应用程序使用 Atlas MongoDB Cloud 的白名单,而不是向所有人开放访问权限。 Heroku 没有固定 IP 地址,但可以通过名为 Fixie Socks 的插件实现它们,该插件充当出站流量的代理。

如何使用此插件来使连接正常工作? The documentation 给出了几个如何连接其他服务和数据库的例子,但是对 mongodb 没有帮助。所有示例都使用 FIXIE_SOCKS_HOST ,其中包含 SOCKSV5 代理 URL、用户、通行证和端口,但我不知道如何将它与 mongoose.connect 方法结合使用。

这个问题一直是asked before,但是当使用不同的附加组件(Fixie vs Fixie Socks)时,它不起作用。

【问题讨论】:

您找到解决问题的方法了吗? 【参考方案1】:

我尝试了 Fixie Socks,但无法正常工作。但是按照此文档成功地使用 Quota Guard 的静态 IP 地址连接到 Mongodb Atlas 数据库:

https://support.quotaguard.com/support/solutions/articles/12000066411-how-to-connect-to-mongodb-using-quotaguard

诀窍是使用 mongodb atlas 的连接字符串而不使用 +srv 命令。为此,请使用较旧的驱动程序版本,它将为您提供一个包含 3 个副本服务器(每个都有 27017 端口)的连接字符串。然后在 Quota Guard 仪表板上创建 3 个隧道。

确保下载 gqtunnel 包并将其解压缩到应用的根文件夹中。然后您只需将 bin/qgtunnel 添加到您的 procfile。

示例: web: bin/qgtunnel your-application 你的参数

【讨论】:

以上是关于如何使用 Fixie Socks(Heroku 插件)通过 mongoose 连接到 mongodb的主要内容,如果未能解决你的问题,请参考以下文章

使用mongoose和Fixie(Heroku附加组件)连接到mongodb

在 Heroku 中使用静态 IP 来托管 Discord 机器人

Heroku 替代方案

Heroku 上 Parse 服务器的静态 IP

如何正确认识socks5代理ip

如何将 SOCKS 与 HtmlUnit 一起使用?