本
文
摘
要
一、正向代理

1. 定义
- 正向代理是代理服务器代替客户端去访问目标服务器。客户端向代理服务器发送请求,代理服务器再向目标服务器请求资源,目标服务器将响应返回给代理服务器,最后代理服务器把响应传递给客户端。
2. 特点
- 隐藏客户端身份:对于目标服务器来说,它看到的请求来源是代理服务器的IP地址,而不是客户端的真实IP,从而隐藏了客户端的身份。例如,在企业内部网络中,员工通过企业设置的正向代理服务器访问外部网站时,外部网站看到的是代理服务器的IP。
- 突破访问限制:可以用于突破某些网络访问限制。比如,在一些地区可能无法直接访问某些网站,但通过设置正向代理服务器(位于可访问区域)就可能实现访问。
3. 配置示例(简单配置)
server {
resolver 8.8.8.8; # 设置DNS解析服务器
listen 8080; # 代理服务器监听端口
location / {
proxy_pass http://$http_host$request_uri; # 将请求转发到目标服务器
}
}
二、反向代理
1. 定义
- 反向代理是代理服务器位于服务器端,接收互联网用户的请求,然后将请求转发到内部网络中的一个或多个后端服务器,最后将后端服务器的响应返回给互联网用户。
2. 特点
- 隐藏后端服务器信息:对于客户端来说,只能看到反向代理服务器的IP地址,不知道后端服务器的具体情况,包括数量、IP、架构等。例如,大型网站使用反向代理服务器,用户访问网站时并不知道背后有多少台Web服务器在提供服务。
- 负载均衡和高可用性:可以实现对后端服务器的负载均衡,将请求合理地分配到多个后端服务器上,提高系统的整体性能和可用性。如果其中一台后端服务器出现故障,反向代理可以将请求转发到其他正常的服务器上。
3. 配置示例(简单配置)
upstream backend_pool {
server 192.168.1.100; # 后端服务器IP
server 192.168.1.101;
}
server {
listen 80;
location / {
proxy_pass http://backend_pool; # 将请求转发到后端服务器组
}
}三、正向代理和反向代理的区别
1. 代理位置与服务对象
- 正向代理:代理服务器位于客户端一侧,主要服务于客户端。它代替客户端去访问外部网络资源,使得客户端能够间接获取目标服务器的资源。例如,个人用户使用正向代理来绕过网络封锁或者隐藏自己的真实访问来源。
- 反向代理:代理服务器位于服务器端,服务于后端服务器集群。它接收来自互联网的请求,然后将这些请求分发给后端的服务器,最后把后端服务器的响应返回给客户端。像大型网站,使用反向代理服务器来隐藏后端服务器的架构和分布情况。
2. 请求流向
- 正向代理:请求的流向是客户端→正向代理服务器→目标服务器。客户端明确知道自己要访问的目标服务器,只是通过正向代理服务器来实现访问。例如,在企业网络环境中,员工想要访问特定的外部网站,请求先到企业的正向代理服务器,再由代理服务器转发到目标网站服务器。
- 反向代理:请求的流向是客户端→反向代理服务器→后端服务器。客户端只知道反向代理服务器的地址,而不知道具体的后端服务器。当用户访问一个网站时,请求先到达反向代理服务器,然后反向代理服务器根据负载均衡算法等将请求转发到合适的后端服务器。
3. 目的侧重
- 正向代理:侧重于保护客户端的隐私和突破访问限制。通过隐藏客户端的真实IP地址,实现一定程度的匿名性,并且可以绕过一些网络限制,访问到客户端原本无法直接访问的资源。
- 反向代理:侧重于保护后端服务器和提高服务器的性能与可用性。隐藏后端服务器的信息可以防止后端服务器直接暴露在互联网上,减少安全风险。同时,通过负载均衡等功能提高后端服务器的整体性能,确保在高流量情况下服务的稳定运行。
4. 对客户端和服务器的可见性
- 正向代理:目标服务器只能看到代理服务器的IP地址,无法得知客户端的真实IP地址;而客户端清楚自己的请求是通过代理服务器转发到目标服务器的。
- 反向代理:客户端只能看到反向代理服务器的IP地址,不清楚后端服务器的具体情况;而后端服务器接收到的请求是来自反向代理服务器的,不知道客户端的原始请求情况。
