如何使用 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