首页 > IT基础架构 > 服务器/存储 > Nginx反向代理最全详解(图文全面总结)
来源:mikechen的互联网架构
Nginx反向代理在大型网站有非常广泛的使用,也是大厂经常考察的内容,下面我就重点来详解Nginx反向代理
很多同学谈到很难理解反向代理,所以,在介绍反向代理之前,我们有必要一起来先了解一下:什么是正向代理?
正向代理的情况下,客户端不直接与目标服务器通信,而是通过正向代理服务器进行通信。
如下图所示:

比如:在大陆访问google,暂时无法访问,我们可以通过正向代理这种方式,访问原来无法访问的资源。
在这种情况下,你可以使用一个位于境外的代理服务器,作为正向代理来帮助你访问谷歌,因为正向代理服务器位于境外。
这个过程就是正向代理,客户端非常明确要访问的服务器地址,以及,正向代理还隐藏了客户端的真实IP地址,还保护了客户端的隐私、和安全。
一句话总结正向代理:客户端不直接与目标服务器通信,而是通过正向代理服务器进行通信,这就是正向代理。
反向代理,从字面上就很清楚,反向代理和正向代理在概念上是相反的。
正向代理:客户端知道代理服务器的存在,而服务器不知道客户端的真实身份。
而反向代理:客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
来看个示意图:

我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择,目标服务器获取数据后,再返回给客户端。
此时反向代理服务器、和目标服务器,对外就是一个服务器,暴露的是反向代理服务器地址,并且,隐藏了真实服务器IP地址。
反向代理服务,主要用于:负载均衡、缓存加速......等场景。
例如:在Web服务器架构中,使用反向代理(Nginx),来将请求分发到多个后端服务器,实现负载均衡和高可用性。
了解完反向代理后,就很容易掌握Nginx反向代理了。
原因很简单,因为Nginx反向代理,只不过是实现反向代理的一种方式而已。
Nginx配置如下:
server {listen 80;server_name example.com;location / {proxy_pass http://backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}upstream backend_server {server 192.168.1.100:8080;server 192.168.1.101:8080;}
配置参数,如下图所示:

location: # server 块可以包含多个 location 块,location 指令用于匹配 uri;
proxy_pass: 定义后端服务器的地址;
upstream: 定义后端服务器的集群,可以包含多个服务器。
整体工作流程,如下:
首先,接收请求: Nginx接收来自客户端的HTTP请求。
其次,选择后端服务器: 根据配置的规则,Nginx选择一个或多个后端服务器来处理请求。
然后,转发请求: Nginx将请求转发给选定的后端服务器。
然后,接收响应: 后端服务器处理请求并生成响应,然后将响应发送回Nginx。
最后,返回响应: Nginx将后端服务器的响应发送回客户端。
总之,Nginx反向代理是一个强大且灵活的工具,可以帮助构建高性能、高可用性和安全性的大型应用程序架构。
以上
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70024923/viewspace-3015428/ ,如需转载,请注明出处,否则将追究法律责任。