如何在同一台机器上运行不同的tcp服务器

时间:2015-05-26 06:53:14

标签: delphi tcp indy

我想编写一个n层应用程序,其中服务器部分可以托管在客户站点上,或者我们公司可以在我们的机器上(通过互联网)托管服务器部分(针对每个客户)。

当我们公司托管客户服务器部分时。然后,我们必须多次运行相同的服务器应用程序(对于每个客户)。我不想更改和维护每个服务器实例的端口号。 所以我的问题是:是否可以在同一台机器上使用相同的端口映射运行相同的服务器应用程序?只是在服务器应用程序中指定一个唯一的uri / url?喜欢:

  1. http://10.0.0.127:8090/customer_1/
  2. http://10.0.0.127:8090/customer_2/
  3. 我正在使用Indy组件进行客户端/服务器通信。

1 个答案:

答案 0 :(得分:2)

多台服务器可以在同一台计算机上的同一端口上侦听的唯一方法是绑定到不同的IP地址。否则,您必须使用不同的端口。

另一种方法是仅托管一个HTTP服务器并利用HTTP 1.1的虚拟主机功能(通过Host标头,这是所有HTTP 1.1中的必需标头请求)区分同一服务器上的不同客户站点,例如:

  1. http://customer1.myserver.com:8090/生成:

    GET / HTTP/1.1
    Host: customer1.myserver.com:8090
    
  2. http://customer2.myserver.com:8090/生成:

    GET / HTTP/1.1
    Host: customer1.myserver.com:8090
    
  3. 您的服务器可以查看Host标头以了解要访问的客户站点。

    阅读RFC 2616 Section 19.6.1.1了解更多信息:

    Changes to Simplify Multi-homed Web Servers and Conserve IP Addresses