2013-10-19 107 views
1

我有兩臺服務器。如何爲Web應用程序創建文件服務器

服務器A:Tomcat + Oracle:它包含Web應用程序代碼。 Webapp部署在此服務器上。

服務器B:支持PHP + MySQL +大容量磁盤存儲空間。這是在服務器A上運行的Web應用程序的文件服務器。

目前所有用戶都在服務器A上傳文件,而服務器A使用FTP連接將它們保存在B. 類似地,下載A使用FTP從B獲取文件,該文件瀏覽器。但是這增加了服務器A的網絡開銷。

是否有任何安全的方式,只有登錄用戶可以通過直接訪問服務器B的某個URL來下載他們的文件?

+0

服務器a和b託管togeather? – 2013-10-19 20:25:04

+0

兩臺服務器位於不同的盒子中,實際上位於不同的時區。 –

回答

2

您可以使用一個短暫的一次令牌系統。服務器A用於身份驗證,服務器B用於令牌存儲和文件服務器。

客戶端一旦通過驗證就向服務器A請求一個文件。然後,服務器A向服務器B請求一次性令牌和URL以獲得給定的文件名。服務器B生成一個令牌和URL並返回到服務器A,服務器A又返回給客戶端。

客戶端現在可以使用給定的URL和令牌從服務器B請求文件。服務器B將檢查令牌沒有被使用或過期,並且所請求的文件與令牌的頒發令牌相匹配。

+0

是否有任何現有的框架提供類似的支持。 –

1

是的,當然,首先你需要實現網絡服務才能連接服務器。

然後,一旦用戶登錄服務器A並嘗試上傳/下載文件,服務器A只會向服務器B發送令牌密鑰(如cookie)/密鑰,因此服務器B將確保身份驗證,並且最後服務器A將用戶重定向到服務器B以直接連接以導致服務器A中的減少負載。

事實上,服務器A和B應該彼此進行關於登錄用戶和可訪問性的通信,以及如果客戶端請求文件在驗證之前,所以這裏服務器B重定向到服務器A進行驗證,然後回到文件上/下。

0

除了Martyn Roberts的回答,我建議使用nginx和ngx_http_secure_download_module來完成此任務。

相關問題