Nginx -Web服務器/反向代理/負載均衡

文章目錄

  • 一、web服務
    • 1.1 nginx安裝
    • 1.2 配置文件
    • 1.3 Nginx處理Web機制
  • 二、反向代理
  • 三、負載均衡
    • 3.1 分類
    • 3.2 負載相關配置文件
    • 3.3 keepalive 提高吞吐量
    • 3.4 配置瀏覽器緩存
  • 附、JMeter性能測試工具


以賽促學內容,大概率感覺會使用nginx做web服務,特對nginx做總結歸納.

Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年發布至今,憑借開源的力量,已經接近成熟與完善。Nginx功能豐富,可作為HTTP服務器,也可作為反向代理服務器,郵件服務器。
官網:http://nginx.org/ https://github.com/nginx/nginx.org
在這里插入圖片描述

一、web服務

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
高可用 keepalived
在這里插入圖片描述在這里插入圖片描述

1.1 nginx安裝

# 查詢
nginx -v #安裝版本
dnf search  nginx
#安裝
dnf install nginx -y
# 查找配置文件
rpm -qa |grep nginx
rpm -qa |grep nginx
rpm -qc nginx-1.20.1-10.el9.x86_64
vim /etc/nginx/nginx.conf
#驗證配置文件,也顯示位置
nginx -t 
......
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
......
#啟動
systemctl enable --now nginx.service
systemctl status nginx.service
ss -ntlp |grep 80

安裝驗證
在這里插入圖片描述

在這里插入圖片描述

1.2 配置文件

在這里插入圖片描述

#備份配置文件
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
#重新配置文件
touch nginx.conf
vim nginx.conf
.........
# events 塊用于配置連接處理的設置。它通常位于 http 塊之外,
#但也可以放在 server 或 location 塊內。不寫會報錯.
events {
}http {server {listen 80;  #端口server_name localhost; #IP 域名root /usr/share/nginx/lih;# 根目錄 不寫則默認/usr/share/nginx/html;index haha.html;# 首頁 不寫則默認index}
}
.........
nginx -s reload # 重新加載配置文件,-s 發送命令.Nginx 會嘗試平滑地重啟工作進程.
nginx -t #用于檢查 Nginx 配置文件的語法是否正確

配置中http-server中的location有更復雜的配置。可有正在表達式~

#無參數是匹配root/app中的index文件location /app {root /usr/share/nginx/lih;}
#~正則表達式,制訪問6-9的文件,可將root路徑提出。root /var/www/localhost;location ~ /files/file[6-9].file{           }
# 307 重新定向 訪問temp自動到/app/haha.htmlroot /var/www/localhost;          location /temp{return 307 /app/haha.html;}
# 精確匹配location =/temp{root /var/www/localhost;}

在這里插入圖片描述

  # 增加不同的服務端口89server {listen 89;server_name localhost;#默認#root /usr/share/nginx/html下的index.htmllocation /app {root /usr/share/nginx/lih2;# index默認是app里的index.html}}# 增加不同的服務端口90server {listen 90;server_name localhost;location /views {root /opt/RuoYi-Vue/ruoyi-ui/src;#程序文件index index.vue;# vue的文件架構還需研究下}#和上面效果一樣 使用alias別名,隱去路徑。location /static {alias /opt/RuoYi-Vue/ruoyi-ui/src/views;index index.vue;}}

1.3 Nginx處理Web機制

在這里插入圖片描述
異步,多路復用。
在這里插入圖片描述
配置文件中的events 塊用于配置連接處理的設置。案例如下:

events {worker_connections 1024; # 默認每個工作進程允許的最大并發連接數multi_accept on;         # 允許多個連接同時被接受use epoll;               # 默認使用 epoll 事件模型
}
# epoll是Linux下的一種I/O復用技術,主要用于提高高并發服務器程序的性能。如圖相對于傳統事件處理,減少了進程。

在這里插入圖片描述
在這里插入圖片描述

#ss:專門用于顯示套接字統計信息,包括TCP和UDP套接字的狀態、端口號、連接狀態等。
#優勢在于可以更快地顯示大量套接字連接的信息。
ss -ntlp |grep 80
#ps:提供進程的靜態信息,包括進程ID (PID)、CPU和內存使用情況、狀態、啟動時間等。
#支持多種輸出格式,如較詳細的長格式(-l選項)或完整格式(-f選項)。
ps -ef |grep nginx

在這里插入圖片描述

二、反向代理

在這里插入圖片描述

server {listen 80;server_name localhost;location / {proxy_pass http://tomcats;# 需和upstream的名字一樣}
}
# 配置上游服務器
upstream tomcats {   server localhost:89;     
}

三、負載均衡

3.1 分類

在這里插入圖片描述

負載均衡是一種優化手段,用于在多個服務器之間均勻地分配工作負載,從而提高系統整體的性能和可靠性
載體維度分類硬件負載均衡:這種方案通常使用專用的硬件設備,如F5和A10,具有高性能和全面的功能,但成本較高且擴展性有限。
軟件負載均衡:通過在標準服務器上運行的軟件實現,例如Nginx、HAProxy和LVS。這些軟件負載均衡器具有部署簡單、成本低、靈活性高等優點。
網絡通信分類 四層負載均衡:基于傳輸層的IP地址和端口進行請求轉發,性能較好,通常用于處理大量網絡流量。
七層負載均衡:基于應用層信息(如URL、HTTP頭部等)進行決策,可以提供更細粒度的控制,常用于需要更智能路由的場景

在這里插入圖片描述
類比
在這里插入圖片描述

3.2 負載相關配置文件

http {# 反向代理服務server {listen 80;server_name localhost;location / {proxy_pass http://tomcats;# 需和upstream的名字一樣}}# 配置上游服務器upstream tomcats {   server localhost:89;server localhost:90;# ip_hash;#hash #hash算法分配,即每個ip機器對應固定# least_conn; #最少連接#hash $request_uri;#hash根據url算法#server localhost:89 weight =1;#默認為1#server localhost:90 weight= 5;}# 89端口服務server {listen 89;server_name localhost;root /usr/share/nginx/lih2;#更換根路徑#index index.html;}#90端口服務server {listen 90;server_name localhost;#index index.html; 不寫使用默認根路徑和默認主文件}
}

分別顯示89,90輪詢服務,默認為weight=1平均輪詢。
在這里插入圖片描述
在這里插入圖片描述

#nginx 做負載均衡的案例server {listen 80;  #端口server_name localhost; #IP 域名location / {proxy_pass http://proxy;}}# 兩個服務端口upstream proxy{server localhost:802;server localhost:803;}# 不要再加httpserver服務端口重復了# server {#    listen 802;#    server_name localhost;# }#server {#   listen 803;#  server_name localhost;#}
# 配置上游服務器
upstream tomcats {server localhost:89 weight =1;#默認為1server localhost:90 down;server localhost:91 backup;server localhost:92 fail_timeout=10#默認10s
}

在這里插入圖片描述

3.3 keepalive 提高吞吐量

upstream tomcats {server localhost:90 ;keepalive 32;#32個線程,不用反復消失創建
}server {listen 80;server_name localhost;location / {proxy_pass http://tomcats;proxy_http_version 1.1;# keepalive相關,具體各位自行研究proxy_set_header Connection "";# keepalive相關,具體各位自行研究}
}

JMeter測試吞吐量為2倍
在這里插入圖片描述在這里插入圖片描述

3.4 配置瀏覽器緩存

# 各自有空去研究吧
proxy_cache_path  /...

在這里插入圖片描述

附、JMeter性能測試工具

Meter是一種可以在不同協議或技術上執行負載測試,面向性能的業務(功能)測試,回歸測試等的軟件
官網:https://jmeter.apache.org/
教程文檔參考:
https://blog.csdn.net/yaorongke/article/details/82799609
https://iowiki.com/jmeter/jmeter_quick_guide.html

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

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

相關文章

(7.10)Java面向對象有關知識點思考

1、繼承中要關注如何訪問父類中的方法,其中有傳遞一個隱藏的形參this,及當前對象的地址,通過它調用方法沒有問題。 2、抽象時對繼承關系的一種優化: ①父類中的方法可以沒有方法體; ②子類必須按照規定重寫抽象方法…

【性能工程 - eBPF 技術】小白也能學會的 eBPF 技術——初步了解 eBPF 技術(一)

eBPF,即擴展的伯克利包過濾器(Extended Berkeley Packet Filter),是從早期的BPF技術發展而來,起初用于高效地過濾網絡數據包。隨著時間的推移,eBPF已經成為一個強大的、靈活的內核技術,不僅限于…

echart5.5.1版本,倒三角柱狀圖

加載方法 initChart1(title, id, tag) {var myChart echarts5.init(this.$refs[id]);const _this this;var option {title:{text: title||"",show: title?true:false,top: 24,left: 24},grid:{left: 54,top: 74,bottom: 44,right: 30,},xAxis: {type: category,d…

【Spring成神之路】老兄,來一杯Spring AOP源碼嗎?

文章目錄 一、引言二、Spring AOP的使用三、Spring AOP的組件3.1 Pointcut源碼3.2 Advice源碼3.3 Advisor源碼3.4 Aspect源碼 四、Spring AOP源碼刨析4.1 configureAutoProxyCreator源碼解析4.2 parsePointcut源碼解析4.3 parseAdvisor源碼解析4.4 parseAspect源碼解析4.5 小總…

電腦缺少dll文件是怎么回事?教你5種有效的解決方法

當您的計算機顯示DLL文件已經遺失時,您應如何應對呢?實際上,針對此類DLL文件的處置過程相對來說較為簡易。今日,我們在此為大家詳細介紹此領域的相關知識,讓大家輕松解決電腦中因丟失DLL文件而產生的問題。 一、關于DL…

案例開發-日程管理-第一期

九 案例開發-日程管理-第一期 共7期 9.1 登錄頁及校驗 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>.ht{text-align: center;color: cadetblue;font-family: 幼…

MVC 生成驗證碼

在mvc 出現之前 生成驗證碼思路 在一個html頁面上&#xff0c;生成一個驗證碼&#xff0c;在把這個頁面嵌入到需要驗證碼的頁面中。 JS生成驗證碼 <script type"text/javascript">jQuery(function ($) {/**生成一個隨機數**/function randomNum(min, max) {…

Python占位符匯總

# f-string (重點掌握) 3.6版本之后才有的 name "杰倫" print(大家好&#xff0c;我是杰倫) print(大家好&#xff0c;我是, name, sep) # 可以但不推薦 name "杰倫" age 45 salary 1.4567 print(大家好&#xff0c;我是杰倫&#xff0c;我今年45&a…

《妃夢千年》第三十章:意外的來信

第三十章&#xff1a;意外的來信 林清婉在皇宮中的地位穩固后&#xff0c;生活似乎又回歸了平靜。然而&#xff0c;這種平靜并沒有持續多久。一天早晨&#xff0c;她收到了一個意外的來信&#xff0c;信封上沒有署名&#xff0c;但她一眼就認出了那熟悉的筆跡——這是她已故父…

RedHat Linux8 修改root管理員賬戶密碼命令

RedHat Linux8 修改root管理員賬戶密碼命令&#xff1a; sudo passwd root RedHat重置root管理員密碼&#xff1a; 1. 查看Linux系統版本信息 cat /etc/redhat-release2. 重置密碼 2.1 進入內核編輯界面 重啟Linux系統并出現引導界面&#xff0c;按下鍵盤上的e鍵進入內…

Prometheus+Grafana主機運行數據

目錄 介紹 安裝Node Exporter 配置Prometheus 驗證配置 導入儀表盤 介紹 Prometheus是一款開源的監控和警報工具&#xff0c;而Node Exporter是Prometheus的一個官方插件&#xff0c;用于采集主機上的各種系統和硬件指標。 安裝Node Exporter 下載最新版本的Node Export…

【AI大模型】ChatGPT-4 對比 ChatGPT-3.5:有哪些優勢

引言 ChatGPT4相比于ChatGPT3.5,有著諸多不可比擬的優勢&#xff0c;比如圖片生成、圖片內容解析、GPTS開發、更智能的語言理解能力等&#xff0c;但是在國內使用GPT4存在網絡及充值障礙等問題&#xff0c;如果您對ChatGPT4.0感興趣&#xff0c;可以私信博主為您解決賬號和環境…

FLinkCDC引起的生產事故(二)

背景&#xff1a; 最近在做實時數據的抽取工作&#xff0c;利用FLinkCDC實時抽取目標庫Oracle的數據到Doris中&#xff0c;但是在抽取的過程中&#xff0c;會導致目標庫的生產庫數據庫非常卡頓&#xff0c;為了避免對生產環境的數據庫造成影響&#xff0c;對生產環境的數據庫利…

谷歌優化的坑與甜:方法策略決定成敗,并非難易程度

對于谷歌優化&#xff0c;本人頗為惱火。眾所周知&#xff0c;我們開設網站旨在吸引眾多訪客&#xff0c;然谷歌這位傲慢的“高嶺之花”&#xff0c;卻令我們煞費苦心。有位友人為提升其網站排名&#xff0c;不惜耗盡心血&#xff0c;然而成效甚微&#xff0c;猶如坐過山車般起…

P3110 [USACO14DEC] Piggy Back S

題意 有一張 n n n 點 m m m 邊的無向圖&#xff0c;Alice 要從 1 1 1 走到 n n n&#xff0c;Bob 要從 2 2 2 走到 n n n。Alice 走一條邊需要花費 B B B&#xff0c;Bob 走一條邊需要花費 E E E&#xff0c;當他們一起走時&#xff0c;走一條邊需要花費 P P P。求他…

OpenJudge 奇數求和

目錄 描述思路樣例輸入樣例輸出CodeCC 總時間限制: 1000ms 內存限制: 65536kB 描述 計算非負整數 m 到 n&#xff08;包括m 和 n &#xff09;之間的所有奇數的和&#xff0c;其中&#xff0c;m 不大于 n&#xff0c;且n 不大于300。例如 m3, n12, 其和則為&#xff1a;357911…

qcom 平臺efuse機器抓取dump log的方法

引言&#xff1a; qcom 平臺機器&#xff0c;一旦efuse后機器將無法抓取dump log qcom 原文&#xff1a; efuse機器抓取dump log的方法如下&#xff1a; 一、修改配置文件&#xff1a; 把kamorta_debugpolicy.xml 在配置了debugpolicy&#xff08;加入串號和打開開關&#x…

怎么檢查SSL證書是否有效?

SSL證書的有效性對于保護網站數據安全和用戶隱私至關重要。然而&#xff0c;有時可能會出現證書過期、無效或被吊銷的情況。為了確保網站的安全性&#xff0c;對SSL證書的有效性進行檢查至關重要。本文將介紹幾種常用的方法來檢查SSL證書的有效性&#xff0c;幫助大家有效評估和…

Android Studio Download Gradle 時慢問題解決

1.騰訊gradle 下載&#xff1a;后面拼接版本&#xff08;gradle-8.0-bin.zip&#xff09; https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip 2.Android Studio 配置&#xff1a;setting-->gradle-->Use Gradle from 選擇本地文件夾&#xff08;解壓后的bi…

前端開發常用的框架有以下幾種?

React&#xff1a;由Facebook開發&#xff0c;用于構建用戶界面的JavaScript庫。它可以用于構建單頁面應用和移動應用。 Vue&#xff1a;一套用于構建用戶界面的漸進式框架&#xff0c;也是一個基于JavaScript的前端開發框架。Vue易于學習和使用&#xff0c;適用于構建小型到大…