對於付不起錢的小伙計,為了給公司省錢,想盡一切招數。今天就來分享一個使用阿里雲OSS存儲搭配CDN使用的網站服務器部署方法。
簡介
阿里雲OSS
阿里雲提供的一種文件存儲方案,和我們以前接觸的百度雲BCS和新浪雲的Storage是一個道理,即文件的雲端存儲方案。一般而言,OSS只存儲網站所需要的靜態文件,而不存儲程序文件。例如將網站的圖片、視頻、腳本、樣式等文件存儲在OSS,同時,OSS實際上有點類似我們以前使用的第三方服務商提供的相冊,OSS上的文件,阿里雲會給一個url讓你可以直接使用。在依托OSS在windows或mac上的客戶端,管理OSS上的附件資源也很方便。總之,OSS是幫助網站存儲文件的一項服務。
我們已經有自己的服務器了,為什么還要將文件傳到OSS上,然后通過阿里雲提供的url來使用附件呢?實際上我們現在的服務端開發工作中,一定要有雲的概念,即我們在搭建服務器環境,設計服務端架構的時候,必須以雲計算出發去設計和實施。這是我們這幾年來服務端發展的結果。(當然,如果一個網站實在太小了,沒多少人訪問,也可以忽視。)將網站運行在ECS(雲服務器)上,同時,把一些大塊的文件(圖片、視頻)放在OSS,可以有效的降低訪客訪問(下載)這些文件時,對服務器帶來的IO壓力,讓服務器運行起來更加流暢。這是我們使用OSS服務的最根本原因。除此之外,使用OSS還可以加快附件的傳輸速度,用戶可以明顯感覺圖片、視頻加載變快,結合CDN,可以在文件的訪問路徑上進一步優化。相對於通過加服務器的存儲空間的話費,使用OSS還可以省錢。
CDN的作用
CDN這個詞應該很多人都略知一二。我們就不解釋其運作原理,直接說它都有什么好處。CDN通過網絡途徑,直接解決了網絡訪問不暢的問題。在使用CDN之前,你直接將域名解析到你的服務器,一個用戶訪問你的網站必須通過自家路由器,再到區域電信運營商,再到主干網,再通過網絡路由、DNS找到你的服務器,再把需要的資源下載到瀏覽器進行展示。中間任何一個環節的網絡不好,都會導致網站訪問變慢,甚至訪問失敗。而使用CDN之后,你把域名解析到CDN提供的一個中間地址,再再CDN服務商處設置你的服務器真實IP。當用戶訪問你的網站的時候,CDN服務商把你的網站資源緩存在自己的服務器上,並把距離訪客最近服務器上的緩存返回給訪客,這樣直接加快了網站的訪問速度。在七牛提供的服務中,我們遇到過一個詞,叫“鏡像”,把你的網站鏡像到七牛,實際上,這個過程就是CDN了,所以,這里的鏡像等於CDN。
除了上述的主要功能外,CDN近年來還增加智能解析、SEO、防DDOS等服務。所以,現在的網站,不用CDN,都不好意思說自己的網站多牛逼。
1.通過內網獲取OSS中的文件在外網中返回
在OSS的收費策略中,存儲、外網訪問、API調用這三項都要收費,其中外網訪問的費用還挺高。CDN也要收費,OSS外網訪問也要收費,總之阿里雲是賺翻了。但是,在OSS的收費策略中注明了:內網訪問免費。也就是說,如果我們的使用阿里雲的ECS通過內網去請求OSS中的資源,是不收費的。所以,我們現在要解決的問題就是,通過內網去請求的資源,怎么在外網中返回給訪客呢?
服務器和OSS Bucket必須在同一區域
這是一個前提條件,也就是要構建“內網”這個組合。如果你的網站服務器購買的是杭州的,在創建Bucket的時候,就要選擇杭州,如果是深圳的服務器,創建時就要選擇深圳的。
使用ningx的代理設置
nginx除了作為web服務器之外,另外一個重大功能就是作為代理服務器。這種輕便又多功能的特性,應該是nginx身上最大的閃光點了。那么怎么來實現這種代理呢?其實很簡單。
打開你的nginx的配置文件,例如nginx.conf,如果你對這個配置文件已經有一定的了解,那么應該可以很容易區分http和server兩個區塊的區別。我們要做的,是在其中一個server中增加一些配置項。具體是哪一個server,就看你綁定域名的時候是怎么安排的。總之,核心的配置如下:
server { listen 80; server_name oss.test.com; index index.html index.htm index.php; root /data/wwwroot/test/uploads/; location / { expires 3d; #緩存3天 rewrite /(.+)$ /$1 break; #用rewrite進行url重寫,使用戶訪問的url后綴,也傳遞到OSS上。 proxy_pass http://test.oss-cn-shenzhen-internal.aliyuncs.com; #反向代理,填寫Bucket的內網訪問域名,如果ECS實例與Bucket不在同一個地域,需填寫外網域名; } }
紅色的字體是需要新增的配置,上面藍色的字體,需要在OSS Bucket概覽頁獲取,修改nginx的配置之后,reload服務。
配置好后檢測nginx配置是否有誤,然后重啟nginx。重啟后直接查看效果
nginx -t
service nginx restart;
2.部署CDN提速網站
為了省錢我們可以考慮去使用一些效果還可以但免費的CDN(或者收費很便宜的也行)。CDN的部署很簡單,我們先注冊一個CDN,將上面解析到服務器IP的static域名重新解析到CDN服務商提供的地址,再在CDN后台將源地址IP設置為我們自己的服務器IP。這樣就輕松搞定。
