反向代理
“反向代理”之所以得名,是因为它的工作方式与“正向代理”相反。在网络中,代理的基本作用是充当客户端与服务器之间的中介,但两者的代理方向和目的有所不同。
正向代理(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
总结来说,正向代理和反向代理最大的区别在于他们服务的对象不同:正向代理服务于客户端,反向代理服务于服务器端。