在BAT里工作少不了要接触Nginx和Tomcat。Nginx是一个https和反向代理伺服器,Tomcat是一个web伺服器。

虽然听起来都是伺服器,但是区别还是很大的,接下来我们分别来介绍他们在互联网当中的作用。

Tomcat

Tomcat来自赫赫有名的Apache基金会,由于其先进性,稳定性与免费,得到了众多JAVA开发者的青睐。就连12306网站的后台,都是部署在Tomcat上的。

Tomcat是一个轻量级的web应用伺服器,无论是否前后端分离,都可以将服务部署在Tomcat上。讲到这里,我们就可以知道,程序员开发的代码经过编译,就是放在Tomcat下的。

Tomcat文件夹下有多个文件夹包括bin,用于存储启动,停止等脚本;

conf文件夹用于存储Tomcat的配置,比如配置class文件位置的

server.xml

文件;

log文件夹用于存储Tomcat的执行日志,运行中的日志会存储在

catalina.out

文件中,可以用tail -f

catalina.out

命令来实时查看日志输出;

还有webapps文件夹,这里用于存储编译后的前后端执行文件。

Nginx

Nginx并不是一个web应用伺服器,程序员写的代码也不会部署在它的文件夹下。用一句话说,它主要负责转发请求给它身后的Tomcat,即一台Nginx通常指向了多台Tomcat。怎么理解呢,一个系统可能出于降低耦合与分散式的需要,将功能分散给不同的Tomcat,但是对外必须有一个统一的域名,而一个域名只能绑定一个IP(大公司内网是如此),这一个域名怎么指向多个Tomcat呢,此时就用到了Nginx,只需要将域名指向Nginx,然后由Nginx根据配置,将请求转发给不同地址的Tomcat就可以了。这就是Nginx的反向代理能力。

根据我的解释,我想大家已经清楚,Nginx与Tomcat是一个互补与合作的关系,各自负责不同的工作,对外提供一个完整的服务给用户。

以上是我的浅见,欢迎各位在评论区留言评论点赞。

我是苏苏思量,来自BAT的Java开发工程师,每天分享科技类见闻,欢迎关注我,与我共同进步。


首先来说,Nginx和Tomcat都属于应用伺服器软体,而且这两者的占有率都很高。不少同学可能分不清楚这两者的区别是什么,而且有疑惑,为什么Java项目都是布署在Tomcat上而不是Nginx上面呢?

要清楚这个问题,那我们要先搞清楚这两者的定位。

1、Nginx

Nginx是一款HTTP和反向代理伺服器,它的特点就是:轻量级、高性能、并发能力突出。

请注意,Nginx并身是不具备动态脚本处理能力的,它之所以「支持」动态脚本解析,其实是通过FastCGI来实现的请求转发的。比如LNMP架构模式下,并不是说Nginx来运行PHP的,而是Nginx将请求转发至PHP-FPM来进行解析运行的。

所以说Nginx更多的是用来做反向代理伺服器的,处理静态文件也很不错。

2、Tomcat

Tomcat严格上说不能称为是HTTP Web伺服器,它其实是Web容器,是Servlet容器!而我们说的Apache是HTTP Web伺服器。

是不是有点晕晕的感觉?

说得通俗点,Apache和Nginx一样,是Web伺服器,可以处理静态网页文件,但对于PHP、JSP这类动态内容就不行了,需要Web容器来处理它们。

Tomcat可以理解为是Apache的一个扩展,而且能独立运行(即:不需要额外安装Apache就可以运行)!说到这里,是不是和PHP-FPM一样?


综上所述,Web伺服器和Web容器指的可不是同一个东西!Nginx和Apache都是Web伺服器,而Tomcat和PHP-FPM充当的是Web容器。

当然在现实中,我们往往是把Nginx加在Tomcat之前,作为代理伺服器,Tomcat作为后端处理。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!


nginx和tomcat最常见的地方就是负载均衡。当系统有大量用户访问时,通常会增加伺服器来进行扩展,使用集群的方式提供整个系统的请求处理能力。

nginx通常被用来分发请求,tomcat通常被用来部署具体业务。当大量请求进入时,nginx可根据配置的权重,将请求分发到不同的tomcat上进行业务处理;当有tomcat意外挂掉了,nginx可以将其从集群中剔除掉。

总的来说,nginx就行一个酒店的前台,当有客人来住店,前台(nginx)就将其分配到不同的房间(tomcat)。


推荐阅读:
相关文章