基于子域将非HTTP流量重定向到端口

mil*_*non 5 apache subdomain port minecraft

我正在努力使我的两个Minecraft服务器更容易访问.我尝试了一些解决方案,但到目前为止,没有一个有效地工作.

我有一个正常的vanilla Minecraft服务器在mysite.com:25560上收听,一个Tekkit Minecraft服务器在mysite.com:25570上收听.也就是说,两台Minecraft服务器都在同一台机器上运行.当用户使用指定的端口直接连接到服务器时,它们可以正常工作.

vanilla服务器最初是在标准的Minecraft端口mysite.com:25565上收听的.我已经改变了所以我可以允许Apache在mysite.com:25565上听,并适当地重定向流量,但到目前为止还没有.

我希望能够做的是将所有发送到mine.mysite.com的请求重定向到mysite.com:25560,并将发送到tekkit.mysite.com的所有请求重定向到mysite.com:25570.我知道DNS本身无法管理此重新路由,因为DNS只处理域名和IP地址.

根据朋友的建议,我的最新尝试是重新配置Apache,正如我之前所说,侦听端口25565并将流量代理到正确的端口.这是我的apache2.conf的一部分:

Listen 25565

NameVirtualHost *:25565

<VirtualHost *:25565>
    ServerName tekkit.mysite.com
    ServerAlias www.mysite.com
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPreservehost On
#   ProxyPass / www.mysite.com:25570/
    ProxyPassReverse / mysite.com:25570/
</VirtualHost>

<VirtualHost *:25565>
    ServerName mine.mysite.com
    ServerAlias www.mysite.com
    ProxyPreserveHost On
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
#   ProxyPass / mysite.com:25560/
    ProxyPassReverse / mysite.com:25560/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

使用ProxyPass注释掉的行导致Apache以错误开始,ProxyPass URL必须是绝对的!

为了看看我是否可以使它正常工作,我尝试在相应的位置替换http://www.mysite.com:25560/60,而Apache确实启动时没有任何错误,用户无法连接到服务器.我相信这是因为Minecraft服务器不会将HTTP请求重定向到服务器连接,无论哪种协议.

这让我相信Apache在处理非HTTP请求时没有帮助.如果我弄错了,我怎样才能让Apache正确地将子域流量重定向到端口?否则,没有Apache可以建议一种方法吗?我可以访问所有标准的Linux/Ubuntu实用程序.我一直在寻找相当长的一段时间没有进展.

谢谢!

mon*_*jbl 0

我相信 iptables 会为你做这件事,假设你在 Linux 上:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25565 -j REDIRECT --to-port 25560
Run Code Online (Sandbox Code Playgroud)

您必须是 root 才能运行此命令,并且它不是永久的。每次服务器重新启动时您都必须运行此命令。