2013-01-03 39 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