Nginx詳解

1、高并發時代

單臺tomcat在理想情況下可支持的最大并發數量在200~500之間,如果大于這個數量可能會造成響應緩慢甚至宕機。

解決方案是通過多臺服務器分攤并發壓力,這不僅需要有多臺tomcat服務器,還需要一臺服務器專門用來分配請求。這既是反向代理服務器

2、Nginx概述

Nginx是一款優秀的反向代理服務器程序,能夠為若干臺服務器提供反向代理服務,一方面為客戶端提供一個統一訪問的地址,一方面為后臺多個服務器提供負載均衡

Nginx可以實現不僅可以實現反向代理,也可以實現正向代理,不過一般我們都是使用反向代理,即代理服務器集群,因為一般集群部署也是服務端

  • 正向代理

在這里插入圖片描述

nginx為客戶端代理稱為正向代理。客戶端集群部署,可以通過訪問同一個地址來訪問服務端。

  • 反向代理

在這里插入圖片描述

nginx為服務端代理稱之為反向代理。Nginx為訪問服務端提供一個統一的接口,客戶端只需要訪問這個統一接口就可以訪問到服務端。

3、Nginx使用

通過Nginx實現請求轉發

例:當客戶端訪問http://www.pq.com時,由nginx轉發給 http://127.0.0.1:8080端口進行處理

在nginx.conf中配置

http{
#為nginx配置一個虛擬服務器,server {
#監聽本機80端口listen 80;
#接收對www.pq.com主機名的訪問server_name www.pq.com;
#對/即任意路徑的訪問進行處理location / {
#轉發到指定地址proxy_pass http://127.0.0.1:8080;}
#可以配置多個location
...
}
#可以配置多個server
...
}

通過server和location配置轉發的地址。接下來用戶可以通過訪問 www.pq.com,實際請求是被轉發到 127.0.0.1:8080

實現負載均衡

對服務端集群部署,如現在對于客戶端的請求有三臺服務器可以處理,nginx可以對這三臺服務器進行負載均衡,并提供一個統一的接口給客戶端訪問

在nginx.conf中這樣配置:

#upstream是nginx配置文件中的關鍵字,用來配置一組服務器地址供后續使用
upstream big1907{server 127.0.0.1:8081;server 127.0.0.1:8082;server 127.0.0.1:8083;
}server {listen 80; #對80端口的訪問server_name www.pq.com; #對此主機名的訪問location / {
#轉發到上面配置的服務器組proxy_pass http://big1907;}}

對于三臺服務器的請求可以都通過代理接口www.pq.com進行訪問

  • Nginx中的負載均衡策略

輪詢 :默認不配置就是輪詢。連接請求輪流分配給服務器。

IP哈希 :(客戶端ip.hash()%服務器數量),根據余數決定請求去往哪個服務器

最少連接 :將連接請求分配給目前連接數最少的服務器

基于權重 :根據權重進行分配(權重值可以自定義,在地址后配置weight=x),權重值越大,被分配的連接就越多;如果直接配置為down,則該服務器不再被分配連接

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

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

相關文章

Mysql - 配置Mysql主從復制-keepalived高可用-讀寫分離集群

目錄 高可用: 為什么需要高可用呢? 高可用的主要作用: keepalived是什么?它用在哪里? 什么是VRRP協議,它的作用是什么? 搭建一個基于keepalived的高可用Mysql主從復制讀寫分離集群 一、項…

MongoDB-yum安裝修改數據目錄后啟動失敗

# 問題 mongodb 進程權限默認會被 SELinux 管理,修改配置中默認 storage.dbPath 、systemLog.path 造成啟動失敗。 # 解決方案 ① 修改為默認路徑或重新安裝 /var/lib/mongo /var/log/mongodb/mongod.log② 臨時關閉 SELINUX 權限控制 setenforce 0③ 永久關閉 SE…

Vue Baidu Map--自定義點圖標bm-marker

自定義點圖標 將準備好的圖標放到項目中 使用import引入&#xff0c; 并在data中進行聲明 <script> import mapIconRed from ./vue-baidu-map/img/marker_red_sprite.png export default {data() {return {mapIconRed,}}, } </script>在<bm-marker>中加入參…

【Linux】進程的基本屬性|父子進程關系

個人主頁&#xff1a;&#x1f35d;在肯德基吃麻辣燙 我的gitee&#xff1a;Linux倉庫 個人專欄&#xff1a;Linux專欄 分享一句喜歡的話&#xff1a;熱烈的火焰&#xff0c;冰封在最沉默的火山深處 文章目錄 前言進程屬性1.進程PID和PPID2.fork函數創建子進程1&#xff09;為什…

C語言學習筆記---數據的存儲詳解

C語言程序設計筆記---015 C語言數據的存儲1、數據類型的意義1.1、unsigned與signed數據類型例程11.2、補碼與原碼相互轉換例程2 2、大小端的介紹2.1、大小端的例程12.2、大小端的例程2 --- 判斷當前編譯器環境屬于大端或小端 3、綜合練習題探究數據的存儲3.1、練習題13.2、練習…

自動化安裝系統(一)

系統安裝過程 加載boot loader加載啟動安裝菜單加載內核和initrd文件加載根系統運行anaconda的安裝向導 安裝光盤中與安裝相關的文件 安裝autofs啟動后會自動出現/misc目錄。 在虛擬機設置中添加CD/DVD&#xff0c;使用系統ISO文件&#xff0c;登錄系統后mount /dev/cdrom …

青翼科技自研2路250MSPS DA回放FMC子卡模塊

FMC150_V30是一款基于VITA57.1規范的2路125MSPS采樣率16位分辨率AD采集、2路250MSPS采樣率16位分辨率DA回放FMC子卡模塊。該模塊遵循VITA57.1規范&#xff0c;可直接與符合VITA57.1規范的FPGA載卡配合使用&#xff0c;板卡ADC器件采用ADI公司的AD9268芯片&#xff0c;板卡DAC器…

機器學習理論筆記(一):初識機器學習

文章目錄 1 前言&#xff1a;藍色是天的機器學習筆記專欄1.1 專欄初衷與定位1.2 本文主要內容 2 機器學習的定義2.1 機器學習的本質2.2 機器學習的分類 3 機器學習的基本術語4 探索"沒有免費的午餐"定理&#xff08;NFL&#xff09;5 結語 1 前言&#xff1a;藍色是天…

mac安裝vscode 配置git

1、安裝vscode 官網地址 下載mac穩定版安裝很慢的解決辦法 (轉自) mac電腦如何解決下載vscode慢的問題 選擇谷歌瀏覽器右上角的3個點&#xff0c;選擇下載內容&#xff0c;右鍵選擇復制鏈接地址&#xff0c;在新窗口粘貼地址&#xff0c; 把地址中的一段替換成下面的vscode.cd…

項目配置中心介紹

目錄 什么是配置中心 為什么要有配置中心 配置中心的做法&#xff08;讀取和通知&#xff09; 配置中心優點: 常用的配置中心中間件 什么是配置中心 配置中心就是用來管理項目當中所有配置的系統&#xff0c;也是微服務系統當中不可或缺的一部分。項目的配置文件不放到本地…

Servlet+JDBC實戰開發書店項目講解第四篇:登錄實現

ServletJDBC 實戰開發書店項目講解第四篇&#xff1a;登錄注冊實現 在本篇博客中&#xff0c;我們將繼續講解 ServletJDBC 實戰開發書店項目。這次我們將重點講解如何實現登錄和注冊功能。 1. 創建數據庫表 首先&#xff0c;我們需要在數據庫中創建兩個表&#xff0c;一個用…

[C++] 模板template

目錄 1、函數模板 1.1 函數模板概念 1.2 函數模板格式 1.3 函數模板的原理 1.4 函數模板的實例化 1.4.1 隱式實例化 1.4.2 顯式實例化 1.5 模板參數的匹配原則 2、類模板 2.1 類模板的定義格式 2.2 類模板的實例化 講模板之前呢&#xff0c;我們先來談談泛型編程&am…

Qt讀寫Excel--QXlsx編譯為靜態庫2

1、概述&#x1f954; 在使用QXlsx時由于源碼文件比較多&#xff0c;如果直接加載進項目里面&#xff0c;會增加每次編譯的時間&#xff1b; 直接將源碼加載進項目工程中&#xff0c;會導致項目文件非常多&#xff0c;結構變得更加臃腫&#xff1b; 所以在本文中將會將QXlsx編譯…

骨傳導耳機頭暈是怎么回事?骨傳導耳機好不好

骨傳導耳機在音頻傳輸上采用了不同于傳統耳機的方式。它們通過將聲音振動傳遞到顳骨&#xff0c;然后通過骨骼傳導到內耳&#xff0c;從而使用戶能夠聽到音樂或聲音。 然而&#xff0c;有些人在使用骨傳導耳機時可能會感到頭暈。這可能與以下幾個原因有關&#xff1a; 1、剛開…

prometheusalert區分告警到不同釘釘群

方法一 修改告警規則 - alert: cpu使用率大于88%expr: instance:node_cpu_utilization:ratio * 100 > 88for: 5mlabels:severity: criticallevel: 3kind: CpuUsageannotations:summary: "cpu使用率大于85%"description: "主機 {{ $labels.hostname }} 的cp…

99%的Python用戶都不知道的f-string隱秘技巧

f-string想必很多Python用戶都基礎性的使用過&#xff0c;作為Python3.6版本開始引入的特性&#xff0c;通過它我們可以更加方便地向字符串中嵌入自定義內容&#xff0c;但f-string真正蘊含的功能遠比大多數用戶知道的要豐富&#xff0c;今天我們就來一起get它們~ 「最基礎用法…

ajax解析

Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一種用于在不重新加載整個頁面的情況下與服務器交換數據的技術。它通過異步的方式發送請求和接收響應&#xff0c;能夠實現在后臺與服務器進行數據交互&#xff0c;然后更新頁面的部分內容&#xff0c;從而提升用…

【CI/CD】基于 Jenkins+Docker+Git 的簡單 CI 流程實踐(上)

基于 JenkinsDockerGit 的簡單 CI 流程實踐&#xff08;上&#xff09; 在如今的互聯網時代&#xff0c;隨著軟件開發復雜度的不斷提高&#xff0c;軟件開發和發布管理也越來越重要。目前已經形成一套標準的流程&#xff0c;最重要的組成部分就是 持續集成 及 持續交付、部署。…

GPU編程基礎-CUDA實現圖像處理

GPU編程基礎-CUDA實現圖像處理 1. 相關基礎概念1.1 Host和Device程序1.2 Kernel程序1.3 SIMT和SIMD1.4 GPU計算的 Occupancy指標1.5 GPU計算的基本流程2. GPU計算框架與過程說明3. 一個基于CUDA的圖像處理例子4. 一些報錯解決1. 相關基礎概念 1.1 Host和Device程序 在CPU上運行…

Effective C++學習筆記(7)

目錄 條款41&#xff1a;了解隱式接口和編譯多態條款42&#xff1a;了解typename的雙重意義條款43&#xff1a;學習處理模板化基類內的名稱條款44&#xff1a;將與參數無關的代碼抽離templates條款45&#xff1a;運用成員函數模板接受所有兼容類型條款46&#xff1a;需要類型轉…