简介
正向代理和反向代理是两种不同的网络服务配置方式,它们在客户端和服务端之间起到中介的作用,但工作方式和目的有所不同。正向代理和反向代理是两种常见的代理技术,它们在网络通信中扮演着不同的角色,具有各自的特点和用途
正向代理(Forward Proxy)
定义: 正向代理位于客户端一侧,主要目的是代表客户端去获取资源。它是一种代理服务器,客户端通过它来访问互联网上的其他服务或资源。
工作原理:
- 请求转发: 当客户端发送请求时,该请求首先被发送到正向代理服务器。
- 代理处理: 代理服务器会处理这个请求,然后将其转发给最终的目的地(如Web服务器)。
- 响应返回: 目的地服务器的响应会被正向代理接收,并由代理服务器转发回客户端。
用途:
- 隐藏客户端身份。
- 提供缓存功能以加快访问速度。
- 过滤和审查内容。
- 控制对特定网站的访问。
理解
通俗来讲,我电脑没法联网,但是和我在同一个局域网的张三的电脑可以,那么我们可以通过他去联网,也就是张三的电脑就成了我们的代理服务器,我们使用张三的身份上网(真实情况不一定是这种情况,这里使用的例子是为了方便理解)
nginx正向代理配置
server {listen 3128;location / {proxy_pass http://$http_host$request_uri;proxy_set_header Host $http_host;proxy_connect_timeout 10s;proxy_read_timeout 10s;}
}
反向代理(Reverse Proxy)
定义: 反向代理位于服务端一侧,主要目的是代表服务端接收客户端的请求。它是面向服务端的代理服务器,通常用于负载均衡、加密/解密等任务。
工作原理:
- 接收请求: 客户端的请求直接发送到反向代理服务器。
- 代理处理: 反向代理服务器根据一定的规则选择后端服务器处理请求。
- 响应返回: 后端服务器将响应发送给反向代理,再由反向代理转发给客户端。
用途:
- 负载均衡:将客户端请求分发到多个后端服务器。
- 安全性:隐藏后端服务器的真实IP地址。
- 加速:提供静态内容缓存,减少后端服务器负担。
- SSL/TLS 终止:在反向代理上处理加密通信,减轻后端服务器的压力。
理解
通俗来讲,所有服务器都是企业内部局域网,对外网络是不可达的情况,但是这些服务都能被名为张三的公网ip访问,同在公网的我们可以通过张三去访问这些服务,这个时候张三就成了这些内网服务器的代理服务器,以张三的身份对外提供服务 (真实情况不一定是这种情况,这里使用的例子是为了方便理解)
nginx反向代理配置
http {upstream backend {server backend1.example.com;server backend2.example.com;}server {listen 80;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}
总结
- 正向代理 主要为客户端提供服务,帮助客户端隐藏身份或提高访问效率。
- 反向代理 主要为服务端提供服务,帮助服务端实现负载均衡、安全性增强等功能。
正向代理 | 反向代理 | |
作用 | 正向代理位于客户端一侧,主要目的是代表客户端去获取资源 | 反向代理位于服务端一侧,主要目的是代表服务端接收客户端的请求 |
场景 | 访问国外受限网站,企业内部网络访问互联网时的认证和审计 | 大型网站负载均衡,CDN服务,安全防护等 |