nginx基础篇 - 什么是代理服务器?正向代理和反向代理的区别?
文章目录
- 1 什么是代理服务器?
- 1.1 代理服务器工作过程
- 1.2 代理服务器用途
- 1.3 代理服务器分类
- 2 正向代理与反向代理
- 2.1 正向代理
- 2.1.1 正向代理的概念
- 2.2.2 正向代理的使用场景
- 2.2 反向代理
- 2.2.1 反向代理的概念
- 2.2.2 反向代理的使用场景
- 2.3 正向代理与反向代理
- 2.3.1 相同点
- 2.3.2 不同点
1 什么是代理服务器?
代理服务器是一种电脑或系统,充当端点设备(网络浏览器或电脑)和提供请求服务的目标服务器(网站地址)之间的网关。
1.1 代理服务器工作过程
“代理”原意指“代表他人执行事务”,代理服务器做的正是代表客户端、发送和接收请求。
正常请求下,我们访问某个服务,其流程可以简化为:
- 客户端发送请求到目标服务器。
- 目标服务器接收请求,处理后返回应答到客户端。
使用代理服务器之后,流程将变化为:
- 客户端发送请求到代理服务器。
- 代理服务器将请求发送到目标服务器。
此时,代理服务器可以检查请求是否遵循预定义的规则。如果遵循规则,则代理服务器代表客户端将请求转发到目标服务器。如果没有遵循规则,代理服务器可能会向客户端显示错误消息或将其重定向到另一个服务器。
- 目标服务器处理请求并响应代理服务器。
- 代理服务器将响应返回给客户端。
代理服务器可以对响应进行更改。例如,它可以缓存响应以备将来使用,过滤响应以删除不需要的内容,或者在客户端看到响应之前需要进行身份验证。
代理服务器的工作方式与虚拟专用网络( VPN )服务器类似。两者会代表您路由流量,隐藏您的身份。 代理和 VPN 之间最显著的区别 是,VPN 会加密流量,而代理服务器则不会。
1.2 代理服务器用途
代理服务器是管理或保护网络流量和提高性能的强大工具。
以下是代理服务器的一些常见用例:
- 网络过滤
您可以使用代理服务器来过滤和封锁某些网站或网页内容的访问。在这种情况下,代理就像防火墙一样,强制执行合规性和互联网审查,防止恶意软件感染或网路钓鱼攻击,或限制不适当或非法内容的访问。 - 缓存
代理服务器存储频繁访问的资源,例如网页、影像和视频。然后,它们将缓存的数据提供给客户端,而不是从原始服务器获取内容。 - 负载平衡
代理服务器将客户端请求分布在多个服务器上,以防止单一服务器超载。它们还可以检测请求,并将请求从故障或超载的服务器重定向到尚未达到容量的服务器。 - 绕过限制
虽然服务器端的代理服务器可以强制执行互联网限制,但客户端的代理可以帮助绕过这些限制。由于代理服务器重新路由网路流量,它们可以绕过网络管理员、ISP,甚至政府设置的限制。 - 屏蔽 IP 地址
代理服务器代表您连接到网站,因此网站目的地看到的是服务器的 IP 地址,而不是您的 IP 地址。它会将您的 IP 地址和其他识别信息对您在线访问的网站隐藏。 - 提供 SSL 加密和解密
某些代理服务器类型可以处理 SSL/TLS 加密和解密。它允许网页服务器专注于处理请求,而不是处理加密。 - 路由
代理服务器可以根据预定义的标准(例如请求的内容或客户端的位置)通过不同的服务器路由请求。
1.3 代理服务器分类
按照把不同的分类标准,代理服务器可以分为不同的类型:
- 按流量方向
- 正向代理
- 反向代理
- 按匿名级别
- 透明代理
- 匿名代理
- 高匿名代理
- 混淆代理
- 轮换代理
- 按网络协议
- HTTP代理
- HTTPS代理
- SSL代理
- …
2 正向代理与反向代理
2.1 正向代理
2.1.1 正向代理的概念
正向代理是一种位于客户端和服务器之间的代理服务器。客户端将请求发送给正向代理,然后由代理服务器将请求转发给目标服务器。服务器将响应返回给代理服务器,再由代理服务器将响应转发给客户端。正向代理对客户端是透明的,客户端无需知道实际服务器的地址。
2.2.2 正向代理的使用场景
-
突破网络限制: 在某些地区或网络环境下,用户可能无法直接访问某些网站或服务。此时,可以通过设置正向代理来突破这些限制,实现访问。
-
网络安全: 通过正向代理,企业可以监控和管理员工的网络访问行为,隐藏客户端真实IP,防止敏感数据泄露。
-
内容过滤: 学校、图书馆等公共场所可以通过正向代理过滤不良内容,保护用户免受不良信息的侵害。
-
提高访问速度: 代理服务器设置硬盘缓冲区,可以将部分高频请求的响应数据保存到缓冲区中,以提高访问速度。
2.2 反向代理
2.2.1 反向代理的概念
反向代理是一种位于服务器和客户端之间的代理服务器。客户端将请求发送给反向代理,然后由代理服务器根据一定的规则将请求转发给后端服务器。后端服务器将响应返回给代理服务器,再由代理服务器将响应转发给客户端。反向代理对客户端是透明的,客户端无需知道实际服务器的地址,只需将反向代理当作目标服务器一样发送请求就可以了。
2.2.2 反向代理的使用场景
- Web应用: 在Web应用中,反向代理常用于实现负载均衡、安全访问控制以及缓存优化等功能。
- API网关: API网关通常采用反向代理的方式,对外部请求进行统一管理和调度,实现API的安全、高效访问。
- CDN加速: 内容分发网络(CDN)通过在全球范围内部署反向代理服务器,实现内容的就近访问和加速传输。
2.3 正向代理与反向代理
2.3.1 相同点
- 位置和功能: 正向代理和反向代理都位于客户端和真实服务器之间,它们的主要功能都是将客户端的请求转发给服务器,然后再将服务器的响应转发给客户端。
- 提高访问速度: 两者都能通过缓存机制提高访问速度。当客户端请求某个资源时,如果代理服务器已经缓存了该资源,就可以直接从缓存中提供,而无需再次从原始服务器获取,从而节省了时间和带宽。
2.3.2 不同点
- 代理对象: 正向代理是为客户端提供代理服务,即服务器不知道真正的客户端是谁。而反向代理则是为服务器提供代理服务,即客户端不知道真正的服务器是谁。
- 架设位置: 正向代理通常是由客户端架设的,而反向代理则是由服务器架设的。
- 用途和目的: 正向代理的主要用途是为在防火墙内的局域网客户端提供访问Internet的途径,侧重于解决访问限制问题。而反向代理的主要用途是将防火墙后面的服务器提供给Internet用户访问,其目的在于实现负载均衡、安全防护等。
- 服务对象: 在正向代理中,服务器不知道真正的用户是谁;而在反向代理中,用户不知道真正的服务器是谁。