我已经编写了自己的HTTP服务器,但是根据某些条件,我想将对服务器的一些请求重定向到在同一台机器上运行的另一台服务器。例如,我可能希望将所有请求重定向到" / foo / *"由apache服务器处理我也跑了。这样做的最佳方式是什么?
我能想到这样做的唯一方法是在不同的端口上运行apache,然后从我的服务器向localhost发出一个全新的网络请求:1234(假设apache在端口1234上运行)具有相同的确切请求标题和正文,然后获取响应并让我的服务器将其发送回客户端。
这似乎是一种实现这一目标的笨拙,迂回的方式,而且我确信这是每个主要网站都要解决的问题。是否有某种技术或协议可以解决这个问题?
非常感谢!
编辑:为了清楚起见,客户端应该只对所有这些做出一个网络请求,而不是让我的服务器返回3xx响应
答案 0 :(得分:0)
HTTP通过TCP运行。 Apache服务器不能只向没有请求它的客户端发送所需的响应。客户端已向您的HTTP服务器请求数据,因此它必须是发送响应的服务器。客户端可能在防火墙后面,因此,Apache服务器甚至无法与它建立TCP连接(传入连接通常被阻止)。
如果您的服务器接收客户端请求,将其转发到Apache服务器,从Apache服务器获取响应并将其转发给客户端,它将充当代理服务器(中间人)。这不会是重定向。
唯一明智的做法是让客户端发出两个网络请求。