Nginx/Apache 和Apache Tomcat 的區別

參考文獻:

https://www.kancloud.cn/hx78/java-web/335879

Nginx/Apache 和Apache Tomcat 的區別

一、Nginx/Apache 是Web Server,而Apache Tomact是一個servlet container 想請教下,具體區別呢?因爲如果使用了Apache Tomact的話已經具備響應http request的功能

  1. 聯繫 都可以做web服務器,對外服務。
  2. 區別 正如你所說:
    Nginx/Apache 是Web Server,而Apache Tomact是一個servlet container
    tomcat可以對jsp進行解析,nginx和apache只是web服務器,可以簡單理解爲只能提供html靜態文件服務。php等動態語言的支持靠的是擴展。
    總結一下:tomcat具有nginx和apache的靜態文件服務功能,同時具備jsp解析功能。

來自 https://segmentfault.com/q/1010000000260992

二、nginx和tomcat的區別

web上的server都叫web server,但是大家分工也有不同的。
nginx常用做靜態內容服務和代理服務器(不是你FQ那個代理),直面外來請求轉發給後面的應用服務(tomcat,django什麼的),tomcat更多用來做做一個應用容器,讓java web app跑在裏面的東西,對應同級別的有jboss,jetty等東西。

但是事無絕對,nginx也可以通過模塊開發來提供應用功能,tomcat也可以直接提供http服務,通常用在內網和不需要流控等小型服務的場景。

apache用的越來越少了,大體上和nginx功能重合的更多。

嚴格的來說,Apache/Nginx 應該叫做「HTTP Server」;而 Tomcat 則是一個「Application Server」,或者更準確的來說,是一個「Servlet/JSP」應用的容器(Ruby/Python 等其他語言開發的應用也無法直接運行在 Tomcat 上)。

一個 HTTP Server 關心的是 HTTP 協議層面的傳輸和訪問控制,所以在 Apache/Nginx 上你可以看到代理、負載均衡等功能。客戶端通過 HTTP Server 訪問服務器上存儲的資源(HTML 文件、圖片文件等等)。通過 CGI 技術,也可以將處理過的內容通過 HTTP Server 分發,但是一個 HTTP Server 始終只是把服務器上的文件如實的通過 HTTP 協議傳輸給客戶端。

而應用服務器,則是一個應用執行的容器。它首先需要支持開發語言的 Runtime(對於 Tomcat 來說,就是 Java),保證應用能夠在應用服務器上正常運行。其次,需要支持應用相關的規範,例如類庫、安全方面的特性。對於 Tomcat 來說,就是需要提供 JSP/Sevlet 運行需要的標準類庫、Interface 等。爲了方便,應用服務器往往也會集成 HTTP Server 的功能,但是不如專業的 HTTP Server 那麼強大,所以應用服務器往往是運行在 HTTP Server 的背後,執行應用,將動態的內容轉化爲靜態的內容之後,通過 HTTP Server 分發到客戶端。

來自 http://www.cnblogs.com/flypie/p/5153702.html

三、Apache/Tomcat/JBOSS/Nginx區別 .

1、Apache是Web服務器,Tomcat是應用(Java)服務器。Tomcat在中小型系統和併發訪問用戶不是很多的場合下被普遍使用。Apache支持靜態頁,Tomcat支持動態的。
2、Jetty:Tomcat內核作爲其Servlet容器引擎,並加以審覈和調優.大中型系統可以應用。能夠提供數據庫連接池服務,還支持其他 Web 技術的集成,譬如PHP、.NET 兩大陣營.
3、JBoss是一個管理EJB的容器和服務器,但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
4、Nginx是目前性能最高的HTTP服務器。其特點是佔有內存少,併發能力強。Nginx代碼完全用C語言從頭寫成。
所以:Apache--Nginx;Tomcat--Jetty;JBoss。這三組可以組合了。

具體描述:

一、Apache+Tomcat

Apache支持靜態頁,Tomcat支持動態的,比如Servlet等,
一般使用Apache+Tomcat的話,Apache只是作爲一個轉發,對JSP的處理是由Tomcat來處理的。
Apche可以支持PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache後臺支撐,將Java請求由Apache轉發給Tomcat處理。
Apache是Web服務器,Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認爲是Apache的擴展,但是可以獨立於Apache運行。
這兩個有以下幾點可以比較的:
◆兩者都是Apache組織開發的
◆兩者都有HTTP服務的功能
◆兩者都是免費的
不同點:
Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等)
Tomcat是符合Java EE的JSP、Servlet標準下開發的一個JSP服務器:Tomcat在中小型系統和併發訪問用戶不是很多的場合下被普遍使用。

二、Jetty

而Jetty採用業界最優的開源Java Web引擎,將Java社區中下載量最大,用戶數最多,標準支持最完備的Tomcat內核作爲其Servlet容器引擎,並加以審覈和調優。單純的Tomcat性能有限,在很多地方表現有欠缺,如活動連接支持、靜態內容、大文件和HTTPS等。除了性能問題,Tomcat的另一大缺點是它是一個受限的集成平臺,僅能運行Java應用程序。企業在使用時Tomcat,往往還需同時部署Apache WebServer以與之整合。此配置較爲繁瑣,且不能保證性能的優越性。
Jetty通過使用APR和Tomcat本地技術的混合模型來解決Tomcat的諸多不足。混合技術模型從最新的操作系統技術裏提供了最好的線程和事件處理。結果,Jetty達到了可擴展性,性能參數匹配甚至超越了本地Apache HTTP服務器或者IIS。譬如Jetty能夠提供數據庫連接池服務,不僅支持 JSP 等 Java 技術,同時還支持其他 Web 技術的集成,譬如PHP、.NET 兩大陣營。

三、Nginx

Nginx具有很高的穩定性。其它HTTP服務器,當遇到訪問的峯值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啓服務器。例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx採取了分階段資源分配技術,使得它的CPU與內存佔用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只佔2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言,nginx比lighthttpd更勝一籌。

四、JBoss

JBoss一個基於J2EE的開放源代碼的應用服務器.JBoss是一個管理EJB的容器和服務器,但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
JBoss與Web服務器在同一個Java虛擬機中運行 JBoss運行後後臺管理界面,Servlet調用EJB不經過網絡,從而大大提高運行效率,提升安全性能。
以上就介紹了總結:Apache/Tomcat/JBOSS/Jetty/Nginx區別,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

來自 http://www.php.cn/php-weizijiaocheng-331591.html

四、tomcat 與 nginx,apache的區別是什麼?
作者:David
鏈接:https://www.zhihu.com/question/32212996/answer/87524617
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

題主說的Apache,指的應該是Apache軟件基金會下的一個項目——Apache HTTP Server Project;Nginx同樣也是一款開源的HTTP服務器軟件(當然它也可以作爲郵件代理服務器、通用的TCP代理服務器)。
HTTP服務器本質上也是一種應用程序——它通常運行在服務器之上,綁定服務器的IP地址並監聽某一個tcp端口來接收並處理HTTP請求,這樣客戶端(一般來說是IE, Firefox,Chrome這樣的瀏覽器)就能夠通過HTTP協議來獲取服務器上的網頁(HTML格式)、文檔(PDF格式)、音頻(MP4格式)、視頻(MOV格式)等等資源。下圖描述的就是這一過程:
<img src="https://pic2.zhimg.com/904696074e077934e601f175913f42fd_b.png" data-rawwidth="849" data-rawheight="273" class="origin_image zh-lightbox-thumb" width="849" data-original="https://pic2.zhimg.com/904696074e077934e601f175913f42fd_r.png">

不僅僅是Apache HTTP Server和Nginx,絕大多數編程語言所包含的類庫中也都實現了簡單的HTTP服務器方便開發者使用:
• HttpServer (Java HTTP Server )
• Python SimpleHTTPServer
使用這些類庫能夠非常容易的運行一個HTTP服務器,它們都能夠通過綁定IP地址並監聽tcp端口來提供HTTP服務。
Apache Tomcat則是Apache基金會下的另外一個項目,與Apache HTTP Server相比,Tomcat能夠動態的生成資源並返回到客戶端。Apache HTTP Server和Nginx都能夠將某一個文本文件的內容通過HTTP協議返回到客戶端,但是這個文本文件的內容是固定的——也就是說無論何時、任何人訪問它得到的內容都是完全相同的,這樣的資源我們稱之爲靜態資源。動態資源則與之相反,在不同的時間、不同的客戶端訪問得到的內容是不同的,例如:
• 包含顯示當前時間的頁面
• 顯示當前IP地址的頁面
Apache HTTP Server和Nginx本身不支持生成動態頁面,但它們可以通過其他模塊來支持(例如通過Shell、PHP、Python腳本程序來動態生成內容)。
如果想要使用Java程序來動態生成資源內容,使用這一類HTTP服務器很難做到。Java Servlet技術以及衍生的Java Server Pages技術可以讓Java程序也具有處理HTTP請求並且返回內容(由程序動態控制)的能力,Tomcat正是支持運行Servlet/JSP應用程序的容器(Container):
<img src="https://pic3.zhimg.com/2651b72ce2170336d10ad17fd020ae7a_b.png" data-rawwidth="885" data-rawheight="502" class="origin_image zh-lightbox-thumb" width="885" data-original="https://pic3.zhimg.com/2651b72ce2170336d10ad17fd020ae7a_r.png">Tomcat運行在JVM之上,它和HTTP服務器一樣,綁定IP地址並監聽TCP端口,同時還包含以下指責:

Tomcat運行在JVM之上,它和HTTP服務器一樣,綁定IP地址並監聽TCP端口,同時還包含以下指責:
• 管理Servlet程序的生命週期
• 將URL映射到指定的Servlet進行處理
• 與Servlet程序合作處理HTTP請求——根據HTTP請求生成HttpServletResponse對象並傳遞給Servlet進行處理,將Servlet中的HttpServletResponse對象生成的內容返回給瀏覽器
雖然Tomcat也可以認爲是HTTP服務器,但通常它仍然會和Nginx配合在一起使用:
• 動靜態資源分離——運用Nginx的反向代理功能分發請求:所有動態資源的請求交給Tomcat,而靜態資源的請求(例如圖片、視頻、CSS、JavaScript文件等)則直接由Nginx返回到瀏覽器,這樣能大大減輕Tomcat的壓力。
• 負載均衡,當業務壓力增大時,可能一個Tomcat的實例不足以處理,那麼這時可以啓動多個Tomcat實例進行水平擴展,而Nginx的負載均衡功能可以把請求通過算法分發到各個不同的實例進行處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章