首頁 > 運維 > Nginx > 主體

Nginx動靜分離配置怎麼實現

PHPz
發布: 2023-05-12 21:25:04
轉載
1907 人瀏覽過

一、概述​​

1.1 動態頁面與靜態頁面差異

  • # 靜態資源: 當使用者多次造訪這個資源,資源的原始碼永遠不會改變的資源。

  • 動態資源:當使用者多次存取這個資源,資源的原始程式碼可能會發送變更。

1.2 什麼是動靜分離

  • #動靜分離是讓動態網站裡的動態網頁依照某一規則把不變的資源和常變的資源區分開來,動靜資源做好了拆分以後,我們就可以根據靜態資源的特徵將其做緩存操作,這就是網站靜態化處理的核心思路

  • 動靜分離簡單的概括是:動態文件與靜態文件的分離。

  • 偽靜態:網站如果想被搜尋引擎搜素到,動態頁面靜態技術freemarker等模版引擎技術

1.3 為什麼要用動靜分離

  • 在我們的軟體開發中,有些請求是需要後台處理的(如:.jsp,.do等等),有些請求是不需要經過後台處理的(如:css、html、jpg、js等等文件),這些不需要經過背景處理的文件稱為靜態文件,否則動態文件。因此我們後台處理忽略靜態文件。這會有人又說那我後台忽略靜態檔不就完了嗎。當然這是可以的,但是這樣後台的請求次數就明顯增加了。在我們對資源的反應速度有要求的時候,我們應該使用這種動靜分離的策略來解決。

  • 動靜分離將網站靜態資源(HTML,JavaScript,CSS,img等檔案)與後台應用程式分開部署,提高使用者存取靜態程式碼的速度,降低對後台應用程式存取。這裡我們將靜態資源放到nginx中,動態資源轉送到tomcat伺服器中。

  • 因此,動態資源轉送到tomcat伺服器我們就使用到了前面講到的反向代理了。

二、Nginx實作動靜分離

2.1 架構分析

Nginx動靜分離配置怎麼實現

2.2 設定

#動靜分離的原理很簡單,透過location對請求url進行比對即可,在/Users/Hao/Desktop/Test(任意目錄)下建立 /static/imgs 設定如下:  

###静态资源访问
server {
  listen       80;
  server_name  static.jb51.com;
  location /static/imgs {
       root /Users/Hao/Desktop/Test;
       index  index.html index.htm;
   }
}
###动态资源访问
 server {
  listen       80;
  server_name  www.jb51.com;
    
  location / {
    proxy_pass http://127.0.0.1:8080;
     index  index.html index.htm;
   }
}
登入後複製

別一種按存取資源配置

server {
        listen 80;
        server_name  jb51.net;
        access_log  /data/nginx/logs/jb51.net-access.log main;
        error_log  /data/nginx/logs/jb51.net-error.log;
 
        #动态访问请求转给tomcat应用处理
        location ~ .(jsp|page|do)?$ {      #以这些文件结尾的
           proxy_set_header  Host $host;
           proxy_set_header  X-Real-IP  $remote_addr;
           proxy_pass http://tomcat地址;
        }
 
        #设定访问静态文件直接读取不经过tomcat
        location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$  {     #以这些文件结尾的
           expires      30d;
           root /data/web/html ;
        }
}
登入後複製

三、動靜分離與前後分離區別:

  • ##動靜分離動態資源與靜態資源分離,不會部署在同一台伺服器上。

  • 前後分離:網站架構模式,微服務開發基於

    SOA面向伺服器開發,後台和前端都採用呼叫介面方式。將一個專案拆分成一個控制Web(前端)和介面(後端),最終使用rpc遠端呼叫技術。視圖層與業務邏輯層拆分,中間採用RPC遠端呼叫技術

#四、一些問題

  • 為什麼在網路公司專案中,靜態資源

    url後面會加上一個時間戳?他的作用:控制快取

    • 目的:最終的目的是為了控制專案上線的時候,薪資靜態資源與舊的瀏覽器快取靜態資源避免衝突問題。

    • 解決方法:加上時間戳規格t = 專案上線

  • #304走本機快取狀態碼原則:

    • 預設瀏覽器圖片快取是7天。

    • 第一次下載資源的時候,客戶端保存修改資源時間

    • #第二次下載資源的時候,服務端判斷客戶端上一次修改的時間是否需回傳200還是304

    • 第二次下載資源的時候,服務端判斷目前資源檔案與客戶端上一次修改的時間是否需回傳200還是304客戶端第二次下載資源最後修改時間2018/6/28 下午11:07:11

    • 服務端最後一次修改時間大於客戶端最後一次修改的時間200重新載入資源

    • 伺服器端最後一次修改的時間小於客戶端最後修改的時間回傳304走本機快取

    ##生產環境中js css最後一次的修改時間與客戶端快取的最後一次修改的時間可能會產生
衝突。伺服器在2018年5月22日上線,用戶在2018年6月01日訪問,用戶上線新js檔案在2018年06月5日最後一次修改時間還是保留上次上線時間。所以一般來說在伺服器上線的時候,都會在靜態資源上加上時間戳記 強制最新的資源

以上是Nginx動靜分離配置怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!