nginx入門,部署靜態資源,反向代理,負載均衡使用

Nginx在linux上部署靜態資源

在這里插入圖片描述

概念介紹

Nginx可以作為靜態web服務器來部署靜態資源。這里所說的靜態資源是指在服務端真實存在,并且能夠直接展示的一些文件,比如常見的html頁面、css文件、js文件、圖片、視頻等資源。

相對于Tomcat,Nginx處理靜態資源的能力更加高效,所以在生產環境下,一般都會將靜態資源部署到Nginx中.

server {listen 80;				#監聽端口	server_name localhost;	#服務器名稱location / {			#匹配客戶端請求urlroot html;			#指定靜態資源根目錄  其中html是文件夾的名字index index.html;	#指定默認首頁}
}

案例演示(我是用docker安裝的Nginx)

編寫一個DemoNginx.html文件,將這個文件部署到nginx中,然后通過nginx訪問html靜態資源。

docker inspect mynginx # 看看掛載的目錄在那里

在這里插入圖片描述

編寫的html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>DemoNginx</title>
</head>
<body>
<h1>  nginx部署靜態資源</h1>
</body>
</html>

1、 nginx默認顯示的就是這個index.html 網頁文件
在這里插入圖片描述
我們把自己寫好的文件上傳到這個目錄 (如果你的名字也叫index.html 直接替換完成就可以,如果不是還需要進行后面的步驟)
在這里插入圖片描述

這個推薦個小工具(可以用命令快速上傳本機文件) rz 是一個在 Linux/Unix 系統中用于 接收文件 的命令,常用于終端工具(如
Xshell、SecureCRT、FinalShell、Mobaxterm 等)配合 zmodem
協議從本地上傳文件到服務器。你在通過終端連接到 Linux 服務器時,執行 rz,它會彈出一個文件選擇窗口(前提是你的終端工具支持
zmodem 協議),你選擇本地文件后,就會被上傳到當前目錄。
安裝教程

sudo yum install lrzsz -y  # 安裝
rz  # 彈出對話框讓你選擇文件, 默認會上傳到當目錄
  1. 更新配置文件
    在這里插入圖片描述


這段配置的意思是:當訪問Nginx服務器的根路徑 / 時,Nginx會查找并返回 /usr/share/nginx/html 目錄下的
DemoNginx.html 文件。如果該文件不存在,將返回一個 404 錯誤。

3、瀏覽器通過 ip訪問(80端口可以不寫)
在這里插入圖片描述

部署一組靜態資源(在默認配置的情況下演示,不動配置文件)

1、我的文件有首頁index.html ,我想把nginx的index刪掉, 這樣就不需要配置 nginx.conf 文件了
在這里插入圖片描述
這樣就直接OK了(配置文件都不用改)
在這里插入圖片描述

Nginx反向代理入門(本機)

引入:

正向代理–代理的是用戶–服務器不知道用戶是誰

正向代理服務器是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。(科學上網就是這個原理)

反向代理----代理的是服務器端,用戶不知道是哪臺服務器提供的服務。

反向代理服務器位于用戶與目標服務器之間,但是對于用戶而言,反向代理服務器就相當于目標服務器,即用戶直接訪問反向代理服務器就可以獲得目標服務器的資源,反向代理服務器負責將請求轉發給目標服務器。用戶不需要知道目標服務器的地址,也無須在用戶端作任何設定,對于用戶來說,訪問反向代理服務器是完全無感知的。

入門使用nginx配置反向代理(為了方便在本機演示 MAC系統)

1、 修改配置文件 nginx.conf

    server {listen       88;server_name  localhost;location / {proxy_pass http://localhost:10100;}     } 	
listen 88; 表示這個 server 區塊監聽 本機的 88 端口。所以你訪問http://localhost:88 的時候,就會進入這個服務。 
server_name localhost;表示這個服務匹配的域名是 localhost。 
在本地開發環境中一般是默認這樣寫的(正式部署時可以改成你自己的域名)

在這里插入圖片描述

2、檢查配置文件,并重新加載

    nginx  -t   			# 檢查配置文件是否正確 nginx  -s reload		# 重新加載配置文件

在這里插入圖片描述

3 、進行訪問測試

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

負載均衡

概念介紹

早期的網站流量和業務功能都比較簡單,單臺服務器就可以滿足基本需求,但是隨著互聯網的發展,業務流量越來越大并且業務邏輯也越來越復雜,單臺服務器的性能及單點故障問題就凸顯出來了,因此需要多臺服務器組成應用集群,進行性能的水平擴展以及避免單點故障出現。

**應用集群:**將同一應用部署到多臺機器上,組成應用集群,接收負載均衡器分發的請求,進行業務處理并返回響應數據

**負載均衡器:**將用戶請求根據對應的負載均衡算法分發到應用集群中的一臺服務器進行處理

此處的負載均衡器,我們將會使用Nginx來實現,而Nginx的負載均衡是基于反向代理的,只不過此時所代理的服務器不是一臺,而是多臺。

案例演示

1、啟動3個服務相同但是端口不同的服務

*🔗不會啟動相同的服務,端口不同見教程
在這里插入圖片描述
里面提供一個接口
在這里插入圖片描述

2、在nginx中配置負載均衡

打開nginx的配置文件nginx.conf并增加如下配置:

    upstream targetsever{server localhost:10100;server localhost:10101;server localhost:10102;}server {listen       88;server_name  localhost;location / {proxy_pass http://targetsever;}}

在這里插入圖片描述

3、檢查配置文件,并重新加載

nginx.exe -t   				# 檢查配置文件是否正確
nginx.exe -s reload			# 重新加載配置文件 s是signal的縮寫

在這里插入圖片描述

4、測試時,我們直接訪問nginx的88端口此時nginx會根據負載均衡策略,將請求轉發到后面的服務器。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
我在瀏覽器中訪問了六次nginx的88端口, 可以發現默認的策略是輪詢, 2次一輪

負載均衡算法

在nginx中提供了很多的負載均衡算法,常見的負載均衡算法如下所示:

名稱說明特點
round robin輪詢方式默認的負載均衡算法,按照請求的順序依次分配給后端服務器。
random隨機隨機選擇一個后端服務器來處理請求
url_hash依據url分配方式根據客戶端請求url的hash值,來分發請求, 同一個url請求, 會發轉發到同一個服務器上
ip_hash依據ip分配方式根據客戶端請求的IP地址計算hash值, 根據hash值來分發請求, 同一個IP發起的請求, 會發轉發到同一個服務器上
weight權重方式根據權重分發請求,權重大的分配到請求的概率大
least_conn依據最少連接方式哪個服務器當前處理的連接少, 請求優先轉發到這臺服務器

場景對比

在這里插入圖片描述

random算法

upstream targetserver {random;server ip:端口;server ip:端口;
}

url_hash算法

upstream targetserver {hash $request_uri;server ip:端口;server ip:端口;
}

ip_hash算法

upstream targetserver {ip_hash;server ip:端口;server ip:端口;
}

weight算法

upstream targetserver {server ip:端口 weight=5;server ip:端口 weight=1; 
}

least_conn算法

upstream targetserver {least_conn;server ip:端口;server ip:端口;
}

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

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

相關文章

【字節跳動AI論文】Seaweed-7B:視頻生成基礎模型的高成本效益培訓

摘要&#xff1a;本技術報告介紹了一種經濟有效的視頻生成基礎模型訓練策略。 我們提出了一種中等規模的研究模型&#xff0c;大約有70億個參數&#xff08;7B&#xff09;&#xff0c;稱為Seaweed-7B&#xff0c;使用665,000個H100 GPU小時從頭開始訓練。 盡管使用適度的計算資…

Java單例模式:實現全局唯一對象的藝術

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 一、什么是單例模式&#xff1f; 單例模式&#xff08;Singleton Pattern&#xff09;是一種創建型設計模式&#xff0c;確保一個類只有一個實例&#xff0c…

Oracle 復制表結構(含索引、主鍵)操作指南

Oracle 復制表結構&#xff08;含索引、主鍵&#xff09;操作指南 1. 復制基礎表結構 -- 創建空表結構&#xff08;不復制數據&#xff09; CREATE TABLE new_table AS SELECT * FROM old_table WHERE 10;2. 復制主鍵約束 -- 查詢原表主鍵信息 SELECT constraint_name, co…

React 更新state中的對象

更新 state 中的對象 state 中可以保存任意類型的 JavaScript 值&#xff0c;包括對象。但是&#xff0c;你不應該直接修改存放在 React state 中的對象。相反&#xff0c;當你想要更新一個對象時&#xff0c;你需要創建一個新的對象&#xff08;或者將其拷貝一份&#xff09;…

基于 GoFrame 框架的電子郵件發送實踐:優勢、特色與經驗分享

1. 引言 如果你是一位有1-2年Go開發經驗的后端開發者&#xff0c;可能已經熟悉了Go語言在性能和并發上的天然優勢&#xff0c;也曾在項目中遇到過郵件發送的需求——無論是用戶注冊時的激活郵件、系統異常時的通知&#xff0c;還是營銷活動中的批量促銷郵件&#xff0c;郵件功…

AndroidStudio編譯報錯 Duplicate class kotlin

具體的編譯報錯信息如下&#xff1a; Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21) D…

后端面試問題收集以及答案精簡版

思路 不要問什么答什么 要學會擴充 比如問你go map的原理 map 是什么 數據結構&#xff0c;字典&#xff0c;k/v 結構map的應用場景有哪些 快速查找、計數器、配置管理、去重、緩存實現map有哪些限制 無序性、非線程安全的讀寫map的key的訪問 v: mp[key] v,ok : mp[key] for…

MicroPython 開發ESP32應用教程 之 I2S、INMP441音頻錄制、MAX98357A音頻播放、SD卡讀寫

本課程我們講解Micropython for ESP32 的i2s及其應用&#xff0c;比如INMP441音頻錄制、MAX98357A音頻播放等&#xff0c;還有SD卡的讀寫。 一、硬件準備 1、支持micropython的ESP32S3開發板 2、INMP441數字全向麥克風模塊 3、MAX98357A音頻播放模塊 4、SD卡模塊 5、面包板及…

UE5 物理模擬 與 觸發檢測

文章目錄 碰撞條件開啟模擬關閉模擬 多層級的MeshUE的BUG 觸發觸發條件 碰撞 條件 1必須有網格體組件 2網格體組件必須有網格&#xff0c;沒有網格雖然可以開啟物理模擬&#xff0c;但是不會有任何效果 注意開啟的模擬的網格體組件會計算自己和所有子網格的mesh范圍 3只有網格…

微信小程序 - swiper輪播圖

官方文檔&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html <swiper indicator-color"ivory" indicator-active-color"#d43c33" indicator-dots autoplay><swiper-item><image src"/images/banner…

深入探究C#官方MCP:開啟AI集成新時代

一、引言 在當今數字化時代&#xff0c;.NET 開發領域不斷演進&#xff0c;而 C# 官方 MCP&#xff08;Model Context Protocol&#xff0c;模型上下文協議&#xff09;的出現&#xff0c;無疑為開發者們帶來了全新的機遇與挑戰。隨著人工智能技術的迅猛發展&#xff0c;將 AI…

二分查找法

使用二分查找法的前提&#xff1a;&#xff08;1&#xff09;數組為有序數組. &#xff08;2&#xff09;數組中無重復元素. 二分的兩種寫法&#xff1a; 方法一&#xff1a;[left&#xff0c;right] class Solution { public:int search(vector<int>& nums, int …

HarmonyOS:頁面滾動時標題懸浮、背景漸變

一、需求場景 進入到app首頁或者分頁列表首頁時&#xff0c;隨著頁面滾動&#xff0c;分類tab要求固定懸浮在頂部。進入到app首頁、者分頁列表首頁、商品詳情頁時&#xff0c;頁面滾動時&#xff0c;頂部導航欄&#xff08;菜單、標題&#xff09;背景漸變。 二、相關技術知識點…

鯤鵬+昇騰部署集群管理軟件GPUStack,兩臺服務器搭建雙節點集群【實戰詳細踩坑篇】

前期說明 配置&#xff1a;2臺鯤鵬32C2 2Atlas300I duo&#xff0c;之前看網上文檔&#xff0c;目前GPUstack只支持910B芯片&#xff0c;想嘗試一下能不能310P也部署試試&#xff0c;畢竟華為的集群軟件要收費。 系統&#xff1a;openEuler22.03-LTS 驅動&#xff1a;24.1.rc…

React中 點擊事件寫法 的注意(this、箭頭函數)

目錄 ?1、錯誤寫法?&#xff1a;onClick{this.acceptAlls()} ?2、正確寫法?&#xff1a;onClick{this.acceptAlls}&#xff08;不帶括號&#xff09; 總結 方案1&#xff1a;構造函數綁定 方案2&#xff1a;箭頭函數包裝方法&#xff08;更簡潔&#xff09; 方案3&am…

【路由交換方向IE認證】BGP選路原則之Weight屬性

文章目錄 一、路由器BGP路由的處理過程控制平面和轉發平面選路工具 二、BGP的選路順序選路的前提選路順序 三、Wight屬性選路原則規則9與規則11的潛移默化使用Weight值進行選路直接更改Weight值進行選路配合使用route-map進行選路 四、BGP鄰居建立配置 一、路由器BGP路由的處理…

Missashe考研日記-day20

Missashe考研日記-day20 1 高數 學習時間&#xff1a;2h30min學習內容&#xff1a; 今天當然是刷題啦&#xff0c;做不等式的證明板塊的真題&#xff0c;證明題懂的都懂&#xff0c;難起來是真的一點思路都沒有&#xff0c;這個板塊還沒做完&#xff0c;做完再總結題型。 2…

了解JVM

一.JVM概述 1.JVM的作用 ?把字節碼編譯為機器碼去執行,負責把字節碼裝載到虛擬機中 ?現在的 JVM 不僅可以執行 java 字節碼文件,還可以執行其他語言編譯后的字節碼文件,是一個跨語言平臺 2.JVM的組成部分 類加載器&#xff08;ClassLoader&#xff09;運行時數據區&#x…

LeetCode LCR157 套餐內商品的排列順序

生成字符串的全部排列&#xff08;去重&#xff09;&#xff1a;從問題到解決方案的完整解析 問題背景 在編程和算法設計中&#xff0c;生成字符串的所有排列是一個經典問題。它不僅出現在算法競賽中&#xff0c;也在實際開發中有著廣泛的應用&#xff0c;比如生成所有可能的…

pgsql:關聯查詢union(并集)、except(差集)、intersect(交集)

pgsql:關聯查詢union(并集)、except(差集)、intersect(交集)_pgsql except-CSDN博客