前言
為毛要用nginx服務器代理,不直接用tomcat 7.0,還做多了一次接請求?
這個是我想問的,公司的新項目是要用Nginx+tomcat7+jdk開發的,用戶命名可以直接訪問tomcat,為啥還要用Nginx?這貨是個啥玩意?
什麼是Nginx?
根據前面的對比,我們可以瞭解到Nginx是一個http服務器。是一個使用c語言開發的高性能的http服務器及反向代理服務器。Nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。由俄羅斯的程序設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬併發鏈接,並且cpu、內存等資源消耗卻非常低,運行非常穩定。
Nginx的應用場景
1、 http服務器。Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態服務器。
2、 虛擬主機。可以實現在一臺服務器虛擬出多個網站。例如個人網站使用的虛擬主機。
基於端口的,不同的端口
基於域名的,不同域名
3、 反向代理,負載均衡。當網站的訪問量達到一定程度後,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集群可以使用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優點及常用web服務器產品
靜態web服務軟件
1 Apache 中小型web服務的主流
優點:運行速度快,性能穩定,擴展豐富
缺點:以進程為結構基礎,消耗cpu,性能下降
2 Lighttpd 開源輕量級web服務器軟件
優點:1 安全,快速,兼容性好,靈活
2 低開銷,低CPU使用率
3 支持大多數apache的重要功能
缺點: 功能存在不足,部分代碼缺陷(如對proxy功能不完善)
動態web服務軟件
1 Microsoft IIS 微軟旗下產品
優點:可靠、安全、性能和擴展能力強
缺點:部署成本高
2 Tomcat(公貓) Sun公司旗下產品
優點:部署安裝方便,系統佔有率低,主要的Servlet和JSP容器
缺點:功能少,無法滿足複雜業務場景
nginx優點
1 高併發連接
2 內存消耗少
3 穩定性高
Nginx 版本信息
nginx官網有三個版本
1 stable version 穩定版(企業用)
2 mainline version 開發版(個人用)
3 Legacy versions 歷史版
Nginx功能特性
1.處理靜態文件,索引文件以及自動索引
2.反向代理加速(無緩存),簡單的負載均衡和容錯
3.FastCGI,簡單的負載均衡和容錯
4.模塊化的結構。過濾器包括gzipping,byte ranges,chunked responses,以及 SSI-filter。在SSI過濾 器中,到同一個 proxy 或者 FastCGI 的多個子請求併發處理
5.SSL 和 TLS SNI 支持
6.IMAP/POP3代理服務功
7.使用外部 HTTP 認證服務器重定向用戶到 IMAP/POP3 後端
8.使用外部 HTTP 認證服務器認證用戶後連接重定向到內部的 SMTP 後端
Nginx主要功能
1 nginx可作為HTTP代理服務和反向代理
2 nginx可作為負載均衡
3 nginx可作為Web緩存
通過了解Nginx也算是多了一門技術,而且還是挺簡單的,使用也比較方便。重點是可以給系統帶來很大的性能提升。
總結;需要資料的關注+後臺私信 《資料》免費領取
linux C/C++服務器後臺開發面試題總結。C/C++,Linux,golang技術,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,RTSP RTMP HLS 流媒體 ffmpeg,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK等.............
閱讀更多 編程資料庫 的文章