我有一个docker群运行2个python flask服务,每个服务运行在不同的区域,比如A和B。区域A也运行Nginx,这是访问服务的主要入口点。有一个MongoDB数据库运行在区域A,在docker群之外。运行在区域A的python服务可以连接到运行在区域A的MongoDB。但是服务B不能从区域B连接到MongoDB。我的问题是我可以配置Nginx来代理服务B连接到MongoDB吗?
服务的Nginx位置配置为:
location /a {
proxy_pass https://a-service:5000/; # running in region A
}
location /b {
proxy_pass https://b-service:5001/; # running in region B
}
其中a-service和b-service是Docker群容器名称。
我看到了关于如何在Nginx后面设置MongoDB的帖子,但我的情况正好相反--从 Docker 群内部通过群内部的Nginx访问外部MongoDB。
(How to setup MongoDB behind Nginx Reverse Proxy)
我知道我需要在nginx. conf中包含这样的内容:
stream {
server {
listen 27020;
proxy_connect_timeout 5s;
proxy_timeout 20s;
proxy_pass mongodb_host;
}
upstream mongodb_host{
server https://5.150.225.25:27017;
}
}
然而,mongodb主机(https://5.150.225.25)的位置是docker swarm之外的另一个虚拟机,而不是本地IP。
nginx: [emerg] invalid host in upstream "https://5.150.225.25:27017" in nginx.conf
1条答案
按热度按时间mzsu5hc01#
你应该搬走
网址://
从您的proxy_pass. Mongo正在等待TCP连接,而不是http.