1

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

4

1 回答 1

1

这就是 areverse proxy会做的。根据您所在的平台,有很多选择。

在许多平台上工作的一种方法是,例如node-http-proxy,您可以在服务器 B 上启动。在最简单的情况下,这个单线可以:

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 层交换机,它可能不在返回路径中。

于 2012-10-19T05:15:01.773 回答