为了解决这个问题,我是否需要在Heroku 上获得 SSL 支持才能使用SSL 在 Heroku 和 Atlas MongoDBCloud 之间建立连接?(访问Atlas MongoDB
Cloud服务需要 TSL / SSL连接)。
我试图将用node.js编写的Heroku应用程序连接到Atlas MongoDB Cloud托管的集群。
我当前的数据库托管在mLab(作为Heroku插件)上,用于通过猫鼬访问集群的MongoDB URI是(使用 xxx 省略机密信息):
MONGODB_URI="mongodb://xxx:xxx@xxx-a0.mlab.com:23266,xxx-a1.mlab.com:xxx/xxx?replicaSet=rs-xxx"
现在,我已经将数据从mLab迁移到Atlas MongoDB Cloud,现在我正在使用URI访问集群:
MONGODB_URI="mongodb://xxx:xxx@cluster0-shard-xxx.mongodb.net:xxx,cluster0-shard-xxx.mongodb.net:xxx,cluster0-shard-xxx.mongodb.net:xxx/xxx?replicaSet=xxx&ssl=true&authSource=admin"
在计算机上本地运行Heroku App时,我可以毫无问题地访问数据库。我还可以使用mongo shell连接到集群。
但是,在Heroku中运行该应用程序时,无法建立连接。在浏览器JS控制台中,我收到503服务不可用的消息。在heroku中,我得到了错误:
no primary found in replica set
我知道Atlas MongoDB Cloud需要SSL连接,这与mLab不同。在本地计算机中,我假设正在使用自签名证书来成功连接到群集。
我的问题是:我是否需要在Heroku中获得SSL支持才能访问Heroku和MongoDB Atlas之间的安全连接?还是仅在客户端/
Heroku安全连接中需要Heroku中的SSL支持?
免责声明: 我没有使用Heroku或MongoDB Atlas,但是我正在研究它们。
根据我发现的Github问题,如果未在MongoDBAtlas中将服务器IP地址列入白名单,则会收到该错误消息。
阅读MongoDB Atlas文档时,我看到将其与Herokudynos结合使用的唯一方法是将0.0.0.0/0
(即所有地址)添加到MongoDBAtlas白名单中。
尝试一下,请报告是否可以实例化连接。
尝试回答SSL问题,尽管我不太确定,但您不需要根据我所读的内容在Heroku上启用它。
如果MongoDB服务器执行证书验证,则用于连接到它的Node.js代码必须类似于以下内容(摘自Node.js驱动程序文档):
var MongoClient = require('mongodb').MongoClient,
f = require('util').format,
fs = require('fs');
// Read the certificates
var ca = [fs.readFileSync(__dirname + "/ssl/ca.pem")];
var cert = fs.readFileSync(__dirname + "/ssl/client.pem");
var key = fs.readFileSync(__dirname + "/ssl/client.pem");
// Connect validating the returned certificates from the server
MongoClient.connect("mongodb://localhost:27017/test?ssl=true", {
server: {
sslValidate:true
, sslCA:ca
, sslKey:key
, sslCert:cert
, sslPass:'10gen'
}
}, function(err, db) {
db.close();
});
如果MongoDB服务器未检查任何SSL证书,则可以简单地使用如下代码(也来自Node.js驱动程序文档):
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/test?ssl=true", function(err, db) {
db.close();
});
鉴于阿特拉斯文档包含了连接到它从Node.js的下面的示例代码,我认为你 不是 要在Heroku上启用SSL:
var MongoClient = require('mongodb').MongoClient;
var uri = "mongodb://kay:myRealPassword@mycluster0-shard-00-00-wpeiv.mongodb.net:27017,mycluster0-shard-00-01-wpeiv.mongodb.net:27017,mycluster0-shard-00-02-wpeiv.mongodb.net:27017/admin?ssl=true&replicaSet=Mycluster0-shard-0&authSource=admin";
MongoClient.connect(uri, function(err, db) {
db.close();
});
我正试图通过AnyLogic 7.3.6连接到本地SQL数据库。我安装了SQL Server 2016 Developer,数据库采用混合身份验证(Windows) 网络错误IOException:连接被拒绝:连接 拒绝连接:连接 我的主机名为。我曾尝试将登录名和密码留空,希望Windows身份验证,并尝试将SQL用户(Test,Test)添加到服务器,两者的结果相同。我正在使用JDBC驱动程序,
单靠它是行不通的,因为我认为会调用方法,所以DAO不是由Spring管理的。下面的方法确实起作用,但是如果我必须将上下文配置复制并粘贴到每个方法中,那么看起来会很混乱 这段代码在我的服务类中。有没有更优雅的方法来确保我的DAO被正确初始化,而不是复制和粘贴那个方法的前4行到每个服务方法中?
我已经在Ubuntu14.04上安装并启动了nginx服务器。我的目标是使用HLS(http live streaming)流媒体视频(live)。我遵循了本教程https://www.vultr.com/docs/setup-nginx-on-ubuntu-to-stream-live-hls-video,它推荐使用OBS-Studio。然而,我不知道如何从OBS-STUDIO流到Nginx,然
我使用Sabre DAV在PHP中实现了一个webdav目录,用于我的网站(Application Server Webinterface)。 对于这个网站,我现在使用C#编写了一个TCP套接字,它运行在另一个服务器上(实际上它在同一个数据中心,但从理论上讲,它在另一个半球上)。 我想连接我的网络Dav到我的套接字的FTP服务器,这意味着文件监听,下载,上传。用户只能连接到一个服务。想象一下,我的
我的connect调用的结果始终是10061:连接被拒绝。 如果我将服务器代码更改为绑定到::(或者将空主机传递给getaddrinfo()(同样的事情)),并将客户机代码更改为在getaddrinfo()调用中指定空主机,那么V4客户机可以很好地连接。 谁能解释一下为什么?我没有读到任何东西,如果我们想要双套接字行为,我们必须指定一个空主机(因此使用INADDR_ANY)。这不可能是一个要求,因
问题内容: 我想寻求有关WCF服务的正确端点配置的指导,以使Flash应用能够使用它。 谢谢,基思·拉尔 问题答案: 好了,您应该从webHttpBinding开始,并且自然也需要应用webHttp行为。然后,您只需要弄清楚要使用的序列化格式。Flash可以执行JSON或XML,因此您需要确定自己喜欢哪种,然后设置适用于您的操作的WebInvokeAttribute的ReqeustFormat /