1

我有一个问题困扰了我将近 24 小时,此刻我不知道如何解决它。

事情是这样的:我想在我的服务器上有一个“主”套接字来处理所有传入的数据并使用 PHP 将其发送到其他客户端。那部分很好,但我想使用多个子域连接该套接字,例如 ex.example.com。问题是,除非你有一个正在运行的套接字,否则你无法连接到该子域,这只会填满你的端口,这就是我想要阻止的。

最好的解决方案是让 Apache 处理传入的 TCP 请求,将数据保存在您正在连接的域上,然后将客户端重定向到主套接字,主套接字处理接收到的数据并在客户端被接受时立即执行。

老实说,我不知道该怎么做。我正在寻找几个小时,但我发现的唯一东西是 Stackoverflow 上接近它的东西:Apache - 处理 TCP 连接,但不是 HTTP 请求

但是使用那段脚本,我无法保存数据(您正在使用的域)并将其发送到主套接字。

我不知道这是否可以由 Apache 完成,或者是否有可能,或者是否有任何其他解决方法。

谢谢 :)

4

1 回答 1

0

您对子域感到困惑。套接字、TCP 和 IP对名称一无所知。直到网络堆栈已经存在多年,DNS 才被发明出来。

因此,您可以将任意数量的域指向机器上的单个“套接字”端口。

Apache 可以根据传入连接的目标 IP 地址 (1) 或 HTTP/1.1 “主机” 标头 (2) 将传入请求路由到不同的“网络空间”(即虚拟主机)。前者是虚拟主机过去的做法,但现在几乎每个人都使用后者。

(1) 即使只有一个网卡,一台机器也可以有多个 IP 地址,但端口对于该机器上的任何给定协议都是唯一的。您将不同的域指向不同的地址,并在网络服务器上定义反向映射,以便它可以判断请求是如何开始的。

(2) “host”的值是提供给浏览器的 DNS 名称。由于这个值是显式传递给网络服务器的,所以该服务器不需要依赖 #1 之类的技巧。

于 2012-11-13T15:14:39.203 回答