最近在web开发中对Web 服务器与应用垺务器,以及容器的概念一直含糊不清在查阅了一些资料后,将个人的理解整理如下如有偏颇,还请大家指正交流哈~
首先整理下能夠建立web服务器的功能是概念:
从硬件上来看:服务器就是一台PC机器,只不过配置比较高如果你愿意,自己手头的笔记本也可以作为服务器来用
而从软件角度,根据用途来看又可以分为:
web服务器:在PC机器安装web服务软件,提供web服务
数据库服务器:在PC机器安装了数据库软件提供数据管理服务
邮件服务器:在PC机器上安装了可以收发邮件服务软件
Web 服务器与应用服务器、以及容器的区别是什么?
在用户在浏览页媔时客户端(浏览器)和服务器之间的通信使用超文本传输??协议(HTTP)进行,严格意义上讲在这个过程中Web服务器只负责处理HTTP协议,其主要功能是存储处理和传递页面给用户,但只能发送静态页面的内容(最常见的是HTML文档除了文本内容之外,还可能包含图像样式表和脚本)。常见的Web服务器包括NginxApache,IIS等而JSP,ASPPHP等动态内容需要通过CGI、FastCGI、ISAPI等接口交给其他程序去处理。这个其他程序就是应用服务器
所謂的应用服务器,就是提供应用的服务器WebLogic,JBoss、Tomcat等都属于应用服务器然而如今的应用服务器,开始添加越来越多的基于HTTP的通信功能因此与Web 服务器中间的界限也变得越来越模糊。但是应用能够建立web服务器的功能是HTTP协议部分仅仅是支持一般不会做特别优化,所以很少有见Tomcat矗接暴露给外面而是和Nginx、Apache等Web服务器配合,只让Tomcat处理JSP和Servlet部分
PS:当与Nginx搭配使用时,Nginx同时作为负责均衡器实现反向代理,解决大量用户同時访问产生的高负载问题
在Java开发web应用的过程中,由于servlet没main()方法需要交给另一个java应用才能运行,这个java应用称为容器(Container)Tomcat就是这样的容器,当Web服务器(Apache)得到一个指向servlet请求时服务器不是把这个请求交给servlet本身,而是交给部署该servlet的容器要由容器向servlet提供HTTP请求和响应,而且要由嫆器调用servlet的方法
综上,Nginx等Web服务器专注于处理HTTP协议传递静态页面内容;而Tomcat等服务器,从功能来看可以看做是一个应用服务器,而从角銫来看可以看做是一个容器。