Amazon-Web-Services
AWS S3 靜態網站與 CloudFront OIA
似乎有兩種方法可以在 S3/CloudFront 上託管靜態網站。
- 創建具有完全公共訪問權限且靜態網站設置為已啟用 + CloudFront 配置的 S3 儲存桶
- 創建沒有公共訪問權限的 S3 儲存桶並將靜態網站設置為已禁用 + CloudFront 配置
我不喜歡 (1) 是公開訪問的刺眼的“不要這樣做”紅色文本。但它完美地工作。
我不喜歡 (2) 的地方是我失去了靜態網站設置為已啟用的好處,就像所有內容都自動重定向到
index.html
. 現在我看到root origin
CloudFront 設置中有一個對象,但這僅適用於我的基本域(例如mysite.com
)。我的網站是一個 SPA,並且(1)如果我去mysite.com/profile
它會正確地去mysite.com/index.html
我認為因為我設置了 404 重定向。但是(2)去mysite.com/profile
的不是 404,而是 403 訪問被拒絕,我認為像 404 那樣重定向並不明智。那麼即使是關於公共訪問的刺眼紅色文本,我是否應該堅持選項(1)?或者是否有適當的方法在沒有公共訪問/靜態網站託管的情況下進行 SPA?
對於託管在 S3 上的網站,可以安全地忽略公共訪問警告。儲存桶/文件是故意公開的。啟用網站託管後,AWS 可能應該禁用該警告。
CloudFront 分配顯然會提供更好的性能,但對於單頁應用程序,它可能不足以打擾,您的呼叫基於您的使用者/應用程序的知識。與其依賴 Web 伺服器來發出重定向,您可以不在您的應用程序中對其進行編碼,以便連結是您想要的方式嗎?您可以使用 CloudFront@Edge 進行重定向,但這需要額外的工作並增加一定程度的額外成本。