Nginx動(dòng)靜分離配置實(shí)現(xiàn)與說(shuō)明
一、概述
1.1 動(dòng)態(tài)頁(yè)面與靜態(tài)頁(yè)面區(qū)別
- 靜態(tài)資源: 當(dāng)用戶多次訪問(wèn)這個(gè)資源,資源的源代碼永遠(yuǎn)不會(huì)改變的資源。
- 動(dòng)態(tài)資源:當(dāng)用戶多次訪問(wèn)這個(gè)資源,資源的源代碼可能會(huì)發(fā)送改變。
1.2 什么是動(dòng)靜分離
- 動(dòng)靜分離是讓動(dòng)態(tài)網(wǎng)站里的動(dòng)態(tài)網(wǎng)頁(yè)根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開(kāi)來(lái),動(dòng)靜資源做好了拆分以后,我們就可以根據(jù)靜態(tài)資源的特點(diǎn)將其做緩存操作,這就是網(wǎng)站靜態(tài)化處理的核心思路
- 動(dòng)靜分離簡(jiǎn)單的概括是:動(dòng)態(tài)文件與靜態(tài)文件的分離。
- 偽靜態(tài):網(wǎng)站如果想被搜索引擎搜素到,動(dòng)態(tài)頁(yè)面靜態(tài)技術(shù)freemarker等模版引擎技術(shù)
1.3 為什么要用動(dòng)靜分離
- 在我們的軟件開(kāi)發(fā)中,有些請(qǐng)求是需要后臺(tái)處理的(如:.jsp,.do等等),有些請(qǐng)求是不需要經(jīng)過(guò)后臺(tái)處理的(如:css、html、jpg、js等等文件),這些不需要經(jīng)過(guò)后臺(tái)處理的文件稱為靜態(tài)文件,否則動(dòng)態(tài)文件。因此我們后臺(tái)處理忽略靜態(tài)文件。這會(huì)有人又說(shuō)那我后臺(tái)忽略靜態(tài)文件不就完了嗎。當(dāng)然這是可以的,但是這樣后臺(tái)的請(qǐng)求次數(shù)就明顯增多了。在我們對(duì)資源的響應(yīng)速度有要求的時(shí)候,我們應(yīng)該使用這種動(dòng)靜分離的策略去解決。
- 動(dòng)靜分離將網(wǎng)站靜態(tài)資源(HTML,JavaScript,CSS,img等文件)與后臺(tái)應(yīng)用分開(kāi)部署,提高用戶訪問(wèn)靜態(tài)代碼的速度,降低對(duì)后臺(tái)應(yīng)用訪問(wèn)。這里我們將靜態(tài)資源放到nginx中,動(dòng)態(tài)資源轉(zhuǎn)發(fā)到tomcat服務(wù)器中。
- 因此,動(dòng)態(tài)資源轉(zhuǎn)發(fā)到tomcat服務(wù)器我們就使用到了前面講到的反向代理了。
二、Nginx實(shí)現(xiàn)動(dòng)靜分離
2.1 架構(gòu)分析
2.2 配置
動(dòng)靜分離的原理很簡(jiǎn)單,通過(guò)location對(duì)請(qǐng)求url進(jìn)行匹配即可,在/Users/Hao/Desktop/Test(任意目錄)下創(chuàng)建 /static/imgs 配置如下:
###靜態(tài)資源訪問(wèn) server { listen 80; server_name static.jb51.com; location /static/imgs { root /Users/Hao/Desktop/Test; index index.html index.htm; } } ###動(dòng)態(tài)資源訪問(wèn) server { listen 80; server_name www.jb51.com; location / { proxy_pass http://127.0.0.1:8080; index index.html index.htm; } }
別一種按訪問(wèn)資源配置
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; #動(dòng)態(tài)訪問(wèn)請(qǐng)求轉(zhuǎn)給tomcat應(yīng)用處理 location ~ .(jsp|page|do)?$ { #以這些文件結(jié)尾的 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://tomcat地址; } #設(shè)定訪問(wèn)靜態(tài)文件直接讀取不經(jīng)過(guò)tomcat location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { #以這些文件結(jié)尾的 expires 30d; root /data/web/html ; } }
三、動(dòng)靜分離與前后分離區(qū)別:
- 動(dòng)靜分離動(dòng)態(tài)資源與靜態(tài)資源分離,不會(huì)部署在同一臺(tái)服務(wù)器上。
- 前后分離:網(wǎng)站架構(gòu)模式,微服務(wù)開(kāi)發(fā)基于
SOA
面向于服務(wù)器開(kāi)發(fā),后臺(tái)和前端都采用調(diào)用接口方式。將一個(gè)項(xiàng)目拆分成一個(gè)控制Web
(前端)和接口(后端),最終使用rpc遠(yuǎn)程調(diào)用技術(shù)。視圖層和業(yè)務(wù)邏輯層拆分,中間采用RPC
遠(yuǎn)程調(diào)用技術(shù)
四、一些問(wèn)題
- 為什么互聯(lián)網(wǎng)公司項(xiàng)目中,靜態(tài)資源
url
后面會(huì)加上一個(gè)時(shí)間戳?他的作用:控制緩存- 目的:最終的目的是為了控制項(xiàng)目上線的時(shí)候,薪靜態(tài)資源與老的瀏覽器緩存靜態(tài)資源避免沖突問(wèn)題。
- 解決辦法:加上時(shí)間戳規(guī)范t = 項(xiàng)目上線
- 304走本地緩存狀態(tài)碼原理:
- 默認(rèn)瀏覽器圖片緩存是7天。
- 第一次下載資源的時(shí)候,客戶端保存修改資源時(shí)間
- 第二次下載資源的時(shí)候,服務(wù)端判斷客戶端上一次修改的時(shí)間是否需返回200還是304
- 第二次下載資源的時(shí)候,服務(wù)端判斷當(dāng)前資源文件與客戶端上一次修改的時(shí)間是否需返回200還是304客戶端第二次下載資源最后修改時(shí)間 2018/6/28 下午11:07:11
- 服務(wù)端最后一次修改時(shí)間大于客戶端最后一次修改的時(shí)間200重 新加載資源
- 服務(wù)器端最后一次修改的時(shí)間小于客戶端最后修改的時(shí)間返回304走本地緩存
生產(chǎn)環(huán)境中js css最后一次的修改時(shí)間與客戶端緩存的最后一次修改的時(shí)間可能會(huì)產(chǎn)生
沖突。服務(wù)器在2018年5月22日上線,用戶在2018年6月01日訪問(wèn),用戶上線新js文件在2018年06月5日最后一次修改時(shí)間還是保留上次上線時(shí)間。所以一般來(lái)說(shuō)在服務(wù)器上線的時(shí)候,都會(huì)在靜態(tài)資源上加上時(shí)間戳 強(qiáng)制最新的資源
更多關(guān)于Nginx動(dòng)靜分離配置實(shí)現(xiàn)請(qǐng)查看下面的相關(guān)鏈接
- Nginx實(shí)現(xiàn)動(dòng)靜分離的示例代碼
- Nginx七層負(fù)載均衡之動(dòng)靜分離思路詳解
- nginx實(shí)現(xiàn)動(dòng)靜分離的案例詳解
- 關(guān)于Nginx動(dòng)靜分離詳解以及配置
- Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析
- 使用nginx實(shí)現(xiàn)動(dòng)靜分離
- Nginx+Tomcat負(fù)載均衡及動(dòng)靜分離群集的實(shí)現(xiàn)
- nginx實(shí)現(xiàn)動(dòng)靜分離的方法示例
- Nginx+Tomcat實(shí)現(xiàn)負(fù)載均衡、動(dòng)靜分離的原理解析
- Nginx動(dòng)靜分離實(shí)現(xiàn)案例代碼解析
- Nginx動(dòng)靜分離的示例代碼
相關(guān)文章
配置解決Nginx服務(wù)器中WordPress路徑不自動(dòng)加斜杠問(wèn)題
這篇文章主要介紹了配置解決Nginx服務(wù)器中WordPress路徑不自動(dòng)加斜杠問(wèn)題,nginx不會(huì)自動(dòng)在請(qǐng)求的最后加上一個(gè)斜線的問(wèn)題文中也有提到通用的規(guī)則改寫(xiě)方法,需要的朋友可以參考下2016-01-01Nginx搭建RTMP流媒體服務(wù)器的實(shí)現(xiàn)
本文主要介紹了Nginx搭建RTMP流媒體服務(wù)器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Nginx配置同一個(gè)域名同時(shí)支持http與https兩種方式訪問(wèn)實(shí)現(xiàn)
這篇文章主要介紹了Nginx配置同一個(gè)域名同時(shí)支持http與https兩種方式訪問(wèn)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08nginx外網(wǎng)訪問(wèn)內(nèi)網(wǎng)站點(diǎn)配置操作
這篇文章主要介紹了nginx外網(wǎng)訪問(wèn)內(nèi)網(wǎng)站點(diǎn)配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Nginx禁止IP訪問(wèn)只允許域名訪問(wèn)及防盜鏈設(shè)置
我們?cè)谑褂玫臅r(shí)候會(huì)遇到很多的惡意IP攻擊,這個(gè)時(shí)候就要用到Nginx 禁止IP訪問(wèn)了,本文主要介紹了Nginx禁止IP訪問(wèn)只允許域名訪問(wèn)及Nginx防盜鏈設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10Nginx安裝lua-nginx-module模塊的方法步驟
ngx_lua_module 是一個(gè)nginx http模塊,這篇文章主要介紹了Nginx安裝lua-nginx-module模塊的方法步驟,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-12-12Nginx常用配置以及代理轉(zhuǎn)發(fā)操作詳解
這篇文章主要給大家介紹了關(guān)于Nginx常用配置以及代理轉(zhuǎn)發(fā)的相關(guān)資料,nginx一般被用來(lái)做反向代理,將請(qǐng)求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器上,比如tomcat的應(yīng)用,需要的朋友可以參考下2023-09-09Windows系統(tǒng)下Nginx服務(wù)器的基本安裝和配置方法介紹
這篇文章主要介紹了Windows系統(tǒng)下Nginx服務(wù)器的基本安裝和配置方法,文中給出了一個(gè)配置文件的實(shí)例并作出了些說(shuō)明,需要的朋友可以參考下2015-12-12