当前位置:首页>开发>正文

tomcat与nginx,apache的区别是什么

2024-06-27 20:20:01 互联网 未知 开发

tomcat与nginx,apache的区别是什么?

tomcat与nginx,apache的区别是什么

三者都有网络代理服务的功能,因为apache和tomcat都是由apache组织开发,所以下面从几个方面来分享一下nginx与apache的部分区别。

Nginx

nginx是由一位来自俄罗斯的程序员Igor Sysoe所编写的十分轻量级的HTTP服务器。nginx,它的发音为“engine X”。是一个高性能基于HTTP和反向代理的服务器,当只有静态资源的时候,就可以使用nginx来做服务器,现在很流行的动静分离(普遍情况下,是需要动态资源和静态资源分开,将静态资源部署在nginx上,当如果是静态资源的请求来时,就直接到nginx配置的静态资源目录下面获取资源;如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给后台应用去处理,从而实现动静分离)就能通过nginx来实现。下面列出一些它的功能和优势:

nginx具备高性能反向代理服务

反向代理,简单说就是利用代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时的代理服务器对外表现就属于一个反向代理服务器。

nginx具有良好的扩展性,可以通过模块方式来进行功能扩展。

nginx较为灵活的负载均衡策略。

轮询(默认)算法:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则自动剔除故障机器,使用户访问不受到影响,个人觉得这个是最好的方法,但也有成本就是消耗机器的成本!实际情况中也验证了这一点,移动段的token!

nginx抗并发的能力很强。

Apache

Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。

Tomcat

Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。

如果请求是静态网页则由Apache处理,并将结果返回;如果是动态请求,Apache会将解析工作转发给Tomcat处理,Tomcat处理后将结果通过Apache返回。这样可以达到分工合作,实现负载均衡,提高系统的性能。

Apache和Nginx的部分功能相比较

异步能力:apache中也有异步模块支持异步功能,不过是阻塞性异步,而nginx是非阻塞性异步。

抗并发:nginx因为软件体积小,消耗主机资源少,抗并发能力是apache的3倍以上。

重量等级:apache配置相对nginx复杂,自身不支持动态页面。

漏洞缺陷:apache相对nginx的bug会少很多。

小结

nginx 以轻量的优点在慢慢取带重量级的Apache ,现在已经被主流使用。

tomcat是j2ee服务器,可以运行java程序,处理用户的请求。nginx/apache都是转发的工具。它们可以把请求转发到多个tomcat服务器上,实现tomcat服务器的负载均衡和建立安全区。外部攻击最多攻击到nginx/apache的服务器上,而不会攻击到tomcat服务器上(tomcat服务器往往与内部数据库相关联)