虚拟主机而不是单独的IP?

我一直想知道是否可以在一个IP地址上使用单个端口来托pipe多个应用程序。 我的意思是类似的方法Apache的虚拟主机,你可以分配域/子域到特定的目录,但我想这样做,我可以主持几个应用程序使用一个端口,但有一个子域,它决定你连接的应用程序至。

我的脑海中将如何运作的一个例子是:

app_server.exe (Instance 1): 111.111.111.111:9999 app_server.exe (Instance 2): 111.111.111.111:9999 

然后,如果我连接到app1.example.com它连接到Instance 1 ,而app2.example.com将连接到Instance 2

我不知道这是否可行,但是我看,我不知道它会被称为什么,所以这是我最好的select。

是的,只要正在使用的应用程序级协议知道连接到哪个名称,就可以这样做。 HTTP知道这一点,因为Host:头。 TLS知道这(现在),因为“服务器名称指示”扩展名。 我相信FTP可以知道这一点,基于一些协议扩展,但如果你仍然使用FTP,你注定要失败。

如果协议无法指示使用哪个名称,则不能这样做,因为所有服务器都知道何时进行连接是源和目标IP /端口所涉及的。 其他一切都需要通过更高的水平。

关于你提出的实现的一点是:你需要一个服务监听接收连接的端口,充分分析input的数据,以便能够确定哪个名字被请求,然后(并且只有这样)可以将请求路由到应用程序的不同实例进行处理。 如果这些实例是单独的进程,那么将请求传递给将处理它的后端的一些方法(如代理,或者,如果你正在处理一个非常好的协议devise,套接字切换),但是如果你实现了各种处理程序在相同的过程中(比如configuration或dynamic加载的模块),那么你可以创build一个包含请求的数据结构,并把它传递给任何想要处理的数据结构。