我正在使用当前设置运行 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 通过容器网络访问它。