两台计算机在同一端口上运行应用程序

hag*_*wal 3 networking router port-forwarding

我阅读了有关端口转发的信息,并且可以理解它使 Internet 能够向您的专用网络发送请求并访问在您的专用地址中的其中一台计算机上运行的某些服务。

但我怀疑如果假设我有 2 台计算机在端口 80 上托管 Web 服务器会发生什么。在这种情况下,路由器如何知道要发送请求的计算机。我知道如果只有 1 台计算机,那么路由器会知道,但怀疑是 2 台。

一种情况可能是我的专用网络上有 2 台计算机,每台计算机都托管一个不同的网站。现在我希望我的两台服务器都在端口 80 上运行,这样用户就不需要输入端口号(或者可能是因为某些原因我希望两台 Web 服务器都具有相同的端口号)。现在会发生什么?

Dar*_*oid 8

路由器不在乎。你必须告诉它要转发到两台计算机中的哪一台,它会忽略另一台。

如果您希望两台计算机都可以在 Internet 上访问,则必须在路由器上转发两个不同的端口(即8081),将一个端口转发给两台计算机中的每一台。


如果您希望用户在浏览任何一个网站时都不必输入端口号,则需要在路由器后面的某处(在第三台计算机上,或在前两台计算机中的一台上)设置一个像nginx这样的反向代理,并使路由器转发到代理。然后可以将代理配置为查看客户端尝试访问的 URI(主机名是最常见的,查找“网络服务器虚拟主机”,尽管您可以根据 URI 的其他部分(如路径)做出决定),并且将请求转发到原始服务器之一(可以在任何端口上运行)。

  • @hagrawal 虽然您可能没有使用主机名方面,但它绝对是*正确的*,因为它可以工作并且实际上是运行多少大型网络服务器(请参阅“网络服务器虚拟主机”)来解决此类问题(多个网络服务器在单个端口上的单个 IP 上提供服务)。由于这个原因,我倾向于将其留在答案中。 (2认同)