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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

如何徹底搞懂Nginx知識網(wǎng)結構

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

1.Nginx知識網(wǎng)結構圖

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

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

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

1.1反向代理

正向代理

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

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

反向代理

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

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

1.2負載均衡

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

普通請求和響應過程

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

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

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

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

圖解負載均衡

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

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

1.3動靜分離

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

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

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

動靜分離之后

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

2. nginx如何在linux安裝

3. nginx常用命令

查看版本

。/nginx -v

啟動

。/nginx

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

。/nginx -s stop

。/nginx -s quit

重新加載nginx配置

。/nginx -s reload

4.nginx的配置文件

配置文件分三部分組成

全局塊

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

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

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

events塊

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

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

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

http塊

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

location指令說明

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

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

}

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

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

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

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

如果有url包含正則表達式,不需要有~開頭標識

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

配置反向代理

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

具體實現(xiàn)

先配置tomcat:因為比較簡單,此處不再贅敘

并在windows訪問

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

具體流程

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

修改之前

配置

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

再次訪問

反向代理2

1.目標

訪問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.準備

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

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

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

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

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

響應如下

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

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

4.2 反向代理小結

第一個例子:

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

出服務器ip地址

192.168.25.132 www.123.com

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

第二個例子:

訪問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

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

4.3 負載均衡實戰(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服務器上

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

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

3.負載均衡方式

輪詢(默認)

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

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

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

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

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

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

4.4 動靜分離實戰(zhàn)

什么是動靜分離

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

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

動靜分離圖析

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

實戰(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

前期準備

兩臺nginx服務器

安裝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

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

虛擬ip為192.168.25.50

對應主機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 # 訪問的主機地址

}

vrrp_script chk_nginx {

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

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

weight 2 # 權重

}

vrrp_instance VI_1 {

state BACKUP # 主機MASTER、備機BACKUP

interface ens33 # 網(wǎng)卡

virtual_router_id 51 # 同一組需一致

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

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.25.50 # 虛擬ip

}

}

啟動

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

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

訪問虛擬ip成功

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

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

6.原理解析

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

如下圖,就是啟動了一個master,一個worker,master是管理員,worker是具體工作的進程

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

worker如何工作

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

小結

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

一個master多個worker可以使用熱部署,同時worker是獨立的,一個掛了不會影響其他的

原文標題:搞懂Nginx,一篇文章就夠了

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

責任編輯:haq

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

    關注

    68

    文章

    10804

    瀏覽量

    210839
  • nginx
    +關注

    關注

    0

    文章

    142

    瀏覽量

    12154

原文標題:搞懂Nginx,一篇文章就夠了

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

收藏 人收藏

    評論

    相關推薦

    nginx負載均衡配置介紹

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

    以太網(wǎng)結構是怎樣的

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

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

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

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

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

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

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

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

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

    以太網(wǎng)怎么連接 以太網(wǎng)組網(wǎng)結構分析

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

    Apache服務器和Nginx服務器

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

    Nginx在Windows/docker中的使用

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

    如何通過Nginx實現(xiàn)禁止國外IP訪問網(wǎng)站

    最近不少小伙伴反饋自己維護的項目中,經(jīng)常在后臺可以看到來自國外IP的攻擊,令人頭疼。今天浩道跟大家分享如何通過Nginx來實現(xiàn)禁止國外IP訪問網(wǎng)站,確保你網(wǎng)站免遭國外IP攻擊了!
    的頭像 發(fā)表于 12-01 11:12 ?1356次閱讀
    如何通過<b class='flag-5'>Nginx</b>實現(xiàn)禁止國外IP訪問網(wǎng)站

    Nginx的配置文件如何設置頭信息保留真實IP不丟失

    Nginx 配置中設置頭信息以保留客戶端的真實 IP 地址通常是在使用反向代理的場景中需要的。當 Nginx 作為反向代理時,客戶端的真實 IP 地址可能會在轉(zhuǎn)發(fā)請求時丟失,因為到達應用服務器
    的頭像 發(fā)表于 11-30 10:54 ?1809次閱讀

    一張圖搞懂為什么去耦電容要好幾種容值?

    一張圖搞懂為什么去耦電容要好幾種容值?
    的頭像 發(fā)表于 11-27 15:47 ?481次閱讀
    一張圖<b class='flag-5'>搞懂</b>為什么去耦電容要好幾種容值?

    了解這些就可以搞懂 IGBT

    了解這些就可以搞懂 IGBT
    的頭像 發(fā)表于 11-24 15:47 ?2880次閱讀
    了解這些就可以<b class='flag-5'>搞懂</b> IGBT

    搞懂什么是電容器的等效串聯(lián)電阻

    搞懂什么是電容器的等效串聯(lián)電阻
    的頭像 發(fā)表于 11-23 16:14 ?1786次閱讀
    <b class='flag-5'>搞懂</b>什么是電容器的等效串聯(lián)電阻

    在應用層nginx的處理流程

    數(shù)據(jù)包從網(wǎng)卡到nginx 本文將研究一個數(shù)據(jù)包從被網(wǎng)卡接收到流出應用層到底經(jīng)歷了什么,并探究在應用層nginx的處理流程。**注:**本文只討論物理網(wǎng)卡,暫不涉及虛擬網(wǎng)卡。 從網(wǎng)卡到內(nèi)存 1
    的頭像 發(fā)表于 11-13 14:44 ?478次閱讀
    在應用層<b class='flag-5'>nginx</b>的處理流程