www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]Nginx是一個高性能的HTTP和反向代理服務(wù)器,特點是占用內(nèi)存少,并發(fā)能力強,事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好。

原文鏈接:https://blog.csdn.net/yujing1314/article/details/107000737

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

一文讀懂Nginx


一文讀懂Nginx


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

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

基礎(chǔ)概念

正向代理

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

一文讀懂Nginx


反向代理

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

一文讀懂Nginx


負載均衡

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

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

一文讀懂Nginx


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

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

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

圖解負載均衡:

一文讀懂Nginx


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

動靜分離

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

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

一文讀懂Nginx


動靜分離之后:

一文讀懂Nginx


Nginx如何在linux安裝

一文讀懂Nginx


第一種:Linux系統(tǒng)

CentOS 7 64位

下載以下安裝包,用Xftp放入Linux系統(tǒng)。


一文讀懂Nginx


第一步: 安裝pcre依賴

解壓壓縮文件,進入解壓之后的目錄執(zhí)行./configure,然后執(zhí)行make && make install。

一文讀懂Nginx


查看是否安裝成功:
   
[root@localhost?pcre-8.37] #?pcre-config?--version


一文讀懂Nginx

第二步:安裝其他依賴

[root@localhost?pcre-8.37]#?yum?-y?make?zlib?zlib-devel?gcc-c++?libtool?openssl?openssl-devel

一文讀懂Nginx


第三步:安裝Nginx

解壓Nginx,進入Nginx目錄,執(zhí)行./configure:

一文讀懂Nginx


執(zhí)行make && make install:

一文讀懂Nginx


去sbin文件夾下啟動Nginx 。

cd?/usr/local/nginx/sbin


一文讀懂Nginx


檢查是否啟動成功。

[root@localhost?sbin]#?ps?-ef|grep?nginx


一文讀懂Nginx


第二種

Linux系統(tǒng)

Red Hat Enterprise Linux Server release 6.5 (Santiago)

提前需要準備的:

Nginx源碼:http://nginx.org/en/download.html

yum 安裝教程: https://blog.csdn.net/yujing1314/article/details/97237644

gcc-c++:

[root@localhost?~]yum?install?gcc-c++

第三方開發(fā)包:

[root@localhost?~]yum?install?-y?pcre?pcre-devel
[root@localhost?~]yum?install?-y?zlib?zlib-devel
[root@localhost?~]yum?install?-y?openssl?openssl-devel


安裝步驟:

第一步:把Nginx的源碼包上傳到Linux系統(tǒng)。

我使用的SecureCRT的sftp文件傳輸,直接把文件拖進去就OK了。

一文讀懂Nginx


第二步:解壓縮

[root@localhost?~]tar?zxf?nginx-1.8.0.tar.gz

第三步:使用configure命令創(chuàng)建一makeFile文件

./configure
–prefix=/usr/local/nginx
–pid-path=/var/run/nginx/nginx.pid
–lock-path=/var/lock/nginx.lock
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–with-http_gzip_static_module
–http-client-body-temp-path=/var/temp/nginx/client
–http-proxy-temp-path=/var/temp/nginx/proxy
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi
–http-scgi-temp-path=/var/temp/nginx/scgi

第四步:上一步可能會報錯,因為缺少temp文件,如下創(chuàng)建即可

[root@localhost?sbin]#?mkdir?/var/temp/nginx/client?-p

第五步:make

直接輸入make。

第六步:make install

直接輸入make install。

開啟Nginx:

[root@localhost?sbin]#?./nginx

如何查看進程[root@bogon stefan]# ps aux|grep nginx:

一文讀懂Nginx


關(guān)閉Nginx:

[root@localhost?sbin]#?./nginx?-s?stop

推薦使用:

[root@localhost?sbin]#?./nginx?-s?quit


測試

輸入你虛擬機的IP,如下圖就成功了。

一文讀懂Nginx


如果測試失敗,注意查看虛擬機防火墻是否關(guān)閉


Nginx常用命令

一文讀懂Nginx


查看版本:

./nginx?-v

啟動:

./nginx

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

?./nginx?-s?stop
?./nginx?-s?quit

重新加載Nginx配置:

./nginx?-s?reload


Nginx的配置文件

一文讀懂Nginx


配置文件分三部分組成。

1、全局塊

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

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

一文讀懂Nginx

2、events塊

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

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

一文讀懂Nginx

3、http塊

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

location指令說明:

該語法用來匹配url,語法如下:
   
location[?=?|?~?|?~*?|?^~]?url{

}

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

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

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

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

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


反向代理實戰(zhàn)

配置反向代理

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

具體實現(xiàn):

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

并在Windows訪問:

一文讀懂Nginx


具體流程:

一文讀懂Nginx


修改之前:

一文讀懂Nginx


配置:

一文讀懂Nginx


再次訪問:

一文讀懂Nginx


反向代理2

目標:

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


準備:

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

一文讀懂Nginx

一文讀懂Nginx


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

一文讀懂Nginx

一文讀懂Nginx


響應(yīng)如下:

一文讀懂Nginx

一文讀懂Nginx


具體配置:

一文讀懂Nginx


重新加載Nginx:

./nginx?-s?reload

訪問:

一文讀懂Nginx

一文讀懂Nginx


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

反向代理小結(jié)

第一個例子:瀏覽器訪問www.123.com,由host文件解析 出服務(wù)器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上去。

負載均衡實戰(zhàn)

修改nginx.conf:

一文讀懂Nginx

一文讀懂Nginx


重啟Nginx:

./nginx?-s?reload

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

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

一文讀懂Nginx

一文讀懂Nginx


負載均衡方式:

1、輪詢(默認)

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


一文讀懂Nginx


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


一文讀懂Nginx


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


一文讀懂Nginx


動靜分離實戰(zhàn)

什么是動靜分離

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

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

動靜分離圖析:

一文讀懂Nginx


實戰(zhàn)準備

準備靜態(tài)文件:

一文讀懂Nginx

一文讀懂Nginx


配置Nginx:

一文讀懂Nginx


Nginx高可用

一文讀懂Nginx


如果Nginx出現(xiàn)問題:

一文讀懂Nginx


解決辦法:

一文讀懂Nginx


前期準備:

  • 兩臺Nginx服務(wù)器

  • 安裝Keepalived

  • 虛擬IP


安裝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)主機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???#?權(quán)重
}

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

一文讀懂Nginx


訪問虛擬IP成功。

一文讀懂Nginx


關(guān)閉主機147的Nginx和Keepalived,發(fā)現(xiàn)仍然可以訪問。


原理解析

一文讀懂Nginx


一文讀懂Nginx


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

一文讀懂Nginx


Worker如何工作:

一文讀懂Nginx


小結(jié)

一文讀懂Nginx


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

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

特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

一文讀懂Nginx

一文讀懂Nginx

一文讀懂Nginx

長按訂閱更多精彩▼

一文讀懂Nginx

如有收獲,點個在看,誠摯感謝

免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉