如何让apache处理TCP连接?

时间:2012-11-13 08:15:21

标签: php apache sockets tcp subdomain

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

事情就是这样:我希望在我的服务器上有一个'main'套接字来处理所有传入的数据并使用PHP将其发送给其他客户端。这部分很好,但我想使用多个子域连接该套接字,例如ex.example.com。这样做的是,你不能连接那个子域,除非你有一个套接字运行,并且只是填满你的端口,这就是我想要阻止的。

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

老实说,我不知道该怎么做。我正在寻找几个小时,但我发现的唯一一件事就是Stackoverflow上的东西接近它:Apache - handling TCP connections, but not HTTP requests

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

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

谢谢:)

1 个答案:

答案 0 :(得分:0)

您对子域名感到困惑。套接字,TCP和IP都知道绝对没有关于名称的。 DNS直到网络堆栈已存在多年才发明。

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

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

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

(2)“host”的值是给浏览器的DNS名称。由于此值明确传递给Web服务器,因此该服务器不需要依赖#1等技巧。