相关疑难解决方法(0)

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

我有一个在 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 vs Fixie Socks)时,它不起作用。

proxy heroku mongoose mongodb node.js

8
推荐指数
1
解决办法
832
查看次数

Node.js使用Mongoose对MongoDB进行SSH隧道连接

我有两个Mongo DB.一个用于我的开发环境,一个用于生产,如我在Robomongo设置中所见:

两个Mongo DB

生产数据库通过SSH隧道连接到我的数字海洋虚拟服务器,如此处所示(具体情况已经明显改变).连接到我的生产网站/从我的生产网站连接时此设置正常:

SSH隧道设置

我现在正在开发一个不同/相关的项目,需要将我的本地机器连接到我的生产数据库,所以我假设我需要使用像tunnel-ssh这样的东西来完成它.我已经按照这个答案作为例子,但是我要么正在Error: (SSH) Channel open failure: open failed连接到我的Dev db(当我使用27017作为我的dstHost/dstPort/localPort时).我一定在考虑这个错误,或者我对我的配置感到愚蠢.我是公认的Mongo/Mongoose新手,所以两者都是可能的.有什么建议?

var fs = require("fs");
var mongoose = require('mongoose');
var tunnel = require('tunnel-ssh');

//===== db connection =====

var config = {
    username:'my.username',
    host:'my.ip.address',
    agent : process.env.SSH_AUTH_SOCK,
    privateKey:require('fs').readFileSync('/Users/myusername/.ssh/id_rsa'),
    port:22,
    dstHost:'mongodb://localhost:27000/mydbname',
    dstPort:27000,
    localHost:'127.0.0.1',
    password:'mypassword',
    localPort: 27000
};

var server = tunnel(config, function (error, server) {
    if(error){
        console.log("SSH connection error: " + error);
    }
    mongoose.connect('mongodb://localhost:27000/mydbname');

    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'DB connection …
Run Code Online (Sandbox Code Playgroud)

ssh mongoose mongodb node.js

5
推荐指数
3
解决办法
8152
查看次数

Node.js通过ssh连接

我有一个node.js服务器可以工作但需要为ssh连接设置:

var mysql = require('mysql')
var io = require('socket.io').listen(3000)
var db = mysql.createConnection({

    host: 'hostname',
    user: 'username',
    password: '12345',
    database: '12345',
    port: 3306,
    socket: '/var/run/mysqld/mysqld.sock' 
})

db.connect(function(err){
    if (err) console.log(err)
})
Run Code Online (Sandbox Code Playgroud)

我知道有ssh npm库用于此目的,但可用的选项(ssh2,node-sshclient等)似乎处理可能使事情过于复杂的相当复杂的功能.我正在寻找通过ssh连接到我的mysql数据库的最简单方法.实现这一目标的最佳方法是什么?

mysql ssh node.js

4
推荐指数
1
解决办法
8089
查看次数

标签 统计

node.js ×3

mongodb ×2

mongoose ×2

ssh ×2

heroku ×1

mysql ×1

proxy ×1