通过子域名重定向(nat?)到docker

通过子域名重定向(nat?)到docker

我在 Linux 机器上运行了多个 docker 应用程序(Minecraft 服务器、Web 服务器、数据库、unify webkey 等)。我们把这台机器称为 example.com。对 example.com 的任何调用都将被 Linux 机器拦截。有没有办法将其子域重定向到在其上运行的不同 docker 实例,例如将 mincraft1.example.com goo 重定向到 Minecraft docker1,将 unify.example.com goo 重定向到 unify docker。这无需映射 Linux 机器本地主机上的端口。

我使用 nginx 管理 HTTP 请求,但您必须指定要使用的每个端口。我想一次重定向所有端口和协议。从技术上讲,将 docker 的 IP 映射到子域。

这可能吗?我该怎么做?

答案1

我使用 nginx 管理 HTTP 请求,但您必须指定要使用的每个端口。我想一次重定向所有端口和协议。从技术上讲,将 docker 的 IP 映射到子域。

HTTP(S) 在标头中包含一个主机名,以明确允许这种类型的虚拟托管。

然而其他协议则不然。

NAT 和端口转发发生在 TCP/IP 或 UDP 数据包上,这些数据包不包含任何有关域的信息。域名由客户端系统解析,然后客户端系统将使用数据包中解析的 IP 来寻址它们。

因此,您无法做您想做的事情,除非您的协议支持主机名字段,或者您有多个 IP(每个子域一个)。

相关内容