nginx負載均衡與反向代理與正向代理

負載均衡:通過反向代理來實現

?正向代理的配置方法。

正向代理:

工作原理:用戶端直接訪問不了,需要通過代理服務器來訪問web服務器,用戶端先訪問代理服務器,再訪問web服務器。web服務器響應給代理服務器,代理服務器再響應給用戶端。web服務器看到的請求地址是代理服務i去的ip地址。代理服務器的例子:加速器、科學上網。

proxy_pass 配置代理服務器訪問的地址。只能寫在location模塊當中。

nginx的七層代理和四層代理

七層是最常用的反向代理方式,只能配置在nginx配置文件的http模塊中。

而且,配置方法名稱:upstream模塊,只能配置在http模塊中,但是不能寫在server中,也不能在location中。在http模塊當中是獨立的一個配置。

七層代理:七層代理的就是http請求和響應。

工作原理:

客戶端---->http請求----->七層代理(代理服務器上)------>代理服務器轉發http請求到內部的一組服務器(web集群)

---------->客戶端不知道請求的代理服務器還是內部服務器,而且通過代理服務器隱藏了內部服務器的ip

實際上訪問的是代理服務器,請求到代理服務器,代理服務器轉發給web服務器。web服務器響應。

配置方法:upstream模塊,只能配置在http模塊中,但是不能寫在server中,也不能在location中。在http模塊當中是獨立的一個配置。

四層代理:四層代理是基于tcp/ip協議層的代理轉發方式,可以實現基于ip地址和端口進行負載均衡轉發。

四層代理無法獲取http請求當中的URL信息,只能對tcp/udp數據包進行轉發。是一個流量轉發。

配置方法:stream模塊,是不能寫在http模塊中,配置在全局當中,是屬于一個獨立的模塊,不屬于其他任何模塊。

四層代理和七層代理之間的區別:

1、七層走的都是http請求,四層走的tcp/udp的數據包,轉發的是流量

七層代理,http請求,可以對請求進行深入的解析和處理,流量控制,內容的過濾

四層代理不能進行流量控制,也沒辦法對內容進行過濾。

四層代理通常適用于:需要處理大量連接請求的場景。

七層:對請求進行精確處理和控制的場景。

在實際工作中,四層和七層可以配合使用

2、四層和七層,誰的速度快

四層代理速度比七層代理速度快。

1、四層只是流量轉發,不能對請求進行解析和控制,所以速度快

2、四層代理走的是內核,內核轉發的流量,所以速度快。

1、七層慢,他對請求進行處理和解析,速度比較慢

2、七層走的是用戶態,訪問控制,流量處理,所以速度比較慢。

所以七層代理可以提供更高級的服務和更高的用戶體驗

正向代理實驗:指定61作為代理服務器,訪問62

主機1

進入nginx配置文件

添加proxy_pass http://192.168.233.62

?

主機2

進入nginx配置文件中,

配置index.html

this is ky 30

瀏覽器訪問192.168.233.61

反向代理:客戶端訪問代理服務器,代理服務器轉發請求或者流量到后端服務器,后端的web服務器會有多臺,用戶并不知道最終訪問的是哪一臺服務器。

特點:負載均衡,高可用,可擴展,可維護性

如何做反向代理/負載均衡?

upstream 和 stream

upstream:基于https實現負載均衡,反向代理。

小場景:并發量很小,默認算法就可以滿足使用條件。

如果后端web服務器的處理能力有差異:加權輪詢,和最小連接數配合使用

大型并發:ip_hash,或者url_hash。第一次請求之后,會有本地的緩存,而且因為hash算法的原因,請求的后臺web服務器不會發生變化,可以提高訪問速度,訪問的是緩存,減輕了后臺服務器的請求壓力。

反向代理就是負載均衡,如何做負載均衡需要看你的場景并發量,訪問人數有多少。根據這個指標,可以確定負載均衡的算法。

并發量小,選擇默認輪詢或者加權輪詢,配合最小連接數使用即可。

高并發:ip_hash或者url_hash來實現,訪問一次之后,就不會再切換后端web服務器,下一次訪問就是緩存,速度快,后臺web服務器,請求的壓力,也會變小。

反向代理的特點

1、http請求的負載均衡方式

2、沒有緩存

3、負載均衡算法:

(1)默認算法:輪詢 rr 請求輪流分配給后端服務器,輪詢算法使用與web服務器處理能力相近的情況,默認算法,可以不加。

upstream ky30 {

server 192.168.233.62;

server 192.168.233.63;

#指定通過代理服務器61,會把http的請求轉到62或者63上

}

(2)加權輪詢算法:建立在輪詢算法的基礎之上,通過給不同的web服務器權重,讓處理能力更強的服務器可以分配到更多的請求。雖然配置了權重值,但是輪詢的結果未必準確。

upstream ky30 {

server 192.168.233.62 weight=2;

server 192.168.233.63 weight=3;

#通過代理服務器61,轉發http請求時,會往權重高的服務器上,轉發的次數多,權重低,轉發的就少

#指定通過代理服務器61,會把http的請求轉到62或者63上

}

(3)ip-hash:根據ip地址計算出一個hash值,使用ip hash算法,同一個客戶端的請求會被分配到同一個后端服務器。保證會話的穩定性。如果后端服務器的數量發生變化,hash會被重新計算,請求的服務器也會發生變化。

vim nginx.conf

upstream ky30 {

ip_hash;

server 192.168.233.62;

server 192.168.233.63;

#指定通過代理服務器61,會把http的請求轉到62或者63上

}

(4)最少連接數:least_conn;輪詢,它會將請求發送到當前連接數最少的后端web服務器。適用于后端服務器處理任務耗時不同的情況,避免了所有請求集中在處理能力更強的后端服務器上。它會和加權輪詢配合使用。

vim nginx.conf

upstream ky30 {

least_conn;

server 192.168.233.62;

server 192.168.233.63;

#指定通過代理服務器61,會把http的請求轉到62或者63上

}

(5)url_hash:根據uri地址計算hash值,使用url_hash會把相同請求的uri會分配到同一個后端web服務器。

vim nginx.conf

upstream ky30 {

hash $request_uri consistent;

server 192.168.233.62;

server 192.168.233.63;

#指定通過代理服務器61,會把http的請求轉到62或者63上

}

主機1

upstream ky30 {

server www.kgc.com;

server www.benet.com;

#指定通過代理服務器61,會把http的請求轉到62或者63上

}

server的server_name www.test.com;

location后加上proxy_pass http://ky30

echo "192.168.233.61 www.test.com" >> /etc/hosts

主機2

server的server_name www.kgc.com;

echo "192.168.233.62 www.kgc.com" >> /etc/hosts

主機3

server的server_name www.benet.com

echo "192.168.233.63 www.benet.com" >> /etc/hosts

test1

echo "192.168.233.61 www.test.com" >> /etc/hosts

代理服務器1中

location模塊中

upstream ky30 {

server 192.168.233.62;

server 192.168.233.63;

#指定通過代理服務器61,會把http的請求轉到62或者63上

}

location中添加

proxy_pass http://ky30;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

虛擬機test1

四層轉發:

upstream就不要了

兩臺客戶機保持不變

stream全局模塊

stream{

upstream test {

server 192.168.233.62:80;

server 192.168.233.63:80;

}

server{

listen 8080; 和上面的server的端口不能一樣

proxy_pass test;

}

}

stream算法:

hash ip_hash rr 加權輪詢 最少連接數

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

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

相關文章

【C語言】調試技巧

目錄 一、什么是bug? 二、調試 1.一般調試的步驟 2.Debug 和 Release 三、調試環境準備 四、調試時要查看的信息 1.查看臨時變量的值 2.查看內存信息 3.查看調用堆棧 4.查看反匯編信息 5.查看寄存器 五、練習 六、常見的coding技巧 七、const的作用 八、編程常見…

Linux - MongoDB 數據庫自動退出服務問題/閃退

問題:MongoDB 自動退出服務問題 原因: 由于 Mongodb 服務,使用過多系統內存,導致系統強制停止 Mongodb 服務。 解決方法: 在 mongodb.conf 配置文件內,添加新配置內容: wiredTigerCacheSi…

POI與EasyExcel--寫Excel

簡單寫入 03和07版的簡單寫入注意事項: 1. 對象不同:03對應HSSFWorkbook,07對應XSSFWorkbook 2. 文件后綴不同:03對應xls,07對應xlsx package com.zrf;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import …

如何應用項目管理軟件進行敏捷開發管理

敏捷開發(Agile Development)是一種軟件開發方法論,強調在不斷變化的需求和環境下,通過迭代、協作和自適應的方式來開發軟件。敏捷方法的目標是提供更快、更靈活、更高質量的軟件交付,以滿足客戶需求并實現項目成功。 …

服務器數據恢復-EqualLogic存儲RAID5數據恢復案例

服務器數據恢復環境: 一臺DELL EqualLogic存儲中有一組由16塊SAS硬盤組建的RAID5陣列。存儲存放虛擬機文件,采用VMFS文件系統,劃分了4個lun。 服務器故障&檢測&分析: 存儲設備上有兩個硬盤指示燈顯示黃色,存儲…

【Windows 常用工具系列 6 -- CSDN字體格式(字體、顏色、大小)、背景色設置】

文章目錄 背景字體大小設置字體顏色設置字體類型背景色 上篇文章:Windows 常用工具系列 5 – Selenium IDE的使用方法 下篇文章:Windows 常用工具系列 7 – 禁用win10自帶的微軟輸入法 背景 Markdown是一種輕量級標記語言,它的目標是實現“…

1022.從根到葉的二進制之和

目錄 一、題目 二、代碼 一、題目 二、代碼 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nu…

基于java計算機類考研交流平臺設計與實現

摘要 高校的大學生考研是繼高校的高等教育更上一層的表現形式,教育的發展是我們社會的根本,那么信息技術的發展又是改變我們生活的重要因素,生活當中各種各樣的場景都存在著信息技術的發展。信息技術發展WEB信息化的到來讓人們的生活感受到了…

vue項目的實用性總結

1、mockjs 基本使用 ★ 安裝:npm i mockjs。 在src/mock/index.js內容如下: import Mock from mockjs //制訂攔截規則 Mock.mock(http://www.0313.com,get,你好啊)記得在main.js中引入一下,讓其參與整個項目的運行。 只要發出去的是get類型…

家紡行業小程序商城搭建指南

家紡行業作為一個不可或缺的消費領域,近年來備受關注。隨著互聯網的發展,小程序商城成為家紡行業拓展市場的新利器。搭建一個家紡行業小程序商城并不是一件困難的事情,只需要按照以下幾個步驟進行操作,就能輕松上手。 首先&#x…

Java后端框架模塊整合

提示:使用Java后端開發框架能夠提高開發效率、代碼質量,提升可擴展性,降低開發成本和易于維護。 文章目錄 前言MyBatis 框架知識Spring 框架知識SpringMVC 框架知識SpringBoot 框架知識 前言 提示:這里可以添加本文要記錄的大概內…

2023-08-15 LeetCode每日一題(字符串中的查找與替換)

2023-08-15每日一題 一、題目編號 833. 字符串中的查找與替換二、題目鏈接 點擊跳轉到題目位置 三、題目描述 你會得到一個字符串 s (索引從 0 開始),你必須對它執行 k 個替換操作。替換操作以三個長度均為 k 的并行數組給出:indices, sources, tar…

UI設計師個人工作總結范文

UI設計師個人工作總結范文篇一 感受到了領導們“海納百川”的胸襟,感受到了作為廣告人“不經歷風雨,怎能見彩虹”的豪氣,也體會到了重慶廣告從業人員作為拓荒者的艱難和堅定(就目前國內廣告業而言,我認為重慶廣告業尚在發展階段并…

FreeRTOS(獨立看門狗監測任務執行與低功耗Tickless模式)

資料來源于硬件家園:資料匯總 - FreeRTOS實時操作系統課程(多任務管理) 目錄 一、獨立看門狗介紹 二、看門狗監測多任務執行思路 1、監測目標 2、監測方案 3、應用注意事項 三、看門狗監測多任務編程 1、STM32cubeMX配置 2、代碼編寫 四、低功耗Tickless模…

LeetCode 熱題 100 JavaScript--739. 每日溫度

給定一個整數數組 temperatures ,表示每天的溫度,返回一個數組 answer ,其中 answer[i] 是指對于第 i 天,下一個更高溫度出現在幾天后。如果氣溫在這之后都不會升高,請在該位置用 0 來代替。 示例 1: 輸入: temperat…

基于HTML+CSS+Echarts大屏數據可視化集合共99套

基于HTMLCSSEcharts大屏數據可視化集合共99套 一、介紹二、展示1.大數據展示系統2.物流訂單系統3.物流信息系統4.辦稅渠道監控平臺5.車輛綜合管控平臺 三、其他系統實現四、獲取源碼 一、介紹 基于HTML/CSS/Echarts的會議展覽、業務監控、風險預警、數據分析展示等多種展示需求…

c++--異常

1.什么是異常 對于C語言來說,處理錯誤的機制有: 1.終止程序:如assert,缺陷,如發生內存錯誤,除0之外發生程序終止,用戶無法接受。 2.返回錯誤碼:對于大型程序來說,需要…

docker搭建lnmp(nginx+mysql57+php7.4)

docker搭建lnmp(nginxmysql57php7.4) 1. 準備工作 docker安裝 $ sudo yum update $ sudo sudo yum install -y yum-utils device-mapper-persistent-data lvm2 $ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo $ sudo…

React 全棧體系(一)

第一章 React入門 一、React簡介 1. 是什么? 是一個將數據渲染為HTML視圖的開源JavaScript庫。 2. 誰開發的? 由Facebook開源 3. 為什么要學? 原生JavaScript操作DOM繁瑣,效率低(DOM-API 操作 UI) 使…

前端css進階

day04-CSS進階 目標:掌握復合選擇器作用和寫法;使用background屬性添加背景效果 01-復合選擇器 定義:由兩個或多個基礎選擇器,通過不同的方式組合而成。 作用:更準確、更高效的選擇目標元素(標簽&#xf…