用于从Docker Swarm连接到外部mongodb的Nginx配置

mznpcxlj  于 2023-02-11  发布在  Nginx
关注(0)|答案(1)|浏览(145)

我有一个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
mzsu5hc0

mzsu5hc01#

你应该搬走
网址://
从您的proxy_pass. Mongo正在等待TCP连接,而不是http.

相关问题