【问题标题】:Connecting to mongodb using mongoose and Fixie (Heroku add-on)使用 mongoose 和 Fixie(Heroku 插件)连接到 mongodb
【发布时间】:2017-07-02 22:24:57
【问题描述】:

我有一个托管在 Atlas MongoDB Cloud 集群上的 mongodb 数据库。我目前正在使用 mongoose 访问我的 node.js 应用程序中的数据库:

mongoose.connect("mongodb://user:pw@cluster0-shard-00-00-***.mongodb.net:***,cluster0-shard-00-01-***.mongodb.net:***,cluster0-shard-00-02-***.mongodb.net:***/admin?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin");

因为 Atlas MongoDB Cloud 有一个白名单,而 Heroku 不提供为我的应用程序获取固定 IP 地址的可能性,所以我使用Fixie add-on。基本上,Fixie 充当出站流量的代理。

这样,我可以通过 HTTP 请求资源,这些资源通过 Fixie 提供的固定 IP 地址进行隧道传输。但我需要的是使用 Fixie 的代理连接到 Atlas Cloud 集群,以便从数据库中检索和修改数据。

可以用猫鼬完成吗?

mongoose.connect 函数接受 option parameter,但我找不到任何关于通过代理建立连接的选项。

【问题讨论】:

    标签: node.js mongodb heroku mongoose proxy


    【解决方案1】:

    刚刚收到 Fixie 团队的回复:

    Fixie 是一个 http/https 代理,因此它不适用于 mongodb 连接所需的低级别 TCP 连接

    当我问到这种情况下使用 SOCKS 的可能性时,他们回答:

    看起来 mongoose 本身不支持 socks 代理,并且它不接受自定义套接字(这是 MySQL 和 Postgres 的 Node 数据库驱动程序支持它的方式)。

    显然,就我而言,没有办法通过 Fixie(Heroku 插件)提供的代理解决方案使用 mongoose 建立与 MongoDB Atlas 集群的连接。

    【讨论】:

    • 我处于同样的情况(Heroku + Node/Express + Mongoose + MongoDB Atlas)。我知道的两个当前选项是 1)允许 MongoDB Atlas 接受来自 0.0.0.0/0 的流量(所有 IP 地址),或 2)获得一个 Heroku Private Space,它有一个静态 IP 选项(需要他们的企业版,它谣言的起价 > 1000 美元/月)。看起来 Mongoose 的 node-mongodb-native/connection 驱动程序需要接受自定义套接字连接。
    • @ykorach 我必须将我的 mongo 网络 IP 列入白名单才能接受流量 0.0.0.0/0。由于这是一个沙盒应用程序,我真的不在乎。我将来可能会转移到 ec2 上的 aws 以获得静态 IP。
    • @drew578 如果您将 0.0.0.0/0 列入白名单,则您将其对整个互联网开放,因此使用 Fixie 获取静态 IP 毫无意义。我最终部署到 AWS 的 ec2 实例。
    • @ykorach Fixie 现在有另一个名为 Fixie Socks 的插件,它可以接受 TCP 流量。我只是想弄清楚如何实际使用它来连接我的 Mongo 实例。
    • @matrix4use 不——我们花了很多时间试图弄清楚这一点,但我们没有运气。我唯一能开始工作的就是本文中的最后一个示例:blog.apify.com/…。但是,您需要使用常规的 Fixie,而不是 Fixie Socks 才能使用。
    猜你喜欢
    • 2020-08-06
    • 2021-06-19
    • 2018-01-12
    • 2015-01-28
    • 2019-03-14
    • 2020-02-22
    • 2020-07-25
    • 2017-09-09
    • 2017-03-25
    相关资源
    最近更新 更多