天天看點

Nginx 動靜分離架構(學習筆記九)

一、原理

Nginx 動靜分離簡單來說就是把動态跟靜态請求分開,不能了解成隻是單純的把動态頁面和靜态頁面實體分離。嚴格意義上說應該是動态請求跟靜态請求分開,可以了解成使用Nginx 處理靜态頁面,Tomcat、 Resin 出來動态頁面。動靜分離從目前實作角度來講大緻分為兩種,

一種是純粹把靜态檔案獨立成單獨的域名,放在獨立的伺服器上,也是目前主流推崇的方案;

另外一種方法就是動态跟靜态檔案混合在一起釋出,通過 nginx 來分開。這樣也是本次課程要講解的,具體怎麼來實作呢,

通過 location 指定不同的字尾名實作不同的請求轉發。通過 expires 參數設定,可以使浏覽器緩存過期時間,減少與伺服器之前的請求和流量。具體 Expires 定義:是給一個資源設定一個過期時間,也就是說無需去服務端驗證,直接通過浏覽器自身确認是否過期即可,是以不會産生額外的流量。此種方法非常适合不經常變動的資源。(如果經常更新的檔案,不建議使用 Expires 來緩存),我這裡設定 3d,表示在這 3 天之内通路這個 URL,發送一個請求,比對伺服器該檔案最後更新時間沒有變化,則不會從伺服器抓取,傳回狀态碼 304,如果有修改,則直接從伺服器重新下載下傳,傳回狀态碼 200。

二、例子

在 nginx-1.13.0.tar.gz下測試

項目

Nginx 動靜分離架構(學習筆記九)

靜态檔案路徑

Nginx 動靜分離架構(學習筆記九)

配置檔案

server {

        listen      80;

        server_name  a;

        location /t1

        { 

        proxy_pass http://192.168.56.90:8180/t1;

        } 

        location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$

        root /usr/local/tomcat/apache-tomcat-7.0.70-8180/webapps/;

        expires 30d;

    }

測試

通路靜态檔案

Nginx 動靜分離架構(學習筆記九)

再次通路

Nginx 動靜分離架構(學習筆記九)

狀态為304

最後檢查 Nginx 配置是否正确即可,然後測試動靜分離是否成功,之需要删除後端tomcat 伺服器上的某個靜态檔案,檢視是否能通路,如果可以通路說明靜态資源 nginx 直接傳回了,不走後端 tomcat 伺服器 

繼續閱讀