每个域名都可以解决到唯一的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服务器?
在上图中,清楚地表明,我们的计算机内的不同应用服务器可以解决多个请求。
例如:/maps
可以由nodejs服务器提供,可以由PHP服务器提供/docs
。
解决方案
这是由安装在物理计算机上的NGINX服务器完成的。
nginx映射传入请求将由其他一些后端服务器解决。此过程称为反向代理。
反向代理服务器是一种代理服务器,通常位于专用网络中的防火墙后面,并将客户端请求引导到适当的后端服务器。
其他Popoular代理服务器是Haproxy。
现在我正在深入研究这个话题,所以要注意。
首先让我引用。
默认情况下,所有HTTP请求均在端口80上提供。
默认情况下,所有HTTPS请求均在端口443中提供。
让我们假设您的/maps
请求将由端口1234上的节点服务器提供,并且您的/docs
请求将由端口1235上的PHP服务器服务。
现在,以/maps
或/docs
形式发出的任何请求,如果是HTTP请求,则带有默认端口80,如果是HTTPS请求,则应带443。
因此,我们必须将传入请求映射到不同端口,该请求由Nginx完成。
以下图像说明了该过程:
nginx用C编写,并且表现非常出色。它可以处理〜10000并发请求!
它可以做多种事情:
- 负载平衡
- Rate limiting
- http缓存
- 反向代理
- WebSocket连接
- 处理静态文件,索引文件和自动索引。
- URL重定向和重写...
以下图像说明了负载平衡部分:
谢谢,请愿意。