关于nginx和tomcat的概念
网上有很多关于nginx和tomcat是什么东西的定义,我总结了一下:
tomcat是Web服务器、HTTP服务器、应用服务器、Servlet容器、web容器。
Nginx是Web服务器、HTTP服务器、正向/反向代理服务器,。
这里有两个概念是交叉的:Web服务器和HTTP服务器。我们主要是从交叉概念来看这两个的区别,因为没有交叉的概念已经从名字说明了它们的不同。
交叉概念一:Web服务器
tomcat和Nginx都是Web服务器,当然,Web服务器的概念很广泛。Web服务器代指硬件或软件,或是它们协同工作的整体。
- 硬件部分:Web服务器是一台计算机,存储了Web服务器软件以及网站的组成文件(比如HTML文档、图片、CSS等)。它接入到互联网,并支持与其他互联网设备进行物理数据的交互。
- 软件部分: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请求转发给这些实例中的某一个来处理,采用特定的算法来转发,实现负载均衡。