mat*_*use 8 proxy heroku mongoose mongodb node.js
我有一个在 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));
Run Code Online (Sandbox Code Playgroud)
我想对 Heroku 应用程序使用 Atlas MongoDB Cloud 的白名单,而不是向所有人开放访问。Heroku 没有固定的 IP 地址,但通过名为Fixie Socks的附加组件使它们成为可能,该附加组件充当出站流量的代理。
如何使用此附加组件来使连接正常工作?文档给出了几个关于如何连接其他服务和数据库的示例,但在 mongodb 上没有帮助。所有示例都使用 FIXIE_SOCKS_HOST,其中包含 SOCKSV5 代理 URL、用户、密码和端口,但我不知道如何将它与 mongoose.connect 方法结合使用。
我尝试了 Fixie Socks 但无法让它工作。但按照本文档成功使用 Quota Guard 的静态 IP 地址连接到 Mongodb Atlas 数据库:
技巧是使用 use mongodb atlas 的连接字符串而不使用 +srv 命令。为此,请使用较旧的驱动程序版本,它将为您提供一个包含 3 个副本服务器(每个服务器具有 27017 端口)的连接字符串。然后在 Quota Guard 仪表板上创建 3 个隧道。
确保下载 gqtunnel 包并将其解压到应用程序的根文件夹中。然后你只需将 bin/qgtunnel 添加到你的 procfile 中。
示例: web: bin/qgtunnel your-application 你的参数
归档时间: |
|
查看次数: |
832 次 |
最近记录: |