提升網站性能的秘訣:為什麼Nginx是高效服務器的代名詞?

2024年2月6日 29点热度 0人点赞

“這裡是雲端源想IT,幫你輕松學IT”

嗨~ 今天的你過得還好嗎?

你瞄準月亮

即使迷失

也在星辰之間

- 2024.01.31 -

在這個信息爆炸的時代,每當你在瀏覽器中輸入一個網址,背後都有一個強大的服務器在默默地工作。而在這些服務器中,有一個名字你可能聽說過無數次——Nginx。今天,就讓我們一起探索這個神奇的工具。

一、Nginx是什麼

Nginx(發音為“enginex”)是一個開源的高性能HTTP和反向代理服務器。它由伊戈爾·賽索耶夫(IgorSysoev)於2002年創建,自那時起,Nginx因其穩定性、豐富的功能集、簡單的配置文件以及低資源消耗而受到廣大開發者和企業的喜愛。

Nginx是一款輕量級的Web服務器/反向代理服務器電子郵件(IMAP/POP3)代理服務器,在BSD-like協議下發行。

其特點是占有內存少,並發能力強,事實上nginx的並發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。

二、Nginx的反向代理與正向代理

正向代理:

我們平時需要訪問國外的瀏覽器是不是很慢,比如我們要看推特,看GitHub等等。我們直接用國內的服務器無法訪問國外的服務器,或者是訪問很慢。

所以我們需要在本地搭建一個服務器來幫助我們去訪問。那這種就是正向代理。(瀏覽器中配置代理服務器)

反向代理:

那什麼是反向代理呢。比如:我們訪問淘寶的時候,淘寶內部肯定不是隻有一臺服務器,它的內部有很多臺服務器,那我們進行訪問的時候,因為服務器中間session不共享,那我們是不是在服務器之間訪問需要頻繁登錄。

這個時候淘寶搭建一個過渡服務器,對我們是沒有任何影響的,我們是登錄一次,但是訪問所有,這種情況就是反向代理。

對我們來說,客戶端對代理是無感知的,客戶端不需要任何配置就可以訪問,我們隻需要把請求發送給反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據後,再返回給客戶端。

此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器的地址。(在服務器中配置代理服務器)

三、Nginx的負載均衡

什麼是負載均衡?

負載均衡建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

負載均衡(LoadBalance)其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

負載均衡的主要目的是確保網絡流量被平均分發到多個節點,從而提高整體系統的響應速度和可用性。它對於處理高並發請求非常重要,因為它可以防止任何單一節點過載,導致服務中斷或性能下降。

Nginx給出來三種關於負載均衡的方式:

輪詢法(默認方法):

每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。

適合服務器配置相當,無狀態且短平快的服務使用。也適用於圖片服務器集群和純靜態頁面服務器集群。

weight權重模式(加權輪詢):

指定輪詢幾率,weight和訪問比率成正比,用於後端服務器性能不均的

情況。

這種方式比較靈活,當後端服務器性能存在差異的時候,通過配置權重,可以讓服務器的性能得到充分發揮,有效利用資源。weight和訪問比率成正比,用於後端服務器性能不均的情況。權重越高,在被訪問的概率越大

ip_hash:

上述方式存在一個問題就是說,在負載均衡系統中,假如用戶在某臺服務器上登錄了,那麼該用戶第二次請求的時候,因為我們是負載均衡系統,每次請求都會重新定位到服務器集群中的某一個。

那麼已經登錄某一個服務器的用戶再重新定位到另一個服務器,其登錄信息將會丟失,這樣顯然是不妥的。

我們可以采用ip_hash指令解決這個問題,如果客戶已經訪問了某個服務器,當用戶再次訪問時,會將該請求通過哈希算法,自動定位到該服務器。每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。

你還在苦惱找不到真正免費的編程學習平臺嗎?可以試試【雲端源想】!課程視頻、知識庫、微實戰、雲實驗室、一對一咨詢……你想要的全部學習資源這裡都有,重點是現在還是免費的!點這裡即可查看!雲端源想

四、Nginx的動靜分離

為了加快網站的解析速度,可以把動態頁面和靜態頁面由不同的服務器來解析,加快解析速度。降低原來單個服務器的壓力。

Nginx的靜態處理能力很強,但是動態處理能力不足,因此,在企業中常用動靜分離技術。

動靜分離技術其實是采用代理的方式,在server{}段中加入帶正則匹配的location來指定匹配項針對PHP的動靜分離:

靜態頁面交給Nginx處理,動態頁面交給PHP-FPM模塊或Apache處理。在Nginx的配置中,是通過location配置段配合正則匹配實現靜態與動態頁面的不同處理方式。

五、Nginx特點

那麼,Nginx到底有哪些特點讓它如此受歡迎呢?讓我們一起來探索。

1、高性能與低消耗

Nginx采用了事件驅動的異步非阻塞模型,這意味著它在處理大量並發連接時,可以有效地使用系統資源。與傳統的服務器相比,Nginx可以在較低的硬件配置下提供更高的性能。這對於成本敏感的企業來說,無疑是一個巨大的優勢。

2、高並發處理能力

得益於其獨特的設計,Nginx能夠輕松處理數萬甚至數十萬的並發連接,而不會對性能造成太大影響。這一點對於流量高峰期的網站尤為重要,它可以保證用戶在任何時候訪問網站都能獲得良好的體驗。

3、靈活的配置

Nginx的配置文件非常靈活,支持各種復雜的設置。無論是負載均衡、緩存靜態內容,還是SSL/TLS加密,Nginx都能通過簡單的配置來實現。這種靈活性使得Nginx可以輕松適應各種不同的使用場景。

4、社區支持與模塊擴展

Nginx擁有一個活躍的開發社區,不斷有新的功能和優化被加入到官方版本中。此外,Nginx還支持第三方模塊,這些模塊可以擴展Nginx的功能,使其更加強大和多樣化。

5、廣泛的應用場景

從傳統的Web服務器到反向代理、負載均衡器,再到API網關,Nginx幾乎可以應用於任何需要處理HTTP請求的場景。它的可靠性和多功能性使得它成為了許多大型互聯網公司的基礎設施中不可或缺的一部分。

Nginx以其卓越的性能和靈活的配置,贏得了全球開發者的青睞。它不僅僅是一個簡單的Web服務器,更是一個強大的工具,能夠幫助我們構建更加穩定、高效的網絡應用。無論是初創公司還是大型企業,Nginx都能在其中發揮重要作用。那麼,你準備好探索Nginx的世界了嗎?讓我們一起開啟這場技術之旅吧!

今天就先講到這裡了,

更多Java基礎知識點擊文末閱讀原文查看哦!

記得關註【雲端源想IT】一起學Java!

我們下期再見!

END

文案編輯|雲端學長

文案配圖|雲端學長

內容由:雲端源想分享