反向代理

137 阅读4分钟

反向代理

“反向代理”之所以得名,是因为它的工作方式与“正向代理”相反。在网络中,代理的基本作用是充当客户端与服务器之间的中介,但两者的代理方向和目的有所不同。

正向代理(Forward Proxy)

  • 正向代理是为客户端(如用户的浏览器)提供服务。它接收客户端的请求,然后代理客户端访问目标服务器,再将服务器的响应返回给客户端。
  • 正向代理隐藏了客户端的身份,使服务器看不到真实客户端的 IP 地址,因此正向代理常用于帮助客户端绕过网络限制、访问受限网站、隐藏真实 IP 等。
  • 工作方式上,客户端需要配置正向代理的 IP 地址和端口,通常应用在需要突破访问限制的场景中。

反向代理(Reverse Proxy)

  • 反向代理是为服务器端服务的。客户端将请求发送给反向代理,反向代理服务器根据规则将请求转发给相应的后端服务器处理。反向代理将服务器的响应返回给客户端,而客户端并不直接访问服务器,而是与反向代理进行通信。
  • 反向代理隐藏了后端服务器的真实 IP 地址和位置,从客户端的角度看,它只知道反向代理的 IP,而不了解后端服务器的具体信息。
  • 反向代理的主要用途包括负载均衡、安全防护、SSL 终止和内容缓存等。

正向代理和反向代理的区别-通过一个具体的场景说明

正向代理的应用场景

假设某用户(客户端)身处国内,想要访问一个仅限国外 IP 访问的网站 https://www.google.com,但直接访问会受到限制。为此,用户可以使用一个正向代理服务器,这个代理位于国外,可以帮助用户访问受限网站。

流程
  • 用户(客户端)将请求发送到正向代理服务器,该服务器位于国外,能正常访问 https://www.google.com
  • 正向代理服务器收到请求后,代表用户访问目标网站 https://www.google.com
  • 目标网站返回内容给正向代理,正向代理再将内容返回给用户。
客户端配置
  • 用户需要知道正向代理服务器的地址并手动配置,才能使用该代理访问 https://www.google.com
效果
  • https://www.google.com看到的是正向代理服务器的 IP 地址,无法识别用户的真实 IP。
  • 正向代理隐藏了用户的身份,因此常用于绕过访问限制和保护用户隐私。

图示:

       user1
          \
           \
user2 ----> 正向代理服务器(国外) ----> https://www.google.com
           /
          /
       user3

反向代理的应用场景

现在假设某知名电商网站 bigstore.com,为了应对大量的用户请求,部署了多台服务器处理不同的请求,并在它们(用户)前面设置了一台反向代理服务器来统一管理这些请求。

流程
  • 用户在浏览器中输入 bigstore.com 的地址,浏览器将请求发送到反向代理服务器。
  • 反向代理服务器接收到请求后,根据负载情况或其他规则,将请求转发到后端的其中一台服务器(如 server1 或 server2)进行处理。
  • 后端服务器完成处理后,将响应发送回反向代理,反向代理再将响应传回给用户。
客户端配置
  • 用户无需知道反向代理的存在,也不需要配置任何代理地址。
  • 用户只需要访问 bigstore.com 即可,反向代理隐藏了后端服务器的具体信息。
效果
  • 用户只看到 bigstore.com 的地址,对它来说,看起来像是在直接与该网站通信。
  • 实际上,用户的请求被反向代理服务器管理和分发,后端服务器的 IP 和数量被隐藏,从而提高了系统的安全性和扩展性。

图示:

                     /  server1
                    /
用户 ----> 反向代理 ----> server2
                    \
                     \  server3

总结来说,正向代理和反向代理最大的区别在于他们服务的对象不同:正向代理服务于客户端,反向代理服务于服务器端