我正在努力让我的两台Minecraft服务器更容易访问。我尝试了一些解决方案,但到目前为止,没有一个能够有效地发挥作用。
我有一个正常的vanilla Minecraft服务器在mysite.com:25560上收听,一个Tekkit Minecraft服务器在mysite.com:25570上收听。也就是说,两台Minecraft服务器都在同一台机器上运行。当用户使用指定的端口直接连接到服务器时,它们可以正常工作。
香草服务器最初是在标准的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>
使用ProxyPass注释掉的行会导致Apache以错误开头 ProxyPass网址必须是绝对的!
为了确定我是否可以使其正常工作,我尝试在相应位置替换http://www.mysite.com:25560/60,而Apache确实启动时没有任何错误,用户无法连接到服务器。我相信这是因为Minecraft服务器不会将HTTP请求重定向到服务器连接,无论协议是什么。
这让我相信Apache在处理非HTTP请求时没有帮助。如果我弄错了,我怎样才能让Apache正确地将子域流量重定向到端口?否则,没有Apache可以建议一种方法吗?我可以访问所有标准的Linux / Ubuntu实用程序。我一直在寻找没有进展的时间。
谢谢!
答案 0 :(得分:2)
解决方案1:
我认为这不适用于Apache,因为你只能得到错误。在互联网上搜索了一段时间后,我发现了以下内容:https://github.com/SirCmpwn/MCVHost。我不确定它是否有效,但如果确实如此,我认为它完全符合您的需求。
如果你在Linux上,你可以用Mono运行它,因为我没有发现任何Java或Python等价物。
编辑:我刚刚测试了它,它不适用于1.4.6,因为协议已更改
解决方案2(可能是最好的):
使用自1.3版以来Minecraft认可的SRV记录。 Multiplay在http://wiki.multiplay.co.uk/Minecraft/Hostnames发布了一本手册。
答案 1 :(得分:0)
我相信iptables会为你做这件事,假设你在Linux上:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25565 -j REDIRECT --to-port 25560
您必须是root才能运行此命令,并且它不是永久性的。每次服务器重新启动时都必须运行它。