我们正在开发一款基于浏览器的在线游戏。游戏本身是网页中的一个插件,它使用 TCP 连接游戏服务器,并向“内容服务器”Web 应用程序发送 http 请求。
这样一共有 3 个服务器:网站本身、游戏服务器和内容服务器。网站和内容服务器是 IIS Web 应用程序,游戏服务器是一个自定义应用程序,通过专有协议通过 TCP 进行通信。
在游戏处于测试阶段时,所有这些服务器都物理托管在一台机器上,并通过端口进行区分。例如,网站是game.example.com:80
,游戏服务器是game.example.com:34285
,内容服务器是game.example.com:50000
。这在大多数情况下都可以正常工作,但我们的一些玩家关闭了除 80 之外的其他端口。
有什么办法全部这些应用程序通过端口 80 工作,同时仍然将它们放在一个物理服务器上?也许使用不同的子域?可能有一种方法可以让 IIS 仅根据 URL 将请求转发到不同的 Web 应用程序,但这对游戏服务器没有帮助。
编辑服务器是Windows Server 2008,IIS 7
答案1
我的建议是使用多个 IP 地址。您可以在同一个物理盒子上托管多个 IP,并将不同的应用程序绑定到每个 IP 上的相同端口。因此,192.168.13.4 可以是 Web 服务器,192.168.13.6 可以是内容服务器,192.168.13.9 可以是游戏服务器。每个服务器都可以通过所需的任何端口进行通信,并且如果需要,所有服务器都在端口 80 上运行。
使用子域、主机头等都将在应用程序级别发生,并且对游戏服务器不起作用(正如您所提到的)。
答案2
您没有说明您使用的是哪个版本的 Windows Server。这将表明它是 IIS 6 还是 7。有几种方法可以做到这一点。一种是利用主机头。
答案3
你想使用主机标头。