Nginx和Tomcat都是常用的Web服务器,但它们的主要作用不同。
Nginx是一个HTTP服务器,反向代理服务器和通用TCP/UDP代理服务器。它通常用于静态内容、媒体流和负载均衡。在高流量和高并发负载下,Nginx表现更出色,并且能够轻松处理静态文件、压缩和SSL/TLS卸载等任务,以减轻后端服务器的负担。
什么是HTTP服务器呢?
HTTP服务器是指能够接收HTTP请求并返回HTTP响应的服务器软件或服务。它主要用于向客户端(例如Web浏览器)提供静态资源,如HTML页面、图像文件、CSS和JavaScript文件等。HTTP服务器通常会将这些静态资源存储在磁盘上,并在接收到请求时直接返回相应的文件。(并没有什么逻辑处理,就和链接差不多的处理)
所以说Nginx只能处理静态资源,不能处理jar包之类的动态资源。
什么是反向代理呢?
正向代理和反向代理都是通过代理服务器去访问其他服务器。
正向代理简单说就是vpn,就是通过代理服务器去访问你想访问的网站的内容,再去转发给客户端。
反向代理就是请求通过代理服务器分发给不同的服务器处理,从而避免请求都是同一台服务器处理,减轻服务器压力。
Tomcat是一个Java Servlet容器,实现了Java EE规范的一部分,并支持Java Servlet、JavaServer Pages(JSP)和Java WebSocket等技术。
简单说你就可以把它理解成java环境的一种补充,里面有servlet和jsp等api的实现,如果没有这些实现的话代码就运行不了(类比于c就是提供dll文件)。所以为什么说springboot内嵌Tomcat,因为打包好的jar包里面包含了这种servlet等接口的实现,所以就不需要Tomcat也能运行。所以Tomcat本质上是提供servlet等规范的实现。Tomcat通过Java代码实现动态内容的生成,而且能够处理复杂的业务逻辑。
但是Tomcat中也包含HTTP服务器,也就是能通过静态的资源名直接访问对应资源,但是功能没有NGINX那么强大,不是一个纯粹的HTTP服务器。
Tomcat服务器也没有反向代理的功能,它只是人家发给它什么请求,它返回对应的内容,并不会分发请求。
动态资源是指在每次请求时都需要根据用户的请求生成或处理的内容,返回对应的信息,如用户登录状态是什么、购物车里有哪些东西等等。
相比于静态资源的特点就是它更需要逻辑,而不是像静态资源那样直接返回。
我们通过使用脚本语言或后端框架来实现这些逻辑,并交给处理动态资源的服务器运行,从而能够执行一些特定的逻辑,根据具体的请求返回生成的动态内容。
HTTP服务器主要用于提供静态资源,而处理动态资源的服务器则同时包含了HTTP服务器的功能,并且能够动态生成和处理内容。实际上,在处理动态资源的服务器中,通常也会包含一个HTTP服务器用于处理静态资源的请求。
总的来说,Nginx和Tomcat都有自己特定的作用和优点,具体选择取决于应用场景和需求。一般情况下,Nginx用于处理静态资源和负载均衡,而Tomcat用于处理动态内容和服务器端Java应用程序。
在现在的前后端分离中,一般先启动前端工程(ngnix),然后启用后端工程(tomcat或运行springboot代码),然后再通过访问Nginx的端口的页面去访问后端接口。