1. 程式人生 > >【OSS最佳實踐】WEB站點中如何應用OSS產品

【OSS最佳實踐】WEB站點中如何應用OSS產品

put discuz論壇 瓶頸 個人 得到 行為 ssim 雲安全 實現

【OSS最佳實踐】WEB站點中如何應用OSS產品http://www.bieryun.com/1194.html

技術分享圖片

OSS提供了海量、安全、低成本、高可靠的雲存儲服務,用戶可以通過SDK、API、OSS相關工具等在WEB端應用集成OSS。OSS的優勢在於:OSS服務器性能較好,OSS單個bucket存儲空間大小不限制,OSS單個bucket出入帶寬限制5Gb以上(故大部分情況下,上傳下載速度是取決於客戶端的帶寬)。

WEB站點應用OSS分為:源靜態資源上傳至OSS、WEB端集成OSS實現資源上傳、WEB端應用OSS資源;

1. 源數據上傳至OSS

將WEB站點中的靜態資源上傳至OSS,上傳資源可以通過SDK、API或者相關工具進行上傳;

1) SDK/API 上傳方式(需要代碼基礎):在web 服務器上調用sdk 或者api 讀取站點目錄下的靜態資源,一個個調用putobject接口進行上傳資源。
2) OSSimport遷移(推薦):在站點服務器上部署OSSimport工具進行遷移數據,OSSimport支持增量數據遷移,並且配置簡單方便,但是需要JAVA環境;
3)OSSfs: 安裝OSSfs,掛載待上傳的bucket,通過命令cp 資源到bucket中,缺陷為OSSfs掛載bucket的穩定性需要客戶自己保障,並且OSSfs掛載bucket的性能由於走的是http協議,性能相對不理想;
4) 第三方工具:客戶也可以在雲市場上尋找一些第三方工具進行數據遷移至OSS;

參考鏈接如下:
SDK:SDK
API: API
OSSimport配置文件說明:OSSimport配置
OSSimport安裝看:OSSimport安裝
OSSfs: OSSfs

2.WEB端集成OSS,實現資源上傳

WEB集成OSS實現資源上傳,可以通過如下幾種方式進行:WEB端集成OSS SDK/API實現資源直傳至OSS、WEB端上傳資源至服務器端,服務器端集成OSS SDK上傳資源至OSS、通過OSSftp工具上傳資源至OSS等;

1) WEB端集成OSS的SDK(推薦)

WEB端集成OSS的SDK實現資源直傳至OSS,並且服務器端聯動更新站點的應用內容。WEB端可以集成OSSWEB直傳回調demo、JS SDK、自己實現JS API封裝來實現直傳資源至OSS;

I) OSS WEB直傳回調demo(推薦)

改造Web 站點上傳資源部分的代碼,集成web直傳回調demo,web端直傳資源至OSS,OSS接到對應的上傳請求,存儲數據,並且將文件相關的信息回調給web 服務器,web 服務器記錄相關的文件信息(可以是數據庫記錄對應上傳的uid,bucketname,objectname,endpoint等信息)聯動更新web 站點,顯示對應object的鏈接;web 直傳回調的業務邏輯示例如下:
技術分享圖片

缺陷:采用post 請求上傳資源,目前沒有分塊上傳的demo,得客戶自己二次開發實現下;

II) JS SDK

改造Web 站點上傳資源部分的代碼,集成OSS JS SDK,通過JS SDK上傳資源至OSS;業務邏輯可以為:客戶端發起上傳請求,web 端請求web 服務器獲取得到對應的臨時ak,sk,token/子賬戶的ak,sk ,進行初始化client,調用put object接口進行上傳資源;

缺陷:如果調用子賬戶或者主賬戶ak,sk進行初始化client,賬戶很可能會存在安全風險;並且目前js sdk 不支持回調,這樣的方式不能很好的實現業務服務器聯動;

III) JS API封裝

改造Web 站點上傳資源部分的代碼,通過JS封裝OSS上傳object的API接口實現資源直傳至OSS,封裝api 構造上傳object的請求,需要獲取簽名,獲取簽名可以請求業務服務器端獲取,保證access key id安全性;同時JS 封裝API可以實現下回調邏輯,將上傳資源的相關信息回調給業務服務器,業務服務器實現相關聯動;

缺陷:需要一定開發基礎,並且有一定開發工作量

2) 服務器端集成OSSSDK

原有的Web端上傳邏輯不變,上傳資源至服務器端,但服務器端增加上傳邏輯,調用OSSSDK上傳對應的資源至OSS。
缺陷:上傳通過Web服務器中轉,消耗了服務器的性能及帶寬,並未充分利用OSS的優勢,服務器端的性能及帶寬瓶頸會成功業務瓶頸;

3) OSSftp實現資源上傳至OSS

在一臺有公網的服務器上部署OSSftpserver,測試通過使用FileZilla客戶端去連接FTP server成功後,對應的站點參考OSSftp文檔進行FTP配置,實現資源上傳至OSS。
缺陷:OSSftp目前僅支持Discuz論壇、phpwind論壇、Wordpress等個人網站的應用,業務量較大的站點不推薦使用該方式集成;

參考鏈接如下:
OSSftp安裝部署
Discuz配置
phpwind論壇配置
Wordpress配置

3. WEB端應用OSS資源

Web端應用OSS資源可以通過如下幾種方式進行:Web應用的靜態資源url鏈接直接替換為OSS object的url鏈接、Web端的頁面引用的鏈接不進行任何改造,通過反向代理配置,靜態資源請求定位到OSS上、Web端的頁面引用不進行任何改造,直接ossfs掛載使用OSS資源等;

1) 直接應用objecturl鏈接

客戶可以將站點中的全部靜態資源鏈接替換為OSS中對應object的url鏈接。

I) 為bucket綁定自定義域名並且開啟cdn加速(可選,但是推薦),參考:cdn加速oss

II) 更新WEB站點中靜態資源的URL鏈接
將WEB站點中的靜態資源url鏈接全部替換為OSS object的URL鏈接;OSSobjecturl鏈接獲取:object公共讀,那麽直接通過bucket域名/objectname 即可拼接得到url;object私有,那麽客戶的web 站點得集成OSS的SDK或者API動態更新對應資源的url鏈接:簽名URL獲取 ;

缺陷:OSS目前還不支持安全防護功能,如果存在惡意客戶刷取客戶靜態資源,可能會產生大流量費用,但是OSS結合阿裏雲安全產品可以進行安全防護,詳細看OSS異常流量排查及防護;

2) WEB端反向代理應用OSS資源

客戶可以將站點中靜態資源對應的域名綁定bucket,將對應的靜態資源目錄反向代理到OSS上,訪問oss的資源;

I) 為bucket綁定靜態資源域名,靜態域名仍然解析至站點服務器端,bucket綁定域名;

II) 在web 站點服務器上進行反向代理配置,將靜態目錄反向代理到oss上,應用OSS資源,如果對應的web 站點服務器是ECS,並且與OSS同區域,那麽反向代理的OSS域名可以是內網域名。

缺陷:Web端訪問靜態資源的速度及並發數限制取決於代理服務器的性能、帶寬及nginx服務器的並發數限制;該配置用戶可以在代理服務器上做相關的安全策略,可以規避一定的惡意客戶刷流量行為。

3) WEB服務器通過OSSfs掛載應用OSS資源(不推薦)

客戶Web端不做任何的改造,Web服務器直接通過ossfs掛載bucket,Web訪問的資源直接訪問掛載目錄的資源;

缺陷:ossfs掛載資源性能相對較差,並且ossfs 掛載bucket的穩定性客戶得業務端設置對應的監控保證掛載正常,故不推薦使用。


【OSS最佳實踐】WEB站點中如何應用OSS產品