1. 程式人生 > >【Nginx】什麼是Nginx?為什麼使用Nginx?

【Nginx】什麼是Nginx?為什麼使用Nginx?

一、前言

      為毛要用nginx伺服器代理,不直接用tomcat 7.0,還做多了一次接請求?

      這個是我想問的,公司的新專案是要用Nginx+tomcat7+jdk開發的,使用者命名可以直接訪問tomcat,為啥還要用Nginx?這貨是個啥玩意?

二、為什麼使用Nginx?

      在傳統的Web專案中,併發量小,使用者使用的少。所以在低併發的情況下,使用者可以直接訪問tomcat伺服器,然後tomcat伺服器返回訊息給使用者。比如,我們上傳圖片:


這裡寫圖片描述

      當然我們知道,為了解決併發,可以使用負載均衡:也就是我們多增加幾個tomcat伺服器。當用戶訪問的時候,請求可以提交到空閒的tomcat伺服器上。

這裡寫圖片描述

      但是這種情況下可能會有一種這樣的問題:上傳圖片操作。我們把圖片上傳到了tomcat1上了,當我們要訪問這個圖片的時候,tomcat1正好在工作,所以訪問的請求就交給其他的tomcat操作,而tomcat之間的資料沒有進行同步,所以就發生了我們要請求的圖片找不到。

      為了解決這種情況,我們就想出了分散式。我們專門建立一個圖片伺服器,用來儲存圖片。這樣當我們都把圖片上傳的時候,不管是哪個伺服器接收到圖片,都把圖片上傳到圖片伺服器。

      圖片伺服器上需要安裝一個http伺服器,可以使用tomcat、apache、nginx。

這裡寫圖片描述

      看到這裡大家可能會問,既然我們要選擇的是http伺服器,為什麼不繼續使用tomcat,而要使用Nginx?

      原因如下:nginx常用做靜態內容服務和代理伺服器(不是你FQ那個代理),直面外來請求轉發給後面的應用服務(tomcat,django什麼的),tomcat更多用來做做一個應用容器,讓java web app跑在裡面的東西,對應同級別的有jboss,jetty等東西。

      借鑑部落格:

三、什麼是Nginx?

      根據前面的對比,我們可以瞭解到Nginx是一個http伺服器。是一個使用c語言開發的高效能的http伺服器及反向代理伺服器。Nginx是一款高效能的http 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。由俄羅斯的程式設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬併發連結,並且cpu、記憶體等資源消耗卻非常低,執行非常穩定。

3.1 Nginx的應用場景

      1、 http伺服器。Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態伺服器。

      2、 虛擬主機。可以實現在一臺伺服器虛擬出多個網站。例如個人網站使用的虛擬主機。

  • 基於埠的,不同的埠
  • 基於域名的,不同域名

      3、 反向代理,負載均衡。當網站的訪問量達到一定程度後,單臺伺服器不能滿足使用者的請求時,需要用多臺伺服器叢集可以使用nginx做反向代理。並且多臺伺服器可以平均分擔負載,不會因為某臺伺服器負載高宕機而某臺伺服器閒置的情況。

四、小結

      通過了解Nginx也算是多了一門技術,而且還是挺簡單的,使用也比較方便。重點是可以給系統帶來很大的效能提升。

      下一篇將講解如何安裝Nginx。