別再問我Nginx是什麼,拿去不謝


1.爲什麼要用nginx?它是怎麼來的?

首先我們知道,在網站輸入網址的時候訪問某一個網站,可以得到想要的結果,如果是淘寶呢,淘寶購物每天用戶量非常大,達到百萬或者千萬級怎麼辦了,這個時候人太多了,訪問的時候操作系統的多線程和進程建的切換消耗了大量的CPU資源,嚴重會導致服務器宕機,失去用戶量,企業面臨破產。所以就有一個能解決併發訪問服務器的東西,所以這個東西就橫空出世了,它就是nginx高性能服務器。是由俄羅斯的工程師Igor Sysoev,他在爲Rambler Media工作期間,使用C語言開發了Nginx。Nginx作爲WEB服務器一直爲Rambler Media提供出色而又穩定的服務。

2.什麼叫nginx高性能服務器?有什麼特點?

nginx高性能服務器:是一種自由的,開源的,高性能的HTTP服務器;同時也是一個IMAP,POP3,SMTP代理服務器;用來實現負載均衡的。

特點:

高可用,高併發,熱部署,高擴展,低消耗。

3.nginx的下載安裝和各種命令輸入?

在百度裏輸入nginx,找到官網並進行下載(如果不會安裝,網上有很多詳細的教程,這裏就不多說)。

下載安裝(本機的安裝在”/usr/local/var/log/nginx)

然後進入這個nginx 目錄中執行命令:

nginx -v/h都可以查看版本號

nginx -t查看其它內容:如下圖

nginx: [alert] could not open error log file: open() "/usr/local/var/log/nginx/error.log" failed (13: Permission denied)

nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok

2020/02/03 21:22:01 [emerg] 33718#0: open() "/usr/local/var/log/nginx/access.log" failed (13: Permission denied)

nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed

 

nginx -?可以查看很多命令

 

4.nginx幹什麼用的?

作爲代理進行實現負載均衡。

何爲代理:代理就是一個代表,一個渠道,也就是中間站。

代理可以分爲正向代理和反向代理。明白這個概念。

正向代理:在如今的技術網絡時代,由於技術收到限制,我們需要查詢或者學習國外的技術或課程,我們通過瀏覽器時沒有辦法進去的,訪問不到,此時我們要進去的話,採用一個其它方式進去,那就是

FQ,FQ主要是找到一個可以訪問的國外網站的代理服務器,我們講請求發送給代理服務器,代理服務器取訪問國外的網站,然後講訪問到的數據傳送給我們。(如果沒法理解的話,舉個簡單的日常例子,比如說,我們要買一些東西,在國內買不到,需要在國外去買,可是去國外沒有認識的人,根本行不通,可以交給在國內的代理人,專門代理採購國外的商品的人,然後代理人在國外採購的商品直接用物流發送到你的手上。這就是正向代理)

正向代理最大的特點是客戶端非常明確要訪問的服務器;服務器只清楚請求來自哪個代理服務器,而不清楚來自哪個具體的客戶端;正向代理模式屏蔽或者隱藏了真實客戶端信息。來看個示意圖(我把客戶端和正向代理框在一塊,同屬於一個環境,

 

 

 

 

 

本地電腦都是客戶端必須設置正向代理服務器,前提條件是知道正向代理服務器的IP地址。

正向代理服務器就是客戶端,是一個位於客戶端和原始服務器之間的服務器。

 

正向代理的作用:

1.用於訪問國外網站,國內找不到的資源。

2.可以做緩存,加速訪問資源

3.對客戶端訪問授權,上網進行認證

4.代理可以記錄用戶訪問記錄(上網行爲管理),對外隱藏用戶信息

反向代理:毫無疑問就是和正向代理相反的作用,這是宏觀上的表現理解而己。舉個例子讓大家明白一下:某寶網站,每天同時連接到網站的訪問人數已經爆表,單個服務器遠遠不能滿足人民日益增長的購買慾望了,此時就出現了一個大家耳熟能詳的名詞:分佈式部署;

也就是通過部署多臺服務器來解決訪問人數限制的問題;某寶網站中大部分功能也是直接使用Nginx進行反向代理實現的,並且通過封裝Nginx和其他的組件之後起了個高大上的名字:Tengine。

有興趣的童鞋可以訪問Tengine的官網查看具體的信息:http://tengine.taobao.org/。那麼反向代理具體是通過什麼樣的方式實現的分佈式的集羣操作呢,我們先看一個示意圖

 

通過上圖可以看出:多個客戶端給服務器發送的請求,Nginx服務器接收到之後,按照一定的規則分發給了後端的業務處理服務器進行處理了。此時~請求的來源也就是客戶端是明確的,但是請求具體由哪臺服務器處理的並不明確了,Nginx扮演的就是一個反向代理角色。

反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。因爲客戶端不需要任何配置就可以訪問。

反向代理,"它代理的是服務端",主要用於服務器集羣分佈式部署的情況下,反向代理隱藏了服務器的信息。

反向代理的作用:

1.保證內網的安全,通常將反向代理作爲公網訪問地址,Web服務器是內網

2.負載均衡,通過反向代理服務器來優化網站的負載

 

5.實際項目中的使用場景業務介紹

正向代理和反向代理很有可能會存在在一個應用場景中,正向代理代理客戶端的請求去訪問目標服務器,目標服務器是一個反向單利服務器,反向代理了多臺真實的業務處理服務器。

 

上圖中的圖片來源於網絡,便於大家理解,一目瞭然。

正向代理和反向代理的區別:

1.正向代理是客戶端,信息被隱藏了。

2.反向代理是服務端,信息也被隱藏了。

下圖中表示:

 

實際上,Proxy在兩種代理中做的事情都是替服務器代爲收發請求和響應,不過從結構上看正好左右互換了一下,所以把後出現的那種代理方式稱爲反向代理了

負載均衡:客戶端發送的、Nginx反向代理服務器接收到的請求數量,就是我們說的負載量。請求數量按照一定的規則進行分發到不同的服務器處理的規則,就是一種均衡規則。

所以~將服務器接收到的請求按照規則分發的過程,稱爲負載均衡。

 

6.性能調優

零拷貝基礎:一個存儲到其它存儲的任務是沒有CPU參與的網絡文件傳輸,提高工作工作效率。

傳統拷貝方式:4次空間轉換,4次複製,兩次有CPU參與。

太浪費空間了和CPU

零拷貝方式:

2次空間轉換,2次複製,0次複製是由CPU參與的

多路複用器selectpollepoll

 

select多路複用器底層是數組實現的

poll多路器底層是鏈表實現的

epoll多路複用器是鏈表實現

在這裏什麼是多路複用器?幹什麼用的?

多路複用器就是把所有的傳輸信號集合在一起傳輸,互不干擾,利用率高。

負載均衡的實現

1.硬件負載均衡比較貴,十幾萬到百萬。

2.軟件負載均衡成本爲0,比較好的一種實現方法。

以上就是Nginx的學習方式了,希望幫助到大家!!!

發佈了8 篇原創文章 · 獲贊 6 · 訪問量 3028
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章