我有服務器分佈在幾個數據中心,每個存儲不同的文件。我希望用戶能夠通過單個域訪問所有服務器上的文件,並讓各個服務器直接將文件返回給用戶。轉發HTTP請求與直接服務器返回
下面顯示了一個簡單的例子:
1)用戶的瀏覽器請求http://www.example.com/files/file1.zip
2)請求轉到服務器A上的DNS A example.com的紀錄。
3)服務器A分析請求並確定/files/file1.zip存儲在服務器B上。
4)服務器A將請求轉發給服務器B.
5)服務器B將file1.zip直接返回給用戶不需要通過服務器A.
注意:步驟4和5必須對用戶透明,並且不能涉及向用戶發送重定向,因爲這會違反單個域的要求。
從我的研究中,我想實現的是所謂的「直接服務器返回」,它是負載均衡的常見設置。它有時也被稱爲半反向代理。
對於第4步,這聽起來像我需要做MAC地址轉換,然後將請求傳回網絡和服務器網絡外部的服務器將需要隧道。
對於第5步,我只需要根據負載平衡設置中的真實服務器來配置服務器B.即,服務器B應該在回送接口上具有服務器A的IP地址,並且它不應該回答該IP地址的任何ARP請求。
我的問題是如何實際實現第4步?
我發現了很多硬件和軟件,可以在第4層進行簡單的負載平衡,但這些解決方案不夠完善,無法處理我需要的自定義路由。看起來我需要推出我自己的解決方案。
理想情況下,我想在Web服務器級別進行路由/轉發,即在PHP或C#/ ASP.net中。不過,我願意在較低的層次上進行操作,例如Apache或IIS,或者在更低的層次上進行操作,即在一切事物之前的自定義代理服務。
這需要更改域。位置標題需要指定除www.example.com之外的其他內容,例如www2.example.com,否則請求會直接返回到同一臺服務器。 如果您想知道爲什麼我無法更改域名。這是因爲所提供的文件是閃存swf文件,大多數使用本地存儲,這需要域/子域保持不變。 僅供參考,我已經嘗試過所有30x重定向,並且都不對Flash進行透明處理。 –
感謝您的解釋。 –