【问题标题】:What hostname did the client use to connect to my TCP server?客户端使用什么主机名连接到我的 TCP 服务器?
【发布时间】:2017-07-15 00:18:15
【问题描述】:

在 http 中,客户端提供用于连接服务的主机名。现在,对于裸 TCP 连接,有没有类似的东西可以做?我的场景是我有一个服务,它有多个开放的 TCP 端口并且工作正常,但为了方便起见,我想使用相同的端口和子域。我可以在上面添加任何层(如负载均衡器)或更改服务吗?我可以控制大部分事情,基本上任何事情都会发生。

示例: 今天我可以像这样连接到两个 TCP 服务:foobar.com:1001foobar.com:1002。是否有可能有例如service-1.foobar.com:1000 转到 foobar.com:1001service-2.foobar.com:1000 转到 foobar.com:1002

【问题讨论】:

    标签: tcp server port


    【解决方案1】:

    不同的服务可以绑定到同一个端口但在不同的 IP 上。因此,不同的域应解析为不同的 IP:端口组合 [所有服务的端口相同]。并且您可以使用来自 HA 代理的代理服务将连接路由到最终目的地。

    【讨论】:

    • 因此,如果没有不同的 IP 号码,就无法做到这一点。正如我所怀疑的那样。你有这方面的一些资料吗?
    • 不确定,我收到了你的问题。您想将foo..:1001foo...:1002 隐藏在Proxy1:1000Proxy2:1000 后面不是吗?
    • 是的,没错。或者不需要隐藏,如果 foo..:1001 等仍然可用,它更像是一种速记。
    • 所以代理服务,如 HA 代理应该绑定在 Proxy1:1000 和 Proxy2:1000 上。每个人都有自己的目的地。
    • 什么是“HA 代理”?我知道如果所有主机都有不同的 IP,这很容易设置。所以澄清一下,不使用不同的IP号码是不可能的。你有任何消息来源吗?
    【解决方案2】:

    如果我根据您的示例正确理解了您的问题,那么不,这是不可能的。在这种情况下,HTTP 和 TCP 连接没有区别。

    在这两种情况下,主机名都被简单地解析为一个 IP 地址。如果您为 foobar.com、service-1.foobar.com、service-2.foobar.com 设置 DNS 解析以指向相同的 IP 地址,那么它们都将转到同一台机器。

    我有时需要在内部与外部访问不同的端口上运行服务。为此,如果您在 Linux 上运行,您可以简单地使用 iptables 进行端口转发。

    您可以找到其他有关设置端口转发的堆栈溢出问题/答案。

    https://serverfault.com/questions/140622/how-can-i-port-forward-with-iptables

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 2022-01-16
      • 2019-06-06
      • 2019-06-18
      相关资源
      最近更新 更多