假设计算机A向服务器B发送HTTP请求,B希望C回答它。是否可以在没有B干预且没有A的特定操作的情况下将响应发送回A(与3xx重定向一样)?假设C可能没有公共IP地址。
答案 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层交换机,则使用它 可能不在返回路径中。