各位同學大家好,非常高興能夠與大家相處在一個網際網路平臺,從今天開始,給大家講解 Nginx 高效能 Web 伺服器。我是 ItGabbay ,目前在一家網際網路公司從事 Java 架構師以及運維工作。
Nginx 高效能 Web 伺服器本套課程的內容還是相當比較多的,接下來介紹本套課程所學的內容。
Nginx 簡介
我相信大家在以前也接觸過 Nginx ,如有沒有接觸過 Nginx 的同學也聽說過 Nginx 吧,如果沒聽過 Nginx ,那也應該聽說過 Apache 吧,連 Apache 都沒聽說過的話,我也不知道該說啥了,好廢話少說。
其實 Apache 就是一個 Web 伺服器軟體,那麼什麼是 Web 伺服器呢,通常我們簡稱 WWW 伺服器。比如說我們的一般上網,通過瀏覽器訪問某個網站等這些服務我們一個把它稱為 Web 服務。這個大家應該知道吧。Web 伺服器主要提供網上資訊瀏覽服務。WWW 是 Internet 的多媒體資訊查詢工具,是 Internet 上近年才發展起來的服務,也是發展最快和目前用的最廣泛的服務,而且覆蓋整個全球網際網路。正是因為有了 WWW 工具,才使得僅年來 Internet 迅速發展,且使用者數量飛速增長。
那麼 WWW 伺服器與 Nginx Web 伺服器有什麼關係呢,可以這麼理解,不管是 Nginx 伺服器還是 Apache 伺服器,它們都是用來發布 WWW 網頁的,所有我們把他們統稱為 Web 伺服器。我們瞭解了 Nginx 和 Apache 都是用來發布的軟體之後,接著我們來深入的學習 Nginx 伺服器。
Nginx 是一個高效能的 HTTP 和反向代理伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。Nginx 是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的 Rambler.ru 站點(俄文:Рамблер )開發的,第一個公開版本 0.1.0 ,是釋出於 2004年 10 月 4 日,其將原始碼類似 BSD 許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。
它已經在眾多流量很大的俄羅斯網站上使用了很長時間,這些網站包括 Yandex 、Mail.Ru、VKontakte 以及 Rambler。根據 Netcraft 統計,在 2012 年 8 月份,世界上最繁忙的網站中 11.48 % 使用 Nginx 作為伺服器或者代理伺服器。目前網際網路主流公司都在使用 Nginx 伺服器,如 360、百度、新浪、騰訊、阿里,以及一些小型的網際網路公司。可以這麼說,目前只要使用 Linux 系統作為伺服器的中國網際網路企業,至少有 70 % 的公司都在使用 Nginx 作為自己的 Web 伺服器。
那麼 Nginx 伺服器為什麼這麼的火呢?Nginx 佔用記憶體少,併發能力非常的強,尤其是 Nginx 處理靜態頁面的效能非常的強。在我們大部分網站中,包括動態頁面和靜態頁面,動態頁面我們可以用後端的一些語言進行處理,比如 Java 、PHP。而前端的靜態頁面我們可以通過 Nginx 做一個反向代理進行轉發。Nginx 在中國乃至整個世界使用量是非常的高。
之前我所在的公司都用到了 Nginx,特別是上量級的服務,都使用 Nginx 來做反向代理轉發,一般像搭建 Nocas等服務我們可以使用 Apache 伺服器。可以使用 yum 直接進行自動簡單安裝。
Nginx 有核心和模組組成,其中,核心的設計非常微小和簡潔,完成的工作也非常簡單,僅僅通過查詢配置檔案將客戶端請求對映到一個 location block (location 是 Nginx 配置中的一個指令,用於 URL 匹配),而在這個 location 中所配置的每個指令將會啟動不同的模組去完成相應的工作。
Nginx 相對於 Apache 優點:
高併發響應效能非常的好。曾經官方通過簡單的測試,Nginx 處理靜態檔案併發達到 5 w/s 請求,通過這個數字來看,一天請求的 pv 是多少呢,5w x 3.6k 的 pv ,是不是上億級別的每秒。通過這個資料來看,Nginx 處理資料是效能是非常的好。
反向代理效能非常強。這是 Nginx 的一個非常牛逼的一個功能。大家都知道,最前端就是一個 Nginx,特別是小型的公司,其前端就是使用一個 Nginx + keepalived 搭建高可用。如果是訪問量稍微大一點的可能會 Nginx + keepalived + 搭建
記憶體和 CPU 佔用率低。大概是為 Apache 的 1/5 - 1/10 這樣,通過這個資料來看,使用 Nginx 搭建伺服器,節省了許多的開銷。一個 Nginx 程式可能就佔用 幾十 M 的記憶體。
對後端服務有健康檢查功能。使用 Nginx 可以對我們的後端語言有很好的檢查功能,如 Java、PHP 等後端語言有很好的檢查功能,還可以自動進行剔除功能,假設我們後端某臺伺服器 8080 埠當機了,這個時候 Nginx 內部有個檢查機制,通過這個檢查機制,在多少秒之內檢查多少次,如何這個埠返回的資料失敗或者超時,都會把這個後端伺服器零時踢掉,等待這個伺服器在下個檢查時間恢復之後,在把這個伺服器加入進來。所有這樣可以做一個動態的進行健康檢查。
支援 PHP cgi 方式 和 fastcgi 方式。Apache 支援 PHP cgi 方式 和 fastcgi 方式,同樣 Nginx 也支援 PHP cgi 方式 和 fastcgi 方式。而效能如何主要是取決於程式、Nginx 引數的優化等等,如果這些效能優化好了,效能也是非常的強大的。
配置程式碼簡潔且容易上手。使用過 Nginx 的同學都知道,開啟 nginx.conf 檔案,發現 nginx.conf 中的程式碼非常的簡潔,只要我們初學者瞭解相關的一些內容,預設啟動 Nginx 就可以訪問了,就這麼個意思。
總結
大體的根同學們講了一些 Nginx 是什麼。讓同學們的腦海中對 Nginx 有一個整體的映像,為後期的學習埋下伏筆。Nginx 就是一款 Web 伺服器軟體,可以用來發布我們的網站,可以做反向代理等等。
感謝大家的閱讀,如若有不足,謝謝指出,共同學習,共同成就程式的夢。想學習更多的 Nginx 知識,關注我吧,期待下一期更新吧。
本作品採用《CC 協議》,轉載必須註明作者和本文連結