我有自定义tcp服务器侦听端口5888(虚拟端口)。代理服务器侦听传入连接。当代理收到HTTP请求时,它应该将相同的请求转发给不同的服务器。
例如:
代理收到:http://proxyserver.com/mypage.html 代理应该中继:http://MainServer.com/mypage.html
主服务器的响应应直接发送给请求客户端。
在将新的HTTP请求中继到主服务器之前,我已经使用套接字来接受连接并解析原始HTTP请求。这变得太复杂了,因为我必须将Raw HTTP请求发送到主服务器,获取响应并将其发送到客户端机器。代理基本上变成了中间人。我只想要代理 通信的一方,即将主机地址更改为MainServer,然后主服务器应该负责将响应发送给请求客户端。
如何实现这一目标?
答案 0 :(得分:1)
HTTP通过从客户端发送到服务器的TCP连接。在存在代理的情况下,您至少需要两个连接 - 一个从客户端到代理,一个从代理到服务器。在某种意义上,这两个连接都是“独立的”,它们都传输标准的HTTP请求和响应。此处的代理充当终端服务器的客户端。
您想要的是至少三个TCP连接,并且需要在发起HTTP请求的连接上发送HTTP响应。这是在HTTP之外 - 客户端不知道它需要在其他地方进行第二次连接,以及如何将一个连接上的请求与另一个连接上的响应进行匹配。您在HTTP中可以做的最好的事情是重定向到不同的服务器,例如,使用特殊生成的URL或其他东西。
请记住,HTTP响应必须与原始请求在同一TCP连接上。