2013-01-03 32 views
0

这个问题可能听起来很奇怪,也可能是不恰当的措词。我有一个nginx web服务器X,它必须从其他服务器Z请求一些数据。我可以控制代理P,以便X可以通过P访问Z使用2级代理的Nginx web服务器

X --> P --> Z

问:是否有可能有PZ之间的另一个代理Q,赠送:

X --> P --> Q --> Z

其中被选择的代理Q取决于参数(比如id)web服务器X知道吗?也许参数id可以从XP在标题中传递,如果可以,P可以使用id来查询MySQL数据库以检索正确的代理详细信息Q并将其用作此特定连接的代理?如果这是可能的和理想的,应该如何设置?

在这种情况下,还有PQ被认为是正向代理还是反向代理?

回答

0

是的,你可以做到这一点。许多网站一直这样做。看看Web服务是如何工作的。

如果P/Q是反向代理比代理更好,因为反向代理不会修改请求并确保X和Z之间可以有任何数量的此类组件(包括无)。因此,当你的X上的应用程序和Z一起工作,当它是一个反向代理时,它将在P中间自动工作。在开发应用程序时,这是一个非常重要的方面!

现在取决于用于P的产品,您将拥有更多或更少的功能。例如,haproxy将能够在头文件中匹配你的id,请求参数等等,但是它不能从数据库中查找它。我相当肯定你会发现一些能够执行这种查找的产品(不管这样做是否有效是另一个问题)。

希望这有助于!

+0

这很有洞察力,谢谢威利。我试图使用Squid作为前向代理'P',但是它的查找功能必须基于严格限制的ACL。 nginx是否适合作为反向代理'P',它可以读取头中的id并执行查找以确定使用哪个'Q'?我目前很难理解nginx如何与数据库进行通信,并使用返回来决定使用哪个代理'Q'。我假设它与通过fastcgi运行php5-fpm的nginx web服务器不同,后者的php脚本可以查找mysql。 – Nyxynyx