我使用 ubuntu 22.04 作为 docker 主机。在此主机上,我部署了一个带有 TLS 终止的 nginx 反向代理。我将在该主机上部署多个(比如说 3 个)docker compose 部署,每个部署都会有一个在 80 上监听的 Web 应用程序。简单的解决方案是使用
# in my docker compose for different services:
127.0.0.1:8081:80 # in the first deployment
...
127.0.0.1:8082:80 # in the second deployment
...
127.0.0.1:8083:80 # in the third deployment
并相应地配置 nginx 服务器块。
proxy_pass http://127.0.0.1:8081;
etc
我的问题是除了上面的解决方案之外,我还可以这样做可以实现使用 127.0.0.0/8 子网上的 127.0.0.x 地址,如下所示:
(此外,我可以简单地尝试这个作为 POC,而不是在这里提问,我的问题是使用这种不太传统的方法而不是更主流的方法可能会有什么缺点或隐藏的陷阱?我的意思是完整的 127.0.0.0/8 子网是否保证在任何 Linux 上工作,是否也与 docker 容器端口映射兼容,等等)
# in my docker compose for different services:
127.0.0.1:8080:80 # in the first deployment
...
127.0.0.2:8080:80 # in the second deployment
...
127.0.0.3:8080:80 # in the third deployment
并相应地配置 nginx 服务器块。
# in my nginx.conf for different server blocks
proxy_pass http://127.0.0.1:8080;
...
proxy_pass http://127.0.0.2:8080;
答案1
是的,你可以,如果你想的话,对整个 /8 子网都可以
答案2
是的,你可以这样做,但是如果你将来有路由要求,那将会非常困难,因为在“前端”站点上运行的所有内容都运行在一个 IP 上。