我创建了 docker swarm,在 swarm 内部有一个网站,在外部发布端口 8080。我想使用在端口 80 上运行在 swarm 外部的 Nginx 来使用该端口,这将执行服务器名称解析和托管静态文件。
问题是,swarm 使用 iptables 自动将 8080 端口发布到互联网,我不知道是否可以只允许本地 nginx 实例使用它?因为目前用户可以通过 80 和 8080 端口访问站点,第二个端口坏了(没有图像)。
尝试玩ufw,但它不起作用。手动更改 iptables 也将是一场噩梦,因为每次更新后我都必须在每个 swarm 节点上都这样做。有什么解决办法吗?
编辑:我不能对 swarm 和 swarm 外的 nginx 使用相同的网络,因为覆盖网络与普通的单主机容器不兼容。从理论上讲,我可以将 nginx 放到 swarm 中,但我更喜欢将它分开,放在包含静态文件的同一主机上。