一、前言
??????為毛要用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和tomcat的區別
三、什么是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做反向代理。并且多臺服務器可以平均分擔負載,不會因為某臺服務器負載高宕機而某臺服務器閑置的情況。