我遇到了一个有趣的问题,我试着自己解决和调查。我想我已经可以用指尖感觉到解决方案了,但我只是无法抓住它。。。
任何帮助都是很好的,而且会很感激。
共同码头网络:
"120253b9613d95bb4d540abe3676c7d309cdc9ac531cc81de9acd548737b829e":{“名称”:"youtrack","EndpointID":"0ff42cc51535663df36a47f79f41f4df5bdb229c411b2aa0200fffc0c3e7b824","MacAddress":"02:42:ac:13:00:03","IPv4Address":"172.19.0.3/16","IPv6Address":“},"639a75318859f2b60c93585a77d259f919f307a3f0653fd75cbcc8cad932e3ac":{ "Name":"proxy","EndpointID":"7923e5fbe27e0b2a4ff3b8f765a5a2fb34b3b97c10f2545fb875facd04d71fdb","MacAddress":"02:42:ac:13:00:02","IPv4Address":"172.19.0.2/16","IPv6Address":“},MacAddress{ "Name":"gitlab","EndpointID":"84b454e38b9178f5f55cefb310f839de1abcd2ed0e7b58018e9522e08dfbff01","MacAddress":"02:42:ac:13:00:04","IPv4Address":"172.19.0.4/16","IPv6Address":“}”
当通过代理从外部世界通过容器-one.company.com和容器-two.company.com进行通信时,没有任何问题。一切都如期而至。
现在的问题是,这两个容器通过https进行集成。(VCS集成)在您跟踪(即问题管理)和gitlab (代码git存储库)之间。主要的集成属性是服务器的URL。因此,contain-one.company.com的设置包括容器-two.company.com域,作为https的集成点。容器-two.company.com的设置包括用于VCS集成的容器-one.company.com url。
我已经检查了这两个域是否解析到服务器IP,而不是Docker的内部IP。
当我测试并设置一个配置相同但指向服务器的反向代理时。因此,流程是SERVER1,它包含所有3个容器,而SERVER2只具有两个域的nginx容器,但是它重定向到SERVER1代理。因此,唯一不同的是,这两个容器解析的IP不是它们自己的服务器,而是一些不同的服务器。
这就是为什么我认为docker处理网络呼叫的方式存在问题,它试图“优化”两个调用,以通过内部docker的网络,而不是通过代理,就像所有外部调用一样。
我可以提到,Nginx的配置实际上只是基于域的ssl终端和映射。如果域容器-one.company.com代理传递给您跟踪容器和它的端口,如果容器-two.company.com代理传递给gitlab cotn流变器及其内部端口。全是普通的http,没有并发症。
注意:我已经尝试过这个解决方案:
ports:
- "IP:443:443"和
-附加-主机属性
同样的行为。
UPDATE1:为了获得更多的澄清,调整并提供了两个图表,并提供了附加的解释和行为。
这是当前的设置和所需的设置。正如您所看到的,当试图使用FQDN在同一主机上使用FQDN从YOUTRACK容器到GITLAB one进行VCS集成时,它都失败了,表示它没有映射/指向一个有效的存储库url。
但是,如果将两个域移动到不同的服务器,则是顶级代理(图2,它是传入的)。它实际上位于不同的服务器上,容器指向该容器(我甚至在不同的主机上使用了add-host属性,甚至连虚拟代理的有效域都没有使用)。然后就通过了。

同时,这种配置(将FQDN从同一台主机移动到另一台主机,并将其PROXYing返回到原始主机,而不更改任何原始代理配置),工作起来就像一种魅力。

发布于 2022-07-25 08:20:31
TLDR:问题是UFW没有让443:443完全具有约束力,所以我不得不添加:
sudo ufw allow 443
sudo ufw reload注:症状如下:
对于端口配置:
- "IP:443:443"然后起作用了。
进行了完全调试,使用:
docker run --rm -it --network container:gitlab nicolaka/netshoot:latest这使得所有的telnet,ping,curl测试都能发现,即使是tho ping也没有通过端口443上的连接。
https://stackoverflow.com/questions/73101198
复制相似问题