如何从代理后面的shell连接Mongolab?

时间:2016-03-16 11:41:16

标签: mongodb shell heroku amazon-s3 proxy

我正在尝试从我的mongo shell连接Mongolab URI及其显示

    MongoDB shell version: 3.1.7
    connecting to: ds015859.mlab.com:15859/instabuy
    2016-03-16T16:49:15.581+0530 W NETWORK  [thread1]
    Failed to connect to 54.224.218.3:15859, reason: errno:10061
    No connection could be made because the target machine actively refused   
    2016-03-16T16:49:15.581+0530 E QUERY    [thread1] Error: couldn't   connect to server ds015859.mlab.com:15859, connection attempt failed :
    connect@src/mongo/shell/mongo.js:216:14 

我在我大学的http网络代理后面,但我已经设置了HTTP_PROXY变量。我已经通过设置代理变量连接到heroku。但Mongolab,Mailchimp和AWS s3等其他服务拒绝连接......我应该怎么做,请帮忙。

1 个答案:

答案 0 :(得分:0)

MongoDb等不同服务使用自定义命令协议与客户端进行通信。例如,在MongoDb中,他们使用二进制MongoDB Wire Protocol。 HTTP代理只能处理一组有限的协议,大多数代理配置为仅代理HTTP文本协议。所以,你不能通过这样的代理连接到mongo服务器,除非你有mongo协议的HTTP包装器。

如果您想通过类似代理的方式间接连接到任何协议的任何服务,那么您必须使用隧道。隧道可以在IP:端口级别(SSH隧道,作为示例)工作,或者通过VPN(例如,OpenVPN隧道)建立。在这两种情况下,您首先使用"代理"建立隧道。服务器,然后将mongo连接重定向到该隧道。