我在 linux 服务器上运行不同的应用程序作为 docker 容器。我可以使用 SSL 访问 docker 容器。我使用的反向代理是 traefik
配置为代理子目录而不是子域。
这些是我的容器:
申请A - 可通过 https://abc.xyz/a
访问
申请 B - 可通过 https://abc.xyz/b
访问
从我的浏览器访问它们时,这两个应用程序都已启动并运行并正常工作。
现在我需要嵌入 申请 B 在 申请A .我知道我可以只使用容器的内部 IP(因为它们在同一个网络上),但是,嵌入式应用程序必须可以访问 申请A 以及我的本地浏览器 - 所以我需要使用面向公众的 IP/URL。
现在的问题是我根本无法访问 https://abc.xyz/b
来自 申请A .以下所有命令均在 内执行申请A docker 容器。
平工作:
$ ping abc.xyz
64 bytes from 150.150.150.150: seq=0 ttl=64 time=0.204 ms
所以 DNS 正在工作。
然而
wget
显示:$ wget https://abc.xyz/b
Connecting to abc.xyz (150.150.150.150)
(Nothing happens)
我根本无法弄清楚问题出在哪里。是否在
traefik
或者这是一个 docker 限制?
最佳答案
经过更多研究后,我发现它与 docker
无关。或 traefik
一点也不。主机 linux 启用了防火墙 (ufw
),它阻止了来自 docker 容器的请求,因为它没有正确配置。
我现在允许从容器访问并且它可以工作。
关于Docker:如何从容器内访问我的服务器的公共(public) IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56656049/