什么是nginx和反向代理的工作方式?
#javascript #网络开发人员 #编程 #networking

每个域名都可以解决到唯一的IP地址。
例如:www.gooogle.com映射到142.250.191.78 ipv4。

每当您在远程计算机上托管程序(例如:nodejs服务器或PHP服务器)(例如:AWS EC2实例或Digitalocean),您将获得一个保留的公共IP地址通过SSH终端或任何SSH客户端(如Putty)。

现在,假设您访问www.google.com/maps。当您点击Enter时,您的请求将发送到具有IP地址142.250.191.78的UNQIUE服务器。现在,您的请求已达到正确的设备,但是/maps如何转到该设备内部运行的正确程序?假设您希望每个www.google.com/maps必须由在EC2实例中运行的NodeJS服务器提供服务,并且必须由PHP服务器提供www.google.com/docs。我们如何将/maps请求转发到nodejs服务器和/docs请求到php服务器?


Image description

在上图中,清楚地表明,我们的计算机内的不同应用服务器可以解决多个请求。
例如:/maps可以由nodejs服务器提供,可以由PHP服务器提供/docs

解决方案
这是由安装在物理计算机上的NGINX服务器完成的。

nginx映射传入请求将由其他一些后端服务器解决。此过程称为反向代理。

反向代理服务器是一种代理服务器,通常位于专用网络中的防火墙后面,并将客户端请求引导到适当的后端服务器。

其他Popoular代理服务器是Haproxy。

现在我正在深入研究这个话题,所以要注意。
首先让我引用。

默认情况下,所有HTTP请求均在端口80上提供。
默认情况下,所有HTTPS请求均在端口443中提供。

让我们假设您的/maps请求将由端口1234上的节点服务器提供,并且您的/docs请求将由端口1235上的PHP服务器服务。

现在,以/maps/docs形式发出的任何请求,如果是HTTP请求,则带有默认端口80,如果是HTTPS请求,则应带443。

因此,我们必须将传入请求映射到不同端口,该请求由Nginx完成。

以下图像说明了该过程:

Image description

nginx用C编写,并且表现非常出色。它可以处理〜10000并发请求!
它可以做多种事情:

  • 负载平衡
  • Rate limiting
  • http缓存
  • 反向代理
  • WebSocket连接
  • 处理静态文件,索引文件和自动索引。
  • URL重定向和重写...

以下图像说明了负载平衡部分:

Image description

谢谢,请愿意。