0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何徹底搞懂Nginx知識網(wǎng)結(jié)構(gòu)

Linux愛好者 ? 來源:51CTO技術(shù)棧 ? 作者:51CTO技術(shù)棧 ? 2021-05-03 14:15 ? 次閱讀

1.Nginx知識網(wǎng)結(jié)構(gòu)圖

14909dba-a534-11eb-aece-12bb97331649.png

Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好

nginx專為性能優(yōu)化而開發(fā),性能是其最重要的要求,十分注重效率,有報(bào)告nginx能支持高達(dá)50000個(gè)并發(fā)連接數(shù)

1.1反向代理

正向代理

正向代理:局域網(wǎng)中的電腦用戶想要直接訪問網(wǎng)絡(luò)是不可行的,只能通過代理服務(wù)器來訪問,這種代理服務(wù)就被稱為正向代理。

149957de-a534-11eb-aece-12bb97331649.png

反向代理

反向代理:客戶端無法感知代理,因?yàn)榭蛻舳嗽L問網(wǎng)絡(luò)不需要配置,只要把請求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù),然后再返回到客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實(shí)服務(wù)器IP地址

14d0a658-a534-11eb-aece-12bb97331649.png

1.2負(fù)載均衡

客戶端發(fā)送多個(gè)請求到服務(wù)器,服務(wù)器處理請求,有一些可能要與數(shù)據(jù)庫進(jìn)行狡猾,服務(wù)器處理完畢之后,再將結(jié)果返回給客戶端

普通請求和響應(yīng)過程

14dcf8b8-a534-11eb-aece-12bb97331649.png

但是隨著信息數(shù)量增長,訪問量和數(shù)據(jù)量飛速增長,普通架構(gòu)無法滿足現(xiàn)在的需求

我們首先想到的是升級服務(wù)器配置,可以由于摩爾定律的日益失效,單純從硬件提升性能已經(jīng)逐漸不可取了,怎么解決這種需求呢?

我們可以增加服務(wù)器的數(shù)量,構(gòu)建集群,將請求分發(fā)到各個(gè)服務(wù)器上,將原來請求集中到單個(gè)服務(wù)器的情況改為請求分發(fā)到多個(gè)服務(wù)器,也就是我們說的負(fù)載均衡

圖解負(fù)載均衡

14ee6314-a534-11eb-aece-12bb97331649.png

假設(shè)有15個(gè)請求發(fā)送到代理服務(wù)器,那么由代理服務(wù)器根據(jù)服務(wù)器數(shù)量,平均分配,每個(gè)服務(wù)器處理5個(gè)請求,這個(gè)過程就叫做負(fù)載均衡

1.3動(dòng)靜分離

為了加快網(wǎng)站的解析速度,可以把動(dòng)態(tài)頁面和靜態(tài)頁面交給不同的服務(wù)器來解析,加快解析的速度,降低由單個(gè)服務(wù)器的壓力

動(dòng)靜分離之前的狀態(tài)

150163ba-a534-11eb-aece-12bb97331649.png

動(dòng)靜分離之后

150beaa6-a534-11eb-aece-12bb97331649.png

2. nginx如何在linux安裝

3. nginx常用命令

查看版本

。/nginx -v

啟動(dòng)

。/nginx

關(guān)閉(有兩種方式,推薦使用 。/nginx -s quit)

。/nginx -s stop

。/nginx -s quit

重新加載nginx配置

。/nginx -s reload

4.nginx的配置文件

配置文件分三部分組成

全局塊

從配置文件開始到events塊之間,主要是設(shè)置一些影響nginx服務(wù)器整體運(yùn)行的配置指令

并發(fā)處理服務(wù)的配置,值越大,可以支持的并發(fā)處理量越多,但是會受到硬件、軟件等設(shè)備的制約

152d20d6-a534-11eb-aece-12bb97331649.png

events塊

影響nginx服務(wù)器與用戶的網(wǎng)絡(luò)連接,常用的設(shè)置包括是否開啟對多workprocess下的網(wǎng)絡(luò)連接進(jìn)行序列化,是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接等等

支持的最大連接數(shù)

153adf46-a534-11eb-aece-12bb97331649.png

http塊

諸如反向代理和負(fù)載均衡都在此配置

location指令說明

該語法用來匹配url,語法如下

location[ = | ~ | ~* | ^~] url{

}

=:用于不含正則表達(dá)式的url前,要求字符串與url嚴(yán)格匹配,匹配成功就停止向下搜索并處理請求

~:用于表示url包含正則表達(dá)式,并且區(qū)分大小寫。

~*:用于表示url包含正則表達(dá)式,并且不區(qū)分大瞎寫

^~:用于不含正則表達(dá)式的url前,要求ngin服務(wù)器找到表示url和字符串匹配度最高的location后,立即使用此location處理請求,而不再匹配

如果有url包含正則表達(dá)式,不需要有~開頭標(biāo)識

4.1 反向代理實(shí)戰(zhàn)

配置反向代理

目的:在瀏覽器地址欄輸入地址www.123.com跳轉(zhuǎn)linux系統(tǒng)tomcat主頁面

具體實(shí)現(xiàn)

先配置tomcat:因?yàn)楸容^簡單,此處不再贅敘

并在windows訪問

15437372-a534-11eb-aece-12bb97331649.png

具體流程

1551e5b0-a534-11eb-aece-12bb97331649.png

修改之前

配置

1564245a-a534-11eb-aece-12bb97331649.png

再次訪問

反向代理2

1.目標(biāo)

訪問http://192.168.25.132:9001/edu/ 直接跳轉(zhuǎn)到192.168.25.132:8080

訪問http://192.168.25.132:9001/vod/ 直接跳轉(zhuǎn)到192.168.25.132:8081

2.準(zhǔn)備

配置兩個(gè)tomcat,端口分別為8080和8081,都可以訪問,端口修改配置文件即可。

15ef2316-a534-11eb-aece-12bb97331649.png

新建文件內(nèi)容分別添加8080?。?!和8081?。?!

15fd1048-a534-11eb-aece-12bb97331649.png

16083aea-a534-11eb-aece-12bb97331649.png

響應(yīng)如下

1612b178-a534-11eb-aece-12bb97331649.png

161b3c1c-a534-11eb-aece-12bb97331649.png

3.具體配置

16248ce0-a534-11eb-aece-12bb97331649.png

重新加載nginx

。/nginx -s reload

訪問

162dfdfc-a534-11eb-aece-12bb97331649.png

162dfdfc-a534-11eb-aece-12bb97331649.png

實(shí)現(xiàn)了同一個(gè)端口代理,通過edu和vod路徑的切換顯示不同的頁面

4.2 反向代理小結(jié)

第一個(gè)例子:

瀏覽器訪問www.123.com,由host文件解析

出服務(wù)器ip地址

192.168.25.132 www.123.com

然后默認(rèn)訪問80端口,而通過nginx監(jiān)聽80端口代理到本地的8080端口上,從而實(shí)現(xiàn)了訪問www.123.com,最終轉(zhuǎn)發(fā)到tomcat 8080上去

第二個(gè)例子:

訪問http://192.168.25.132:9001/edu/ 直接跳轉(zhuǎn)到192.168.25.132:8080

訪問http://192.168.25.132:9001/vod/ 直接跳轉(zhuǎn)到192.168.25.132:8081

實(shí)際上就是通過nginx監(jiān)聽9001端口,然后通過正則表達(dá)式選擇轉(zhuǎn)發(fā)到8080還是8081的tomcat上去

4.3 負(fù)載均衡實(shí)戰(zhàn)

1.修改nginx.conf

16657930-a534-11eb-aece-12bb97331649.png

167191a2-a534-11eb-aece-12bb97331649.png

2.重啟nginx

。/nginx -s reload

3.在8081的tomcat的webapps文件夾下新建edu文件夾和a.html文件,填寫內(nèi)容為8081?。。?!

4.在地址欄回車,就會分發(fā)到不同的tomcat服務(wù)器上

168da2fc-a534-11eb-aece-12bb97331649.png

16968b92-a534-11eb-aece-12bb97331649.png

3.負(fù)載均衡方式

輪詢(默認(rèn))

weight,代表權(quán),權(quán)越高優(yōu)先級越高

16b1f828-a534-11eb-aece-12bb97331649.png

fair,按后端服務(wù)器的響應(yīng)時(shí)間來分配請求,相應(yīng)時(shí)間短的優(yōu)先分配

16ba08ce-a534-11eb-aece-12bb97331649.png

ip_hash,每個(gè)請求按照訪問ip的hash結(jié)果分配,這樣每一個(gè)訪客固定的訪問一個(gè)后端服務(wù)器,可以解決session 的問題

16c2b834-a534-11eb-aece-12bb97331649.png

4.4 動(dòng)靜分離實(shí)戰(zhàn)

什么是動(dòng)靜分離

把動(dòng)態(tài)請求和靜態(tài)請求分開,不是講動(dòng)態(tài)頁面和靜態(tài)頁面物理分離,可以理解為nginx處理靜態(tài)頁面,tomcat處理動(dòng)態(tài)頁面

動(dòng)靜分離大致分為兩種:一、純粹將靜態(tài)文件獨(dú)立成單獨(dú)域名放在獨(dú)立的服務(wù)器上,也是目前主流方案;二、將動(dòng)態(tài)跟靜態(tài)文件混合在一起發(fā)布,通過nginx分開

動(dòng)靜分離圖析

16d581ee-a534-11eb-aece-12bb97331649.png

實(shí)戰(zhàn)準(zhǔn)備

準(zhǔn)備靜態(tài)文件

170365aa-a534-11eb-aece-12bb97331649.png

1725b434-a534-11eb-aece-12bb97331649.png

配置nginx

172eedec-a534-11eb-aece-12bb97331649.png

5.nginx高可用

如果nginx出現(xiàn)問題

173923d4-a534-11eb-aece-12bb97331649.png

解決辦法

1745d700-a534-11eb-aece-12bb97331649.png

前期準(zhǔn)備

兩臺nginx服務(wù)器

安裝keepalived

虛擬ip

5.1安裝keepalived

[root@192 usr]# yum install keepalived -y

[root@192 usr]# rpm -q -a keepalived

keepalived-1.3.5-16.el7.x86_64

修改配置文件

[root@192 keepalived]# cd /etc/keepalived

[root@192 keepalived]# vi keepalived.conf

分別將如下配置文件復(fù)制粘貼,覆蓋掉keepalived.conf

虛擬ip為192.168.25.50

對應(yīng)主機(jī)ip需要修改的是

smtp_server 192.168.25.147(主)smtp_server 192.168.25.147(備)

state MASTER(主) state BACKUP(備)

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.25.147

smtp_connect_timeout 30

router_id LVS_DEVEL # 訪問的主機(jī)地址

}

vrrp_script chk_nginx {

script “/usr/local/src/nginx_check.sh” # 檢測文件的地址

interval 2 # 檢測腳本執(zhí)行的間隔

weight 2 # 權(quán)重

}

vrrp_instance VI_1 {

state BACKUP # 主機(jī)MASTER、備機(jī)BACKUP

interface ens33 # 網(wǎng)卡

virtual_router_id 51 # 同一組需一致

priority 90 # 訪問優(yōu)先級,主機(jī)值較大,備機(jī)較小

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.25.50 # 虛擬ip

}

}

啟動(dòng)

[root@192 sbin]# systemctl start keepalived.service

176fc9b6-a534-11eb-aece-12bb97331649.png

訪問虛擬ip成功

1785b38e-a534-11eb-aece-12bb97331649.png

關(guān)閉主機(jī)147的nginx和keepalived,發(fā)現(xiàn)仍然可以訪問

6.原理解析

17bc68ac-a534-11eb-aece-12bb97331649.png

如下圖,就是啟動(dòng)了一個(gè)master,一個(gè)worker,master是管理員,worker是具體工作的進(jìn)程

17c7a7b2-a534-11eb-aece-12bb97331649.png

worker如何工作

17d218b4-a534-11eb-aece-12bb97331649.png

小結(jié)

worker數(shù)應(yīng)該和CPU數(shù)相等

一個(gè)master多個(gè)worker可以使用熱部署,同時(shí)worker是獨(dú)立的,一個(gè)掛了不會影響其他的

原文標(biāo)題:搞懂Nginx,一篇文章就夠了

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10863

    瀏覽量

    211797
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    149

    瀏覽量

    12176

原文標(biāo)題:搞懂Nginx,一篇文章就夠了

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    nginx+lua+redis實(shí)現(xiàn)灰度發(fā)布

    作者:馬仁喜 前言: 授人以魚不如授人以漁 .先學(xué)會用,在學(xué)原理,在學(xué)創(chuàng)造,可能一輩子用不到這種能力,但是不能不具備這種能力。這篇文章主要是沉淀使用nginx+lua+redis實(shí)現(xiàn)灰度,當(dāng)我們具備
    的頭像 發(fā)表于 12-17 10:01 ?71次閱讀

    Nginx日常運(yùn)維方法Linux版

    1,安裝? 下載RPM:wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx
    的頭像 發(fā)表于 12-06 16:38 ?161次閱讀
    <b class='flag-5'>Nginx</b>日常運(yùn)維方法Linux版

    「服務(wù)器」Nginx Proxy Manager申請cloudflare泛域名

    一概述NginxProxyManager是一個(gè)基于Nginx的反向代理管理工具,它提供了一個(gè)用戶友好的Web界面,方便用戶管理和配置Nginx反向代理。主要功能包括:簡易的用戶界面:通過圖形界面
    的頭像 發(fā)表于 12-06 01:03 ?168次閱讀
    「服務(wù)器」<b class='flag-5'>Nginx</b> Proxy Manager申請cloudflare泛域名

    詳解nginx中的正則表達(dá)式

    前言,我這里驗(yàn)證的nginx-v1.23.2單機(jī)環(huán)境下的nginx中的正則表達(dá)式、location路徑匹配規(guī)則和優(yōu)先級。
    的頭像 發(fā)表于 12-03 09:59 ?186次閱讀
    詳解<b class='flag-5'>nginx</b>中的正則表達(dá)式

    確保網(wǎng)站無縫運(yùn)行:Keepalived高可用與Nginx集成實(shí)戰(zhàn)

    nginx負(fù)載均衡機(jī)高可用 腦裂 腦裂產(chǎn)生的原因 腦裂的常見解決方案 對腦裂進(jìn)行監(jiān)控 keepalived簡介 keepalived官網(wǎng) Keepalived 軟件起初是專為LVS負(fù)載均衡軟件設(shè)計(jì)
    的頭像 發(fā)表于 11-27 09:08 ?419次閱讀
    確保網(wǎng)站無縫運(yùn)行:Keepalived高可用與<b class='flag-5'>Nginx</b>集成實(shí)戰(zhàn)

    nginx隱藏版本號與WEB服務(wù)器信息

    nginx不僅可以隱藏版本信息,還支持自定義web服務(wù)器信息 先看看最終的隱藏結(jié)果吧 具體怎么實(shí)現(xiàn)呢,其實(shí)也很簡單,請往下看 1 官網(wǎng)下載最新穩(wěn)定版 wget http://nginx
    的頭像 發(fā)表于 11-22 10:25 ?167次閱讀
    <b class='flag-5'>nginx</b>隱藏版本號與WEB服務(wù)器信息

    nginx負(fù)載均衡配置介紹

    目錄 nginx負(fù)載均衡 nginx負(fù)載均衡介紹 反向代理與負(fù)載均衡 nginx負(fù)載均衡配置 Keepalived高可用nginx負(fù)載均衡器 修改Web服務(wù)器的默認(rèn)主頁 開啟
    的頭像 發(fā)表于 11-10 13:39 ?246次閱讀
    <b class='flag-5'>nginx</b>負(fù)載均衡配置介紹

    以太網(wǎng)結(jié)構(gòu)是怎樣的

    以太網(wǎng)幀(Ethernet Frame)是以太網(wǎng)(Ethernet)協(xié)議用于在局域網(wǎng)(LAN)中傳輸數(shù)據(jù)的基本單位。理解以太網(wǎng)幀的結(jié)構(gòu)對于掌
    的頭像 發(fā)表于 10-08 10:00 ?1078次閱讀

    nginx中的正則表達(dá)式和location路徑匹配指南

    前言,我這里驗(yàn)證的nginx-v1.23.2單機(jī)環(huán)境下的nginx中的正則表達(dá)式、location路徑匹配規(guī)則和優(yōu)先級。
    的頭像 發(fā)表于 09-29 16:02 ?789次閱讀
    <b class='flag-5'>nginx</b>中的正則表達(dá)式和location路徑匹配指南

    Jtti:美國VPS開啟nginx狀態(tài)監(jiān)控,查看web服務(wù)器的并發(fā)連接數(shù)

    Nginx的ngx_http_stub_status_module提供能夠獲取Nginx自上次啟動(dòng)以來的工作狀態(tài)的功能。如果需要啟用此功能的話,需要在編譯的過程中添加如下參數(shù)
    的頭像 發(fā)表于 08-26 15:42 ?288次閱讀

    nginx重啟命令linux步驟是什么?

      1、驗(yàn)證nginx配置文件是否正確   方法一:進(jìn)入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示nginx.conf syntax is ok
    發(fā)表于 07-11 17:13

    nginx重啟命令linux步驟是什么?

      1、驗(yàn)證nginx配置文件是否正確   方法一:進(jìn)入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示nginx.conf syntax is ok
    發(fā)表于 07-10 16:40

    以太網(wǎng)怎么連接 以太網(wǎng)組網(wǎng)結(jié)構(gòu)分析

    以太網(wǎng)的組網(wǎng)結(jié)構(gòu)涉及多個(gè)層面和組件。首先,從網(wǎng)絡(luò)結(jié)構(gòu)的角度來看,以太網(wǎng)分為物理層、數(shù)據(jù)鏈路層和高層用戶層。其中,物理層采用特定的通信媒體,如50Ω基帶同軸電纜,實(shí)現(xiàn)數(shù)據(jù)的傳輸。數(shù)據(jù)鏈路
    的頭像 發(fā)表于 03-08 17:19 ?3343次閱讀
    以太<b class='flag-5'>網(wǎng)</b>怎么連接 以太<b class='flag-5'>網(wǎng)</b>組網(wǎng)<b class='flag-5'>結(jié)構(gòu)</b>分析

    Apache服務(wù)器和Nginx服務(wù)器

    Apache和Nginx都是常見的開源Web服務(wù)器軟件,它們用于處理HTTP請求并提供網(wǎng)站和應(yīng)用程序的服務(wù)。下面是對Apache和Nginx的一些基本特點(diǎn)的比較: 一、Apache HTTP
    的頭像 發(fā)表于 01-22 16:48 ?565次閱讀

    Nginx在Windows/docker中的使用

    nginx 是一個(gè)高性能的開源反向代理服務(wù)器和 web 服務(wù)器,一般用來搭建靜態(tài)資源服務(wù)器、負(fù)載均衡器、反向代理,本文將分享其在 Windows/docker 中的使用,使用 nssm 部署成服務(wù)的方案腳本,局域網(wǎng)中自定義域名解決https提示不安全的解決方案,以及一路踩
    的頭像 發(fā)表于 01-03 10:20 ?1886次閱讀
    <b class='flag-5'>Nginx</b>在Windows/docker中的使用