0

我有一个基于 TCPSocket(非 HTTP)的 ruby​​ 服务器。

我有 2 个不同的域,都指向我的服务器 IP 地址(同一个)的 A 记录。因此,有客户端连接到这些域之一。是否可以判断客户端连接到哪个域?

我看到这在其他协议中是可能的,但我不确定这是基于手动添加的标头还是真的从基本的 tcp/ip 连接中提取。例如,在 PHP 中有$_SERVER["HTTP_HOST"]显示客户端连接到哪个域。

4

1 回答 1

1

在 TCP 套接字级别,唯一已知的是连接的源和目标 IP 地址(和端口)。在这一层无法知道如何通过 DNS 解析 IP 地址。即使 HTTP 在 TCP 之上工作,HTTP 服务器也必须查看来自客户端的 HTTP 标头以了解它们正在向哪个域发出请求。(这就是 HTTP_HOST 值的填充方式。)

一种可能的解决方案是将您的服务器配置为具有额外的 IP 地址。这可以通过为 NIC 分配额外的 IP 地址或添加额外的 NIC 来实现。然后让每个域使用不同的 IP 地址。否则,这是不可能的,您可能需要考虑基于 TCP 的应用程序协议来传达此信息。

于 2014-01-21T07:02:44.407 回答