Web 伺服器與應用伺服器的區別是什麼?
嚴格意義上Web伺服器只負責處理HTTP協議,只能發送靜態頁面的內容。而JSP,ASP,PHP等動態內容需要通過CGI、FastCGI、ISAPI等介面交給其他程序去處理。這個其他程序就是應用伺服器。比如Web伺服器包括Nginx,Apache,IIS等。而應用伺服器包括WebLogic,JBoss等。應用伺服器一般也支持HTTP協議,因此界限沒這麼清晰。但是應用伺服器的HTTP協議部分僅僅是支持,一般不會做特別優化,所以很少有見Tomcat直接暴露給外面,而是和Nginx、Apache等配合,只讓Tomcat處理JSP和Servlet部分
不太嚴謹的說法:web伺服器就是負責接收用戶的Request,然後響應html等給客戶瀏覽器。應用伺服器處理一些業務邏輯等。
你如果把Web稱作應用,Web伺服器也可以是應用伺服器。
Most of the times these terms Web Server and Application server are used interchangeably.
在大多數時候,Web伺服器和引用伺服器這兩個術語是可以互換使用的。
Following are some of the key differences in features of Web Server and Application Server:
以下是Web伺服器和應用伺服器在特性上的一些關鍵的差異:
- Web Server is designed to serve HTTP Content. App Server can also serve HTTP Content but is not limited to just HTTP. It can be provided other protocol support such as RMI/RPC. Web伺服器的設計目的是提供HTTP內容,應用伺服器也可以提供HTTP內容,但不限於HTTP,它還可以提供其他協議支持,如RMI / RPC。
- Web Server is mostly designed to serve static content, though most Web Servers have plugins to support scripting languages like Perl, PHP, ASP, JSP etc. through which these servers can generate dynamic HTTP content. Web伺服器主要是為提供靜態內容而設計的,不過大多數Web伺服器都有插件來支持腳本語言,比如Perl、PHP、ASP、JSP等,通過這些插件,這些伺服器就可以生成動態的HTTP內容。
- Most of the application servers have Web Server as integral part of them, that means App Server can do whatever Web Server is capable of. Additionally App Server have components and features to support Application level services such as Connection Pooling, Object Pooling, Transaction Support, Messaging services etc. 大多數應用伺服器都將Web伺服器作為其不可分割的一部分,這意味著應用伺服器可以做任何Web伺服器所能做的事情。此外,應用伺服器有組件和特性來支持應用級服務,如連接池、對象池、事務支持、消息傳遞服務等。
- As web servers are well suited for static content and app servers for dynamic content, most of the production environments have web server acting as reverse proxy to app server. That means while servicing a page request, static contents (such as images/Static HTML) are served by web server that interprets the request. Using some kind of filtering technique (mostly extension of requested resource) web server identifies dynamic content request and transparently forwards to app server. 由於web伺服器非常適合用於提供靜態內容,而應用伺服器適合提供動態內容,因此大多數生產環境都有web伺服器充當應用伺服器的反向代理。這意味著在頁面請求時,web伺服器會通過提供靜態內容(例如圖像/靜態HTML)來解釋請求,並且它還會使用某種過濾技術(主要是請求資源的擴展)識別動態內容請求,並透明地轉發到應用伺服器。
Example of such configuration is Apache Tomcat HTTP Server and Oracle (formerly BEA) WebLogic Server. Apache Tomcat HTTP Server is Web Server and Oracle WebLogic is Application Server.
In some cases the servers are tightly integrated such as IIS and .NET Runtime. IIS is web server. When equipped with .NET runtime environment, IIS is capable of providing application services.
———————————————————————————————————————————
Quote and translate from Stack Overflow
前台接待(web伺服器) 與 真正的價值服務者(應用伺服器)
雖然我也不是很清楚這個問題,但是上面的回答沒有一個講解的清晰明白的。
我來回答一些非web伺服器的伺服器模型吧,不對的地方還望指正。1. 後台伺服器----可以提供數據API服務的應用層軟體。2. 很多遊戲的後台伺服器,客戶端直接連接到中心網關:一種情況,由網關將其連接導向相應的邏輯伺服器,網關完成該任務之後就不再參與客戶端和伺服器的對話;另一種情況,網關負責轉發客戶端的請求給相應的伺服器,同時也負責將伺服器回復的內容轉發給客戶端。可以認為,這種情況下,客戶端是和伺服器直接連接並會話的,這也是目前大多數有戲伺服器採用的方式,通信協議也是TCP直接連接(可以在TCP層面上定義簡單的自己的協議層),這種模型簡單清晰,數據流(data flow)也很單純。
3. 至於緩存,有,但是和web的緩存感覺很不一樣,客戶端的實時數據一般會保存在緩存裡面,一般會是一些專用的緩存伺服器,例如redis,memchache等。一些利用C,C++做的遊戲伺服器,可以自己申請內存來作為緩存,,對於這種自己申請內存做緩存管理的話,首先機制很複雜,其次,如果緩存的數據過多,那麼風險越大,因為如果機器掉電或者宕機的話,數據就會丟失。如果不想數據丟失的話,那麼就要一套更複雜的機制來保存這些在內存中的數據,例如:華為的電信伺服器就是用的這種超複雜,超難維護的機制來保存內存中的數據,以便在機器宕機再恢復的時候,先載入原先內存中的數據。。。。。。。(高端啊)4. 這些緩存的數據絕對會存在一種機制,不斷地往持久化的資料庫存儲、更新,這種機制每家的遊戲都不一樣。5. 這些緩存的目的只有一個:把被用到的數據先讀到緩存里,然後從緩存裡面取,客戶端更新的內容先寫入緩存,然後再由「機制」來不斷的進行持久化(寫入資料庫)這個緩存很像linux系統裡面的內存管理。6. 補充一點:有些數據的存儲是不利用專門的緩存來完成的,直接操作sql,但是會在sql層面上做緩存,尤其是讀多寫少的數據。對於web伺服器,我也不明白,什麼代理伺服器,什麼專用緩存伺服器,什麼web伺服器,什麼app伺服器,哪位大神能把一個http請求,從瀏覽器發出到返回,中間所有完整的數據流講解一下啊。。。。。。。。。。。Web伺服器通常只需支持HTTP協議,單純處理頁面用的;而應用伺服器提供的是客戶端可以調用的方法,需要支持EJB JNDI JMX 等J2EE API。 比如,Apache屬於Web伺服器,Weblogic屬於應用伺服器。 不過,現在大多數應用伺服器也包含了Web伺服器的功能
Web伺服器一般指的是處理靜態請求或轉發http請求的伺服器,而應用伺服器一般是用來處理動態請求的伺服器。兩者並沒有很嚴格的區別。
所以Tomcat什麼的 叫做 web 應用 伺服器。
web伺服器應該是接受http請求,這些請求只能是一些靜態資源,例如html之列
應用伺服器,顧名思義,應用二字,肯定是有業務邏輯,是動態的。
推薦閱讀:
※如果伺服器所在的內網進行物理隔離(斷開互聯網連接),黑客有辦法突破並竊取到其中的信息嗎?
※如何選擇國外的伺服器?
※類似coc這種全球同服,並且註冊玩家與在線玩家龐大的遊戲,伺服器端架構該如何設計呢?
※推薦一個持續監測伺服器cpu、內存、網路等的軟體(MS 系統)?
※在一個伺服器上面怎麼放兩個網站呀?