Nginx 動靜分離簡單來說就是把動态跟靜态請求分開,不能了解成隻是單純的把動态頁面和靜态頁面實體分離。嚴格意義上說應該是動态請求跟靜态請求分開,可以了解成使用Nginx 處理靜态頁面,Tomcat、 Resin 出來動态頁面。動靜分離從目前實作角度來講大緻分為兩種,
一種是純粹把靜态檔案獨立成單獨的域名,放在獨立的伺服器上,也是目前主流推崇的方案;
另外一種方法就是動态跟靜态檔案混合在一起釋出,通過 nginx 來分開。這樣也是本次課程要講解的,具體怎麼來實作呢,
通過 location 指定不同的字尾名實作不同的請求轉發。通過 expires 參數設定,可以使浏覽器緩存過期時間,減少與伺服器之前的請求和流量。具體 Expires 定義:是給一個資源設定一個過期時間,也就是說無需去服務端驗證,直接通過浏覽器自身确認是否過期即可,是以不會産生額外的流量。此種方法非常适合不經常變動的資源。(如果經常更新的檔案,不建議使用 Expires 來緩存),我這裡設定 3d,表示在這 3 天之内通路這個 URL,發送一個請求,比對伺服器該檔案最後更新時間沒有變化,則不會從伺服器抓取,傳回狀态碼 304,如果有修改,則直接從伺服器重新下載下傳,傳回狀态碼 200。
二、例子在 nginx-1.13.0.tar.gz下測試
項目
靜态檔案路徑
配置檔案
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;
}
測試
通路靜态檔案
再次通路
狀态為304
最後檢查 Nginx 配置是否正确即可,然後測試動靜分離是否成功,之需要删除後端tomcat 伺服器上的某個靜态檔案,檢視是否能通路,如果可以通路說明靜态資源 nginx 直接傳回了,不走後端 tomcat 伺服器