nginx - 關於下載伺服器流量均衡的問題?
为情所困
为情所困 2017-05-16 17:22:10
0
1
428

請問以下需求如何解決?

有三台nginx伺服器

其中一台X用作為web伺服器

另外兩台作為附件伺服器分別為A和B,各自保存不同的附件檔案
A、B分別綁定網域為:
download-a.xxx.com
download-b. xxx.com

假如使用者造訪網站後需要下載一個檔案123.zip,
下載連結為http://bbs.xxx.com/123.zip (注意不是真實下載位址)

但不知道這個123.zip檔案放在A、B哪個伺服器上,
真實的下載位址可能是download-a.xxx.com/123.zip,可能是download-b.xxx.com /123.zip
可能都沒有這個檔案

需求與目的:由於A、B出口頻寬有限,故將檔案分別放到不同的機器上,同時有效利用A、B的頻寬和儲存空間(若A、B上的檔案一樣,採用負載平衡方式,又會浪費A、B重複保存檔案的磁碟空間),希望能透過判斷找到檔案在哪裡,並讓儲存伺服器自己直接將檔案傳送給客戶

疑問一:
若我透過網站的php程式碼判斷檔案在A、B哪一台伺服器上,然後頁面顯示真實位址,客戶點擊後直接下載,php程式碼如何寫呢?

疑問二:
若以上方法不可行,是否能在A、B前面使用一個nginx伺服器C來處理請求,相當於反向代理角色

例如
用戶點擊頁面上資源連結http://bbs.xxx.com/123.zip去下載,http://bbs.xxx.com即為伺服器C綁定的域名,C自己不儲存資料。
C收到請求後判斷資料在A、B誰哪兒,如果在A這裡,C直接告訴A在你那兒,並讓A將文件直接發給用戶,不經過C,以上需求nginx是否可以實現呢?
最主要的是讓目標伺服器直接把檔案回傳給使用者瀏覽器,不走C的流量和頻寬,可否實現?

为情所困
为情所困

全部回覆(1)
仅有的幸福

可以在檔案名稱中提現儲存位置,例如設定第x位元表示儲存在A/B伺服器上。

只需根據檔名判斷即可。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板