Minecraft 服务器与 apache 共享端口

Minecraft 服务器与 apache 共享端口

你好,我的电脑里有一个 Minecraft 服务器。当我们在同一个局域网中时,我可以和朋友一起玩。但我想将它发布到互联网上,这样我的朋友就可以在任何地方和我一起玩。

我已经有一个互联网 IP(我们称之为12.12.12.12)并且我购买了一个域名(我们称之为example.com)。

问题是我的电脑位于防火墙后面,我无法控制。我只能使用端口 80 来为服务器提供服务,而我在端口 80 上已经有一台 Apache 服务器。

我尝试使用 apache vhost 反向代理,但不幸的是 minecraft 不使用 http,所以它无法工作。

我想到了一个想法,重定向minecraft.example.com:8012.12.12.12:25565(minecraft 服务器)和www.example.com:8012.12.12.12:8000apache 服务器)。我该怎么做?


我的电脑是ubuntu18.04

答案1

您无法使用非 HTTP/非 TLS 协议执行此操作,因为无法确定客户端尝试使用的域名。请求的域名带有里面HTTP 请求中或者 TLS 握手中。

(你可以如果您有可用的 HTTPS 端口 443,并且 Minecraft 使用 TLS 进行自己的通信,则可以轻松实现这一点……但不幸的是它没有。)

剩下的一个选择是使用风俗“反向代理”程序,它根据初始数据包转发连接 - 例如,如果客户端的第一个数据以GET或另一个 HTTP 动词开头,则整个连接将转发到 Apache;否则将转发到 Minecraft。

(也许可以使用专门的负载平衡软件(例如 HAproxy)来构建它?但从头开始编写程序可能更容易...此外,该程序需要在路由器上运行,以便能够保留真实的客户端 IP 地址。)

相关内容