我正在开发一个应用程序(用Go/Golang编写,使用“正式”MongoDB驱动程序),它必须访问MongoDB和Cosmos/Azure (使用MongoDB API)中的MongoDB数据库。我使用Studio3T来帮助完成数据库任务,我的应用程序作为命令行实用工具运行,在iTerm中作为bash运行。
我能够访问MongoDB数据库--其中一个在我的Mac上本地运行,另两个在防火墙后面的公司服务器上(我的Mac几乎总是在公司VPN上运行)。这是在Azure的宇宙实例,一直在挑战连接。
我从Azure门户获得了必要的宇宙连接信息,并试图在Studio3T和我的应用程序中创建连接设置。起初,两者都不起作用,但当我在Studio3T中手动设置代理设置以使用常规代理服务器时,它就能够连接到Cosmos实例了。我的应用程序,另一方面,仍然不能连接,说服务器是未知的。
我在我的应用程序中尝试了多个连接字符串的排列--包括一个镜像Studio3T生成的连接字符串的排列--如下所示:
mongodb://<user>:<pw>@<host>:<port>/admin?ssl=true&replicaSet=<repSet>&readPreference=primary&maxIdleTimeMS=120000&connectTimeoutMS=10000&authSource=admin&authMechanism=SCRAM-SHA-1(括号中的项设置与在Studio3T中工作的值完全相同)
令人困惑的是,我的Mac被全局设置为使用相同的代理服务器,设置与我在Studio 3T中的设置完全相同,而启动我的应用程序的shell/bash环境将http_ proxy /https_proxy变量设置为完全相同的设置,但仍然无法工作。而且,我能够在Mac上访问各种基于Internet的外部资源,而且只有Azure中的这个特定的宇宙实例是不可访问的(即使这样,它也只能访问我的Go程序,而不是运行在同一台机器上并使用完全相同设置的Studio3T实例)。
这是一个经典的“说出神奇的词”的问题,这类事情让我希望我去了烹饪学校,而不是开始编写软件。
所以,我的问题是:
如果你能给我任何见解/建议/帮助,我们将不胜感激.
发布于 2021-12-15 19:43:02
代理地址如下所示
http://USER:PASSWORD@COMPANY.EXAMPLE.TLD:PORT
或者类似的东西
http://aiw1dak1:powalkmd1@my.internal.company.local:8571
这是您需要在mac计算机中设置的东西,以便能够通过代理进行连接,例如
export http_proxy = http://aiw1dak1:powalkmd1@my.internal.company.local:8571
更多信息在这里:https://www.serverlab.ca/tutorials/osx/administration-osx/configuring-a-network-proxy-for-osx/
这应该通过代理设置每个网络请求,包括MongoDB。
您还可以转到网络设置并配置网络的代理设置以自动发出请求,您还可以请求您的公司给您一个WPAD文件。
https://stackoverflow.com/questions/70368899
复制相似问题