是否可以透明地委派HTTP请求?

时间:2012-10-17 16:22:38

标签: http redirect request

假设计算机A向服务器B发送HTTP请求,B希望C回答它。是否可以在没有B干预且没有A的特定操作的情况下将响应发送回A(与3xx重定向一样)?假设C可能没有公共IP地址。

1 个答案:

答案 0 :(得分:1)

这就是reverse proxy会做的事情。根据您所使用的平台,有很多选择。

在许多平台上运行的一种方法是你可以在服务器B上开始的node-http-proxy。在最简单的情况下,这个单线程会做:

require('http-proxy').createServer(81, 'serverb').listen(80);

它侦听端口80并重定向到serverb上的端口81。

有关更多选项,请参阅https://github.com/nodejitsu/node-http-proxy

当然,有许多完善的代理,有更多的铃声和口哨声(虽然node-http-proxy也可以做https隧道等),但配置这些代理可能比运行这个代码更具挑战性 - 衬垫。这一切都取决于你的用例。

修改:阅读您的评论,可以使用直接路由来完成。您的问题是关于HTTP(第7层),而直接路由在较低层工作,而更高级别的协议(如HTTP)也可以工作。引自http://horms.net/projects/has/html/node9.html

  

直接路由:来自客户端的数据包直接转发到   后端服务器。 IP数据包未被修改,因此后端   必须将服务器配置为接受虚拟服务器的流量   IP地址。这可以使用虚拟接口或数据包来完成   过滤以重定向发往虚拟服务器IP的流量   地址到本地端口。后端服务器可以直接发送回复   回到客户端。也就是说,如果使用基于主机的第4层交换机,则使用它   可能不在返回路径中。