要antecipate的問題:我需要得到SSL支持在Heroku上,以建立使用SSL Heroku的和阿特拉斯的MongoDB雲之間的連接? (TSL/SSL連接是requirement來訪問Atlas MongoDB雲服務)。連接的Heroku應用到阿特拉斯的MongoDB雲服務
我想我的Heroku應用程序,寫在node.js中,連接到阿特拉斯的MongoDB雲託管集羣。
我現在的數據庫是在MLAB託管(作爲Heroku的附加),以及MongoDB的URI用於訪問通過貓鼬羣集(使用XXX省略信息保密):
MONGODB_URI="mongodb://xxx:[email protected]:23266,xxx-a1.mlab.com:xxx/xxx?replicaSet=rs-xxx"
現在,我已經遷移從MLAB我的數據阿特拉斯MongoDB的雲,我目前訪問使用URI集羣:
MONGODB_URI="mongodb://xxx:[email protected]:xxx,cluster0-shard-xxx.mongodb.net:xxx,cluster0-shard-xxx.mongodb.net:xxx/xxx?replicaSet=xxx&ssl=true&authSource=admin"
當我運行應用程序的Heroku本地在我的機器,我可以沒有問題訪問數據庫。我也可以使用mongo shell連接到羣集。
但是,在Heroku中運行應用程序時,無法建立連接。在瀏覽器JS控制檯中,我收到503服務不可用消息。在heroku中,我收到錯誤:
no primary found in replica set
我知道Atlas MongoDB Cloud需要SSL連接,與mLab不同。在我的本地機器中,我想使用自簽名證書來成功連接到羣集。
我的問題是:我是否需要在Heroku中獲得SSL支持才能訪問建立Heroku和MongoDB Atlas之間的安全連接?或者Heroku中的SSL支持只需要客戶端/ Heroku安全連接?
尼克拉斯,你是對的!問題在於白名單訪問。 關於SSL問題,我想你是對的,因爲我從Herkou支持得到了以下回復:「(...)使用SSL的應用程序是完全獨立於mongo連接,所以我不認爲它會這是一個問題。「 –
**更新([source](https://kb.heroku.com/i-need-to-whitelist-heroku-dynos-what-are-ip-address-ranges-in-use-at-heroku)) :**作爲Heroku dynos使用AWS EC2實例的IP範圍子集,可以添加[AWS IP範圍](http://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges .html)添加到Cloud Atlas的白名單,或者獲取附加組件以提供靜態出站IP地址,或通過TLS使用安全通信。 –
太棒了!謝謝你回報,布魯諾。 :) –