分类: Java
2021-08-26 12:15:55
nginx/tomcat/apache的区别
Apache
Apache是一个模块化的服务器,可以运行在几乎所有的计算机平台上,属于应用服务器
缺点
配置相对复杂,而且不使用脚本,模块就无法支持动态页面
优点
支持模块多,性能稳定,由于本身是静态解析,所以适合处理静态文件(HTML,图片等),也可以通过扩展脚本,模块等支持动态页面
Tomcat
Tomcat是应用服务器,并且只是一个Servlet容器
缺点
基本上只能做java服务器
优点
处理动态请求,是编译Servlet的容器
Nginx
Nginx是一款HTTP和代理服务器,Nginx常用作静态内容服务和代理服务器,将外来请求转发给应用服务(tomcat,django)。
缺点
只适合静态和反向代理
优点
负载均衡,反向代理,动静分离,静态请求可以直接通过Nginx处理,而且处理效率比Apache高,动态请求才需要通过转发到Tomcat处理
总结
Apache/Nginx应该叫做Http Server
而tomcat则是一个APPlication Server,(java项目 fhadmin.cn)准确来说应该是Servlet/JSP应用的容器。
HttpServer
一个HttpServer关心的是HTTP协议层面的传输和访问控制,所以在
Apache/Nginx上可以看到代理,负载均衡等,客户端通过HTTP Server访问服务器上存储的资源(HTML文件,图片文件等等)
应用服务器
就是执行应用的容器,首先需要支持开发语言的Runtime(对于Tomcat来说,就是Java)。其次需要支持应用相关的规范,例如类库,安全方面的特性。对于tomcat来说就是需要提供JSP/Sevlet运行需要的标准类库等。
为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。