nginx使用詳解--動靜分離

什么是動靜分離?

為了提高網站的響應速度,減輕程序服務器(Tomcat,Jboss等)的負載,對于靜態資源,如圖片、js、css等文件,可以在反向代理服務器中進行緩存,這樣瀏覽器在請求一個靜態資源時,代理服務器就可以直接處理,而不用將請求轉發給后端服務器。對于用戶請求的動態文件,如servlet、jsp,則轉發給Tomcat,Jboss服務器處理,這就是動靜分離。即動態文件與靜態文件的分離。

動靜分離可通過location對請求url進行匹配,將網站靜態資源(HTML,JavaScript,CSS,img等文件)與后臺應用分開部署,提高用戶訪問靜態代碼的速度,降低對后臺應用訪問。通常將靜態資源放到nginx中,動態資源轉發到tomcat服務器中。
在這里插入圖片描述

靜態頁面

靜態頁面:是一個頁面對應一個內容,也就是一對一的關系,在互聯網架構中,頁面幾乎為不變的或者是頁面發生變化頻率較低的。比如:html 頁面,js/css 樣式文件等;
與其匹配的技術架構來加速。比如:Squid、Nginx、CDN,而靜態頁面最大的優點:速度快、跨平臺、跨服務器。
無論如何訪問都只是讓服務器傳數據給請求端,并不做腳本計算及讀取后臺數據庫,提高訪問速度及降低了部分安全隱患。
采用靜態頁面的方法:可將數據庫及后臺系統與前臺進行劃分,兩者間沒有絕對的聯系,從而提高站點安全。
靜態頁面的特點

每個網頁都有一個固定的 URL,且網頁URL以.htm、.html、.shtml等常見形式為后綴,而不含有 ?;
網頁內容發布到網站服務器上,無論是否有用戶訪問,每個靜態網頁的內容都將保存在網站服務器上,也就是說,保存在服務器上的文件,每個網頁都是一個獨立的文件;
內容相對穩定,容易被搜索引擎所檢索; 沒數據庫的支持,網站制作和維護方面工作量大,當網站信息量很大時,完全依靠靜態網頁制作方式較困難;
交互性較差,功能方面有較大的限制; 運行數據快;

在這里插入圖片描述

動態頁面

動態頁面:是一對多訪問,通過一個頁面可以根據若干參數返回其不同的數據,在互聯網架構中,不同的用戶訪問不同的動態場景頁面請求,都可能是不一樣的頁面。比如:淘寶京東商品列表頁面、百度搜索引擎結果頁面等;
動態頁面,與其之匹配的技術架構,比如:分層架構、服務化架構、數據庫、緩存架構;
動態頁面的特點
在這里插入圖片描述

以數據庫技術為基礎,可大大降低網站維護的工作量;
采用動態網頁技術的網站可以實現更多的功能;
不是獨立存在于服務器上的網頁文件,只有當用戶請求時服務器才返回一個完整的網頁;
在進行搜索引擎推廣時需做一定的技術處理才能夠適應搜索引擎的要求;

怎么實現動靜分離

動靜分離是指:靜態頁面與動態頁面分開不同系統訪問的架構設計方法。
靜態頁面:訪問路徑短,速度快,幾毫秒;
動態頁面:訪問路徑長,速度慢,幾十毫秒甚至幾百毫秒,架構擴展性要求高;

實現方式主要有兩種,一種 是純粹把靜態文件獨立成單獨的域名,放在獨立的服務器上,也是目前主流推崇的方案。另外一種方法就是動態跟靜態文件混合在一起發布, 通過 Nginx 配置來分開 分別解釋這兩種方式:

1)獨立域名方式

這種方式是將靜態文件獨立成單獨的域名,并將其放置在獨立的服務器上:

靜態文件:您可以將靜態文件(例如HTML、CSS、JavaScript和圖像文件)存放在一個獨立的域名下,例如static.yourdomain.com。
獨立服務器:您可以將這個靜態文件域名指向一個專用的靜態文件服務器。這個服務器的配置和優化可以專門用于提供靜態文件,例如啟用緩存和壓縮等。
動態請求:動態請求(例如API請求、數據庫查詢等)仍然由主域名處理,并被轉發給后端服務器進行處理。

2)Nginx配置方式

這種方式是將動態和靜態文件混合在一起發布,并通過Nginx的配置來區分和處理它們。以下是對該方式的詳細解釋:

Nginx配置:使用Nginx的配置文件來定義靜態文件和動態請求的處理規則。通過使用location塊和相關指令,您可以將靜態文件和動態請求分別指定給不同的處理方式。
靜態文件:在Nginx的配置中,使用root或alias指令指定靜態文件的路徑。這樣,Nginx會直接從文件系統中提供靜態文件的內容,而不需要將請求轉發給后端服務器。
動態請求:對于動態請求,使用proxy_pass指令將請求轉發給后端的應用服務器。這樣,Nginx充當了反向代理的角色,將請求轉發給后端服務器進行處理和生成動態內容。
在這里插入圖片描述

動靜分離實操案例

文件路徑實現動靜分離

1.在Nginx服務器環境下,準備靜態資源,用于訪問,在根目錄下創建data目錄,并在該目錄里面創建兩個文件夾image、www,在image文件夾里上傳一張本地圖片,www文件夾里創建一個html文件

# cd /data/
# ll
總用量 8
drwxr-xr-x. 2 root root 4096 3月  29 19:14 image
drwxr-xr-x. 2 root root 4096 3月  29 19:13 www# cd image/
# ls
游戲.jpg# cd ../www/
# ls
20200331.html
# cat 20200331.html 
<h1>This is a static page!</h1>

2、 修改nginx.conf配置文件
添加監聽端口、訪問名字、重點添加location。

# vim /usr/local/nginx/conf/nginx.conf39     server {40         listen       80;41         server_name  192.168.1.10;42 43         #charset koi8-r;44 45         #access_log  logs/host.access.log  main;46 47         location /www/ {48         #    proxy_pass http://myserver;49             root   /data/;50             index  index.html index.htm;51         }52         location /image/ {53             root /data/;54             autoindex  on;55         }

3、 重啟Nginx服務

nginx -s reload

4、 驗證效果
在客戶端瀏覽器中輸入:http://192.168.1.10/image/和http://192.168.1.10/www/20200331.html分別進行測試動靜分離是否成功,刪除后端tomcat服務器上的某個靜態文件,查看是否能訪問,如果可以訪問說明靜態資源Nginx直接返回了,無須在通過后端Tomcat服務器;

文件后綴實現動靜分離

配置image、js、css等資源文件的路徑和地址,然后設置緩存失效的時間

worker_processes  1;events {worker_connections  1024;
}http {server {listen       80;server_name  localhost;#攔截后臺請求location / {proxy_pass http://localhost:81;proxy_set_header X-Real-IP $remote_addr;}#攔截靜態資源location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {root static;expires      30d;  }}}

參考鏈接:
https://juejin.cn/post/6969704204285771807
https://www.cnblogs.com/itzgr/p/13335271.html#_label1

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712138.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712138.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712138.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何選擇激活函數?

選擇神經網絡的激活函數是一個重要的決策&#xff0c;因為激活函數的選擇會影響到網絡的收斂速度以及能否有效地訓練。不同的激活函數適用于不同的任務和網絡架構。以下是選擇激活函數時可以考慮的一些指導原則和常用的激活函數&#xff1a; 指導原則 問題類型&#xff1a; 二…

LLM小記

RAG 參考 檢索增強生成(RAG)概念及優化 主流模型 llama系列 1. 背景&#xff1a;模型參數量級的積累&#xff0c;或者訓練數據的增加&#xff0c;哪個對性能提升幫助更大&#xff1f; 最近的 “Training Compute-Optimal Large Language Models” 這篇論文提出一種縮放定…

Java:PDF圖片抽取的兩種方法

圖片和PDF是我們日常生活和工作中經常接觸到的文檔格式。PDF是人們日常使用最多的跨平臺文檔&#xff0c;是一種用獨立于應用程序、硬件、操作系統的方式呈現文檔的文件格式。每個PDF文件包含固定布局的平面文檔的完整描述&#xff0c;包括文本、字形、圖形及其他需要顯示的信息…

如何利用HubSpot海外獲客系統實現海外市場擴張?

在當今全球化的時代&#xff0c;企業面臨著越來越激烈的競爭&#xff0c;而海外市場則被視為獲取更多增長機會的重要途徑之一。針對這一挑戰&#xff0c;企業需要建立一個完整的海外獲客系統&#xff0c;而HubSpot軟件的應用則成為了關鍵。作為HubSpot的合作伙伴&#xff0c;我…

librtmp源碼分析

閱讀了librtmp的源碼&#xff0c;簡單記錄下。 首先補充下AMF格式基本知識 1 AMF格式 AMF是Action Message Format(動作消息格式)的簡寫&#xff0c;它是一種二進制的數據格式。它的設計是為了把actionscript里面的數據(包括Object, Array, Boolean, Number等)序列化成二進制…

jvm 基礎知識和jvm 調優

類裝載分為以下 5 個步驟&#xff1a; 加載&#xff1a;根據查找路徑找到相應的 class 文件然后導入&#xff1b; 檢查&#xff1a;檢查加載的 class 文件的正確性&#xff1b; 準備&#xff1a;給類中的靜態變量分配內存空間&#xff1b; 解析&#xff1a;虛擬機將常量池中的符…

C# 異步返回類型詳解

在現代軟件開發中&#xff0c;異步編程已經成為一種重要的編程范式&#xff0c;尤其是在需要與I/O密集型操作交互的上下文中&#xff0c;比如網絡請求、數據庫操作等。C# 語言提供了強大的異步支持&#xff0c;使得異步編程變得更加簡單和直觀。本文將詳細介紹C#中異步返回類型…

vue3學習 【5】watch的使用

什么是watch 當我們需要根據一個數據的變化來進行一些操作的時候我們需要使用偵聽器&#xff0c;它能夠在響應式數據發生變化的時候觸發提供的回調函數 基礎偵聽 watch 可以偵聽不同的數據源。例如&#xff1a; ref計算屬性響應式對象getter函數多個數據源組層的數據 cons…

20240229金融讀報:央行阿拉善創新融資模式與碳排放權交易條例實施,新春政策聚焦新生產力及金融風險防范

1、人民銀行阿拉善盟分行實例&#xff1a;再貸款產業鏈&#xff08;活體牲畜抵押貸款牲畜死亡率保險&#xff09;、“再貸款新型農牧業經營主體”&#xff08;基礎設施薄弱、產業結構單一&#xff0c;籌集資金創辦嘎查集體經濟股份合作社貸款&#xff09; 2、建設銀行實例&…

oracle11安裝及使用

安裝oracle11 官網下載地址 Oracle Database 11g Release 2 for Microsoft Windows (x64) 官網下載慢可訪問我的資源 也可以網盤獲取 鏈接&#xff1a;https://pan.baidu.com/s/1RDrGkqDA7tfKRnpJXUBMDw 提取碼&#xff1a;z3na 上傳安裝包到服務器 在指定目錄下創建文件…

adb命令

1. 常用命令&#xff1a; adb devices #查看連接設備adb -s cf27456f shell # 指定連接設備使用命令adb install test.apk # 安裝應用adb install -r demo.apk #安裝apk 到sd 卡&#xff1a;adb uninstall cn.com.test.mobile #卸載應用&#xff0c;需要指定包adb uninstall -…

Windows系統x86機器安裝龍芯(loongarch64)3A5000虛擬機系統詳細教程

本次介紹在window系統x86機器上安裝loongarch64系統的詳細教程。 1.安裝環境準備。 首先&#xff0c;你得有臺電腦。 配置別太差&#xff0c;至少4核8G內存&#xff0c;安裝window10或者11都行&#xff08;為啥不能是Window7&#xff0c;你要用也不是不行&#xff0c;你先解決…

leetcode:860.檸檬水找零

題意&#xff1a;按照支付順序&#xff0c;進行支付&#xff0c;能夠正確找零。 解題思路&#xff1a;貪心策略&#xff1a;針對支付20的客人&#xff0c;優先選擇消耗10而不是消耗5&#xff0c;因為5可以用來找零10或20. 代碼實現&#xff1a;有三種情況&#xff08;代表三種…

vscode中使用python的cv2.imread()讀取圖片為None

這是之前的代碼&#xff1a; import cv2img_path c:\\Users\\LENOVO\\Desktop\\QQ截圖20240228234801.jpg print(img_path) print(cv2.__version__)img cv2.imread(img_path) print(img)運行結果&#xff1a; c:\Users\LENOVO\Desktop\QQ截圖20240228234801.jpg 3.4.1 None…

Linux下主線程 return 0 和 pthread_exit(NULL) 的區別

1. 背景 在Linux環境下&#xff0c;主線程以return 0結束時&#xff0c;程序會在主線程運行完畢后結束。而當主線程以pthread_exit(NULL)作為返回值時&#xff0c;主線程會等待子線程結束后才會退出程序。本文將詳細探討這兩種方式的區別&#xff0c;并提供相應的代碼示例。 …

String類的使用

String常用的構造方法 String的源碼 內部是一個數組和hash值&#xff0c;涉及到常量池后續補充&#xff08;常量池&#xff1a;存儲相同的字符時只會存儲一租&#xff09; String的比較 equals()與&#xff1a;String里面為我們提供了許多方法&#xff0c;可直接調用&#xf…

2024最新-ubuntu22.04安裝最新版QT6.6~6.8教程

? 1. 在官網下載 online_installer&#xff1a; https://download.qt.io/archive/online_installers/4.7/qt-unified-linux-x64-4.7.0-online.run 或者直接鏡像站下載&#xff1a; http://mirrors.ustc.edu.cn/qtproject/archive/online_installers/4.7/qt-unified-linux-x6…

數據結構之二叉樹的精講

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;???????&#x1f44f;&#x1f3fb;??????? &#x1f44f;&#x1f3fb;?????:Solitary_walk ?? ━━━┓ - 個性標簽 - &#xff1a;來于“云”的“羽球人”。…

蘋果汽車項目的敗局:起步失誤與方向迷茫

蘋果汽車的發展方向內部分歧導致項目多年掙扎&#xff0c;最終在本周宣布終止。 Brian X. Chen 和 Tripp Mickle 從項目初期就開始關注蘋果的汽車項目。 在過去十年中&#xff0c;許多參與蘋果秘密汽車項目“泰坦”&#xff08;內部代號&#xff09;的員工戲稱其為“泰坦尼克…

Python實現鏈表:從基礎到應用

一、引言 鏈表是一種常見的數據結構&#xff0c;它由一系列節點組成&#xff0c;每個節點包含數據和指向下一個節點的指針。鏈表在內存中的存儲不是連續的&#xff0c;這使得它在插入和刪除操作上具有較高的效率。本文將使用Python語言來實現一個簡單的鏈表&#xff0c;并展示其…