![](/img/trans.png)
[英]403 Forbidden on Django Storages css/js files with Amazon S3 on an EC2 Instance
[英]AWS / Django - do I save private user uploaded files to S3 or on my EC2 instance?
我有一個Django Web應用程序,該應用程序允許用戶上傳其顯示圖片。 一些用戶可以看到此顯示圖片,但不是所有人(不是所有用戶)都可以訪問該圖片。 話雖如此,在開發中,我曾經將其保存在本地計算機上。 在我的設置文件中,
MEDIA_ROOT = '/home/myProfile/Documents/thisFolder/uPhotosFolder'
MEDIA_URL = '/media/'
然后Django會將所有用戶上傳的顯示圖片保存到我機器上的媒體庫(uPhotosFolder)中。
話雖如此,我已部署(或至少正在嘗試部署)該應用程序,並且當我將MEDIA_ROOT和MEDIA_URL留在我的設置文件中為
MEDIA_ROOT = '/home/myProfile/Documents/thisFolder/uPhotosFolder'
MEDIA_URL = '/media/'
並嘗試上傳圖片,它說訪問被拒絕。 顯然,我必須進入我的EC2實例(我使用Amazon Web Services)並創建
'/home/myProfile/Documents/thisFolder/uPhotosFolder'
目錄,然后開始保存顯示圖像。
我的問題是,這是在服務器上保存私人用戶上傳的圖像的正確/最佳方法嗎? 還是我也應該為此使用S3? (據我了解,S3上的圖像存儲在雲中,任何人都可以通過URL進行訪問)現在有沒有辦法針對我的情況使用S3?
是否將映像存儲在文件夾中的EC2實例上還是S3存儲上的問題與文件隱私無關。
MEDIA_ROOT定義媒體文件夾的位置。 MEDIA_URL定義提供媒體時形成的URL。
現在,如果使用默認文件系統存儲進行存儲,則最終將文件保存在MEDIA_ROOT中。 我們可以通過設置文件中的一些附加配置將存儲更改為S3。 ( 文檔在這里 )
現在,可以通過限制對URL的訪問來完成基於用戶的文件保護。 為此,可以使用X-Accell-Redirect標頭保護媒體URL,而標頭在使用nginx提供文件時使用(例如: here )。 萬一您繼續使用S3存儲來提供媒體文件(在生產環境中更可取)-S3存儲提供了獲取媒體受保護URL的功能,該URL可傳遞給客戶端以檢索媒體。 這些URL在有限的時間段內具有可訪問性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.