我有三个tomcat容器运行在不同的网桥网络上,具有不同的子网和网关,例如:
container1 172.16.0.1 bridge1
container2 192.168.0.1 bridge2
container3 192.168.10.1 bridge3这些容器运行在不同的端口上,比如8081、8082、8083
有没有办法在同一个8081中运行所有三个容器?如果可能的话,我怎么在docker里做呢?
发布于 2021-03-18 12:00:28
您需要设置一个reverse proxy。顾名思义,这是一个与标准代理工作方式相反的代理。标准代理从内部网络获取请求并从外部网络(internet)提供服务,反向代理从外部网络获取请求并通过从内部网络获取信息来提供服务。
有多个可用作反向代理的应用程序,但使用最多的是:
主要作为load-balancer
的
大多数reveres代理可以作为另一个容器运行在您的docker上。其中一些工具很容易上手,因为有大量的教程。
反向代理不仅仅是公开单个端口并将流量转发到后端端口。反向代理可以管理和分发负载(负载平衡),可以将从客户端到达的URI改变为后端能够理解的URI (URL重写),可以改变来自后端的响应(内容重写)等。
反向HTTP/HTTP流量
在您的示例中,假设您有HTTP服务,则需要执行以下操作来设置反向代理:
X-Forwarding-*标志和/或URL重写和内容,并将端口80发布为8080 (如果您在主机上公开容器,则您的8081将被占用)。反向TCP/UDP流量
如果您有非HTTP服务(原始TCP或UDP服务),则可以使用HAProxy。除了配置步骤#2之外,步骤是相同的。由于流量的非HTTP性质,配置是不同的,您可以在this SO中找到示例
https://stackoverflow.com/questions/66684072
复制相似问题