Docker Swarm-centOS-nginx

Docker Swarm-centOS-nginx

我正在使用当前设置运行 docker swarm

swarm.abc.com(假设为 192.168.1.1)- 主节点 node1.abc.com - 子节点 node2.abc.com - 子节点

我在端口 888 上的 Swarm 中运行一个容器。如果我连接到 192.168.1.1:888 - 我可以访问它 - 这很好。

我在 swarm.abc.com 上也有 nginx。在 nginx 配置中我有

server {
    listen 80;
    server_name my.domain.com;

    location / {
        proxy_pass http://localhost:888; #which should redirect me to 192.168.1.1
    }
}

然而,当我连接到我的域名.com我遇到连接超时问题。有什么帮助吗?

干杯

答案1

网络在 docker 中是命名空间,该命名空间的一部分是环回设备,又名 127.0.0.1 或 localhost。这意味着 nginx 容器内的 localhost 仅指向 nginx 容器的网络,而不是外部主机。

对于容器到容器的网络,请将容器放在同一个用户创建的 docker 网络上(默认情况下,compose 会为您执行此操作)。然后,您可以通过容器名称、容器 ID、服务名称或网络别名连接到其他容器。因此,如果您的容器名称是app-x,并且容器内部正在监听端口 999,并且您有888:999端口转发,那么 nginx 配置将如下所示:

proxy_pass http://app-x:999;

请注意,无需发布或公开 app-x 的端口,以便 nginx 通过容器网络访问它。

相关内容