天天看點

作為一名前端,該如何了解Nginx?

作為一名前端,該如何了解Nginx?

作為一名小前端,隻需要好好寫代碼,至于部署相關的操作,我們通常接觸不到,正所謂專業的人幹專業的事,我們在工作中并不需要去配置,但這并不代表不需要了解,相信大家都多多少少聽過nginx,是以今天就聊聊,還請大家多多支援~

作為一名前端,該如何了解Nginx?

Nginx是什麼?

​Nginx​

​ (engine x) 是一個輕量級、高性能的HTTP和反向代理伺服器,同時也是一個通用代理伺服器(TCP/UDP/IMAP/POP3/SMTP),最初由俄羅斯人Igor Sysoev編寫。

簡單的說:

  • ​Nginx​

    ​​是一個擁有高性能HTTP和反向代理伺服器,其特點是​

    ​占用記憶體少​

    ​​,​

    ​并發能力強​

    ​,并且在現實中,nginx的并發能力要比在同類型的網頁伺服器中表現要好
  • ​Nginx​

    ​​專為​

    ​性能優化​

    ​​而開發,最重要的要求便是​

    ​性能​

    ​,且十分注重效率,有報告nginx能支援高達50000個并發連接配接數

正向代理和反向代理

Nginx 是一個反向代理伺服器,那麼反向代理是什麼呢?我們先看看什麼叫做正向代理

正向代理:區域網路中的電腦使用者想要直接通路網絡是不可行的,隻能通過代理伺服器(Server)來通路,這種代理服務就被稱為正向代理。

就好比我們倆在一塊,直接對話即可,但如果我和你分隔兩地,我們要想對話,必須借助一個通訊裝置(如:電話)來溝通,那麼這個通訊裝置就是"代理伺服器",這種行為稱為“正向代理”

那麼反向代理是什麼呢?

反向代理:用戶端無法感覺代理,因為用戶端通路網絡不需要配置,隻要把請求發送到反向代理伺服器,由反向代理伺服器去選擇目标伺服器擷取資料,然後再傳回到用戶端,此時反向代理伺服器和目标伺服器對外就是一個伺服器,暴露的是代理伺服器位址,隐藏了真實伺服器IP位址。

在正向代理中,我向你打電話,你能看到向你打電話的電話号碼,由電話号碼知道是我給你打的,那麼此時我用​

​虛拟電話​

​​給你打過去,你看到的不再是我的手機号,而是​

​虛拟号碼​

​,你便不知道是我給你打的,這種行為變叫做"反向代理"。

在以上述的例子簡單的說下:

  • 正向代理:我通過我的手機(proxy Server)去給你打電話,相當于我和我的手機是一個整體,與你的手機(Server)是分開的
  • 反向代理:我通過我的手機(proxy Server)通過軟體轉化為虛拟号碼去給你打電話,此時相當于我的手機和你的手機是一個整體,和我是分開的

負載均衡

負載均衡:是高可用網絡基礎架構的關鍵元件,通常用于将工作負載分布到多個伺服器來提高網站、應用、資料庫或其他服務的性能和可靠性。

如果沒有負載均衡,用戶端與服務端的操作通常是:用戶端請求服務端,然後服務端去資料庫查詢資料,将傳回的資料帶給用戶端:

作為一名前端,該如何了解Nginx?

但随着用戶端越來越多,資料,通路量飛速增長,這種情況顯然無法滿足,我們從上圖發現,用戶端的請求和相應都是通過服務端的,那麼我們加大服務端的量,讓多個服務端分擔,是不是就能解決這個問題了呢?

但此時對于用戶端而言,他去通路這個位址就是固定的,才不會去管那個服務端有時間,你隻要給我傳回出資料就OK了,是以我們就需要一個“管理者“,将這些服務端找個老大過來,用戶端直接找老大,再由老大配置設定誰處理誰的資料,進而減輕服務端的壓力,而這個”老大“就是反向代理伺服器,而端口号就是這些服務端的工号。

作為一名前端,該如何了解Nginx?

像這樣,當有15個請求時,反向代理伺服器會平均配置設定給服務端,也就是各處理5個,這個過程就稱之為:負載均衡

動靜分離

當用戶端發起請求時,正常的情況是這樣的:

作為一名前端,該如何了解Nginx?

就好比你去找客服,一般先是先說一大堆官方的話,你問什麼,他都會這麼說,那麼這個就叫靜态資源(可以了解為是html,css)

而回答具體的問題時,每個回答都是不同的,而這些不同的就叫做動态資源(會改變,可以了解為是變量)

在未分離的時候,可以了解為每個客服都要先說出官方的話,在打出具體的回答,這無異加大了客服的工作量,是以為了更好的有效利用客服的時間,我們把這些官方的話分離出來,找個機器人,讓他代替客服去說,這樣就減輕了客服的工作量。

也就是說,我們将動态資源和靜态資源分離出來,交給不同的伺服器去解析,這樣就加快了解析的速度,進而降低由單個伺服器的壓力

作為一名前端,該如何了解Nginx?

安裝 Nginx

關于 nginx 如何安裝,這裡就不做過多的介紹了,感興趣的小夥伴看看這篇文章:【Linux】中如何安裝nginx

這裡讓我們看看一些常用的指令:

  • 檢視版本:​

    ​./nginx -v​

  • 啟動:​

    ​./nginx​

  • 關閉:​

    ​./nginx -s stop​

    ​​(推薦) 或​

    ​./nginx -s quit​

  • 重新加載nginx配置:​

    ​./nginx -s reload​

Nginx 的配置檔案

配置檔案分為三個子產品:

  • 全局塊:從配置檔案開始到events塊之間,主要是設定一些影響nginx伺服器整體運作的配置指令。(按道理說:并發處理服務的配置時,值越大,可支援的并發處理量越多,但此時會受到硬體、軟體等裝置等的制約)
  • events塊:影響nginx伺服器與使用者的網絡連接配接,常用的設定包括是否開啟對多workprocess下的網絡連接配接進行序列化,是否允許同時接收多個網絡連接配接等等
  • http塊:如反向代理和負載均衡都在此配置

location 的比對規則

共有四種方式:

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

複制代碼

  • ​=​

    ​​ :​

    ​精确比對​

    ​,用于不含正規表達式的url前,要求字元串與url嚴格比對,完全相等時,才能停止向下搜尋并處理請求
  • ​^~​

    ​:用于不含正規表達式的url前,要求ngin伺服器找到表示url和字元串比對度最高的location後,立即使用此location處理請求,而不再比對
  • ​~​

    ​​ :​

    ​最佳比對​

    ​,用于表示url包含正規表達式,并且區分大小寫。
  • ​~*​

    ​​:與​

    ​~​

    ​一樣,隻是不區分大小寫
  • 如果​

    ​url​

    ​​ 包含正規表達式,則不需要​

    ​ ~​

    ​ 作為開頭表示
  • nginx的比對具有​

    ​優先順序​

    ​,一旦比對上就會立馬退出,不再進行向下比對

End