我有一些通过nginx进行负载均衡的PHP web服务器。如何在负载平衡(nginx)环境中将响应从外部API调用回请求的Web服务器?
Web服务器需要向外部API(我无法控制)发出请求,然后接收响应。
1)确保将响应返回到正确的(请求)Web服务器的方式有哪些?
2)每个的优缺点是什么?
谢谢!
更新(2011-12-05下午12点38分):
一些更多的背景资料,以什么努力来实现。
我们运行一个面向客户端的应用程序,该应用程序具有许多使用nginx进行平衡的php web服务器。客户端可以定向到任何这些Web服务器。
nginx
|
--------------------------------
| | |
web1 web2 web3
有时我们需要从外部(第三方API)获取数据,然后我们返回客户端。对该数据的请求可能来自任何Web服务器(取决于nginx最初指向哪个客户端)。我们需要确保来自API的数据返回到请求的Web服务器以显示给客户端。
答复将始终直接返回给请求的Web服务器,对吗?当然,请求网络服务器会向远程API打开一个直接的TCP流,这意味着响应将使用同一个TCP流返回 - 并且将始终返回到正确的位置。除非你在你的服务器设置了API的某种代理 - 这会使得负载平衡毫无意义,因为你给自己一个单点故障。即使那样,我也会认为这仍然不成问题,除非代理以非常奇怪的方式设计。 – DaveRandom
@DaveRandom“当然,请求的Web服务器打开一个直接的TCP流到远程API” - 我认为你是对的。从192.168.1.2开始,您通过nginx public ip xx.yy.zz.pp发出请求,并且API响应回到公共IP,它可能被重定向到192.168.1.3。 ip_hash指令阻止了这一点。 –
@narcisradu但它不只是NAT吗?这听起来像是我应该在第3层(TCP/IP模型)处理的事情,在第4层添加了一些东西来增加复杂度和处理开销。除非有我丢失的东西... – DaveRandom