我在Centos 6.3上有一个游戏服务器,它有一个静态IP,但是有不同的游戏,每个都在不同的端口上。 端口4000是游戏的默认查询端口,我在后续端口上托pipe实例。
目前,玩家必须通过inputIP /主机名和端口来连接到每个游戏,如下所示:
123.123.123:4001或server1.mygame.com:4001 123.123.123:4002或server2.mygame.com:4002 123.123.123:4003或server3.mygame.com:4003 我想要做的是让玩家不需要键入端口,只需要记住主机名:
server1.mygame.com server2.mygame.com为游戏2 server3.mygame.com为游戏3 我知道这(端口redirect/转发)是不可能的只使用DNS A – logging或任何。 所以我设置了Apache来侦听游戏的默认查询端口,并使用基于名称的虚拟主机尝试301redirect连接到适当的端口。 例如,一个与server1.mygame.com匹配的虚拟主机名称已经301端口到4001端口。
这在浏览器中工作 – 我看到redirect工作正常! 但令人遗憾的是,这并没有在游戏中奏效。 我的猜测是游戏不能遵循301redirect。 我也尝试了通过Apache的反向代理,但也失败了。
所以我想知道是否有任何方法来设置基于名称的端口转发,而不使用Apache。
概要:
基本上我需要这些规则:
Connection to 123.123.123 established on port 4000 (query port). If the hostname is "server1.mygame.com" --> forward to 4001. If the hostname is "server2.mygame.com" --> forward to 4002. If the hostname is "server3.mygame.com" --> forward to 4003.
所有没有Apache或301redirect。
这可能吗?
在TCP和UDP协议中没有“名称”这样的概念,所以你不能这样做。
替代scheme是在应用程序级协议(例如HTTP 1.1)中实现名称事物,或者使用不同的IP地址或不同的TCP / UDP端口。
除非你的游戏是说HTTP,否则你放置的整个Apache是无用的,因为Apache是一个HTTP服务器。 如果你的游戏声称说HTTP,那么它必须了解redirect,否则它只是一个部分的,未完成的HTTP客户端。
(Apache也可以服务于其他协议,但是这里没有关系)