nginx与tomcat的区别?

关于nginx和tomcat的概念

网上有很多关于nginx和tomcat是什么东西的定义,我总结了一下:

tomcat是Web服务器HTTP服务器、应用服务器、Servlet容器、web容器。
Nginx是Web服务器HTTP服务器、正向/反向代理服务器,。
这里有两个概念是交叉的:Web服务器和HTTP服务器。我们主要是从交叉概念来看这两个的区别,因为没有交叉的概念已经从名字说明了它们的不同。

交叉概念一:Web服务器

tomcat和Nginx都是Web服务器,当然,Web服务器的概念很广泛。Web服务器代指硬件或软件,或是它们协同工作的整体。

  1. 硬件部分:Web服务器是一台计算机,存储了Web服务器软件以及网站的组成文件(比如HTML文档、图片、CSS等)。它接入到互联网,并支持与其他互联网设备进行物理数据的交互。
  2. 软件部分:Web服务器包括控制网络用户如何访问托管文件的几个部分,至少是一台HTTP服务器

所以,光从Web服务器的概念无法看出nginx和tomcat的区别。

交叉概念二:HTTP服务器

nginx和tomcat都是HTTP服务器,可以运行在服务器上,绑定服务器的ip地址,并监听某一个tcp端口来接收或处理http请求。
在这里插入图片描述
静态资源:无论何时,无论谁访问都是一样的。比如将静态文本通过HTTP协议返回给客户端
动态资源:不同时间、不同客户端访问的是不一样的

tomcat能够动态的生成资源并返回客户端,也可以返回客户端静态的资源
在这里插入图片描述
nginx只能返回客户端静态的资源
在这里插入图片描述
所以,war包不能部署到nginx上,war包需要部署到servlet容器中,也就是Tomcat中。
ngxin可以做正向代理、反向代理服务器的功能。

tmocat和nginx的区别

Tomcat Nginx
HTTP服务器
Servlet容器 不是
响应静态资源 可以(war里面,ROOT目录下) 可以(html目录下)
响应动态资源 可以 不可以
正向代理 不可以 可以
反向代理 不可以 可以

tomcat和nginx配合使用

我们通常的做法是将tomcat和Nginx配合起来使用:

  • 动静态资源分离,通过nginx反向代理功能,将所有动态资源的请求转发给Tomcat。而静态资源则由nginx返回浏览器
  • 负载均衡,当业务压力增大,一个tomcat实例不足以处理时,可以创建多个tomcat实例,每个实例都是一摸一样的,处理监听的tcp接口不一样。然后利用nginx反向代理功能,将http请求转发给这些实例中的某一个来处理,采用特定的算法来转发,实现负载均衡。
上一篇:C# wpf 嵌入wpf控件


下一篇:用ENIGMA-toolbox作图