Nginx、nodehs的koa(express)这两个到底用来做什么,他们在概念上有什么不同

初学web基础方面的东西,我一直在疑惑,Nginx(Apache),nodejs的koa(express),java的tomcat他们到底什么关系,用nodejs的koa直接监听端口,处理请求不也可以吗?为什么要配合上Nginx或者Apache,他们在服务器上分别充当了什么职责?有点蒙。
目前自己大概的理解就是 Node.js 监听本地的某个端口,然后前面挂个 Nginx 监听 80 端口反向代理到 Node.js 上,可是为什么要这样做呢?就为了解决跨域?还能增加性能?

Nginx(或Apache)、Node.js的Koa(或Express)、Java的Tomcat在服务器中扮演不同的角色和职责。

Nginx和Apache是两种常见的Web服务器,用于接收和处理HTTP请求。它们可以作为静态资源服务器、反向代理服务器、负载均衡器等。它们的主要职责是接收客户端请求,并将请求转发给后端的Web应用程序进行处理。同时,它们也提供了一些功能,如SSL证书管理、请求日志记录、访问控制等。

Node.js的Koa(或Express)是一种基于JavaScript的服务器端框架,用于构建Web应用程序。它提供了一组API,用于处理HTTP请求、路由、中间件等。使用Node.js的Koa(或Express)可以直接监听端口,处理HTTP请求。Node.js适用于构建高性能、可扩展的实时应用、API服务器等。

Java的Tomcat是一个Java Servlet容器,用于运行Java Web应用程序。它实现了Java Servlet规范,并提供了HTTP请求的处理和Java代码的执行环境。Tomcat负责解析HTTP请求并将请求传递给相应的Java Servlet进行处理。Java应用程序通常使用Tomcat作为运行环境,处理HTTP请求、生成动态内容等。

配合上Nginx(或Apache)的原因有以下几点:

  1. 负载均衡和反向代理:Nginx(或Apache)可以作为反向代理服务器,将客户端请求转发到不同的后端服务器。这样可以均衡服务器负载、提高系统性能和可靠性。
  2. 静态资源服务:Nginx(或Apache)可以高效地提供静态资源(如HTML、CSS、JavaScript、图片等)的服务,减轻后端服务器的负担。
  3. SSL证书管理:Nginx(或Apache)可以负责处理HTTPS请求和管理SSL证书,提供安全的通信。