1. 程式人生 > 其它 >無法從cdn上下載節目表問題處理

無法從cdn上下載節目表問題處理

無法從cdn上下載節目表   話說有個專案5月底合同到期,需要將該專案轉交回原廠,以後不由我們代維了。整個專案由:nginx+tomcat+mysql+oss+cdn+redis 服務組成。大家應該有看過網點資訊屏吧,眼看手勿動那種,這種資訊屏只需要從cdn拉播放節目下來,就能不停地輪轉播放。這個交接的專案就是類似這樣的。   交接工作需要原廠自己買回裝置,然後在他們的裝置上部署好這個資訊屏的服務端,我們叫管理後臺,用來給管理人員上傳節目表的,然後網點會有一個硬體叫“盒子"的東西,裝上安卓app,就能拉取節目表播放了。   至於我們公司的原裝置裝有的後臺,到時過期就不再續費了。   早幾天,我對著我們公司的伺服器、資料庫、oss等,在他們購買的裝置上依葫蘆畫瓢地遷移過去。這兩天測試人員有空幫忙測試這個新地址(公網ip+埠臨時訪問),發現下載節目單失敗。   這個失敗比較大件事,不僅在公司的後臺不行,客戶裝置的也不行。因為需要天天發節目單播新節目,所以今天開完早會,我就被我們經理拉去排查問題,三個人並排坐著(因為工位不在測試人員那邊,經理用一臺筆記本遠端到我辦公檯式電腦,整個排查都在筆記本上,真心難用),幸好10點半前完美解決,才沒有耽誤我後面文章的:skywalking接入java客戶端的研究。   老實說,節目下載不了是我遷移過程中自挖的坑,當時遷移在客戶裝置配置cdn加速oss源站域名的時候,為了省事,想用回原來的cdn加速域名:cdn.test.cn,但是公司cdn加速域名已經用了,不能在客戶裝置上新建個一樣的名字,於是我就刪掉公司的域名配置,這樣就能在客戶裝置上配一條一摸一樣的CNAME解析

  

一、問題描述   這樣配置會出現什麼問題?當時我們還是用回公司裝置部署的後臺(域名訪問方式)進行排查,經確認測試,管理後臺上傳的檔案,能在公司裝置的oss物件儲存找到,而在客戶裝置的oss找不到。最終發現,cdn加速oss源站域名後,盒子下載檔案這條線路有問題。   為了統一起來,乾脆域名訪問的指向從公司裝置改回到客戶裝置,因為最終交付也是這樣的,而且現在兩個後臺都使用不了,統一起來便於問題排查。   二、問題解決   當時經理一直從客戶裝置的阿里雲賬號,cdn管理控制檯排查問題,排查過程中吐槽了我好幾次刪掉原配置CNAME記錄,害他沒得參考怎麼配回來的 = =。皆因這專案是一個2年前已經跑路的開發配的,那會我還記得給了阿里雲登入賬號密碼給他自己搞,現在好了,大家都不知道。   幸好整個解決過程中,我也貢獻了不少偵查及僥倖力量,都算是將功補過,哈哈哈~~~~   僥倖體現在
:一開始,經理在檢查上傳的檔案,究竟傳到公司裝置的oss還是客戶端的裝置時,曾經在阿里的oss上一頁頁翻著查目標檔案,用過阿里oss都知道,oss查詢不是一般的水:無法通過檔案最新上傳時間去查,而且,我們上傳的節目單還會以時間戳命名的形式存到oss上,當時經理還沒想到用時間戳去轉換今天時間的方式,我只提議說,乾脆掛載到伺服器上查好過。掛載的時候,曾經有個報錯說無法掛載(其實是配置賬號訪問資訊檔案:/etc/passwd-ossfs沒寫好),誤打誤撞,剛好看到要掛載的bucket讀寫許可權設定為私有,並不是公有讀,我就說需要臨時改下許可權,於是就從“私有”改成“公有讀”,剛好這樣一改:cdn.test.cn/檔名  可以直接在瀏覽器開啟,那個盒子竟然成功下載了節目單(突然覺得今天運氣是開掛了,或者仙人保佑我不要丟掉這份工)   但這不是想要的效果呀,萬一被人知道了這個地址去攻擊,就完蛋了。所以問題歸結成:需要弄好cdn的鑑權
       登入阿里雲,依次進入:CDN ——》訪問控制 ——》 URL 鑑權   如下圖:      當時我們經理一直在下面“生成鑑權URL”這裡配置,說配了好幾次給他清掉了,最後還是在“修改配置”那裡加的(一旁的我,又默默聽著他吐槽阿里的非人性話設定),主KEY要跟程式碼的 cdn.primaryKey 對應上:   這個配置好還沒行,ram的訪問控制也要改。

  訪問控制 ——》 許可權 ——》 AliyunCDNAccessingPrivateOSSRole ——》 信任策略管理

{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "cdn.aliyuncs.com"
        ]
      }
    }
  ],
  "Version": "1"
}

   最後把oss的bucket從公共讀,改回到私有,盒子終於可以正常下載節目。

  瀏覽器開啟:http://cdn.test.cn/檔名 返回應為403

   最終問題完美解決。。。需要搞清楚的是,上面截圖的oss配置那塊,主要為了利用sts臨時訪問憑證訪問oss:https://help.aliyun.com/document_detail/100624.html。下面cdn配置則是為了下載節目播放的。