我在CentOS6.3上有一个游戏服务器,它只有一个静态IP,但是托管了3个不同的游戏,每个都在不同的端口上。端口4000是游戏的默认查询端口,我在后续端口上托管实例。
目前,玩家必须通过输入IP/主机名和端口来连接每个游戏,如下所示:
123.123.123:4001或server1.mygame.com:4001123.123.123:4002或server2.mygame.com:4002123.123.123:4003或server3.mygame.com:4003我想做的是让玩家不需要输入端口,只需要记住主机名:
server1.mygame.comserver2.mygame.comserver3.mygame.com我知道这(端口重定向/转发)是不可能只使用DNS,A-记录或其他.因此,我在游戏的默认查询端口上设置了Apache,并使用基于名称的虚拟主机尝试将连接重定向到相应的端口。例如,匹配server1.mygame.com的vhost名称是301d到端口4001。
这在浏览器中有效-我看到重定向工作很好!但遗憾的是,它在游戏中没有发挥作用。我猜游戏不能跟随301重定向。我还通过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或301重定向。
这个是可能的吗?
发布于 2012-09-11 19:12:38
在TCP和UDP协议中没有“名称”这样的概念,所以您不能这样做。
替代方案是在应用程序级协议上实现名称(例如。或者使用不同的IP地址或不同的TCP/UDP端口。
除非您的游戏是讲HTTP,否则您放置的整个Apache都是无用的,因为Apache是一个HTTP服务器。如果你的游戏声称会说HTTP,那么它必须理解重定向.否则,它只是一个部分的、未完成的HTTP客户机。
(Apache也可以为其他协议服务,但这与此无关)
https://serverfault.com/questions/426455
复制相似问题