我管理一个小型集群,其中运行着几种不同的服务,包括作为容器的 grafana 监控、作为容器的云文件存储 (nextcloud) 和裸机上的 FreeIPA 服务器。我想将云存储服务置于反向代理之后 (https://hub.docker.com/r/jwilder/nginx-proxy) 来启用 https,但我不能为此使用端口 80,因为它已被 IPA 服务器使用。
我知道可以为容器分配一个公共 IP 地址(我以前用过这个方法https://blog.carroarmato0.be/2020/05/08/exposing-podman-container-on-the-network/),因此我很好奇是否可以为反向代理分配一个公共 IP,并让代理引用云存储容器。但如果云存储容器位于常规桥接网络后面,我不确定是否可以让反向代理将流量发送到云存储容器。但我也不认为我可以为云存储容器分配相同的 IP。
在设置 IPA 服务器时,我经常听到有人说,尝试将 LDAP 服务器托管在运行其他服务的机器上是荒谬的,但我真的没有其他选择。如果这是我们组织的主要 LDAP 服务器,那确实如此,但这是一个用于研究的集群,这意味着证明整个专用服务器只是为了处理大约 10 个用户的登录是合理的,这太荒谬了。
也许解决方案是将 IPA 服务器放在具有自己 IP 地址的容器中(我以前尝试过,但一直没成功),允许反向代理使用普通机器上的端口 80。或者也许 VM 是更好的解决方案。
但我的主要问题是,我是否可以为某种桥接网络分配一个 IP 地址,以便让我在与机器上硬件 NIC 的 IP 分开的公共 IP 地址上运行反向代理和其他容器?
答案1
好的,我想我已经找到解决方案了。
事实证明,我可以将 nginx 反向代理容器托管在端口 80 以外的其他端口上,在我的情况下是 8894,这样对云存储容器 URL 的任何请求在端口 8894 上最终会进入云存储容器。因此我们有以下设置:
FreeIPA 服务在端口 80 上运行,URL 为 foo1.bar.com
Nginx 反向代理在端口 8894 上运行
使用 foo2.bar.com 下的虚拟主机运行的云存储容器
因此,现在对普通 foo2.bar.com 的请求仍然会重定向到 foo1.bar.com,但对 foo2.bar.com:8894 的请求会重定向到云存储容器
只需将端口绑定从 更改为 即可实现此-p 80:80
目的-p 8994:80