【nginx】反向代理和正向代理的区别

nginx工作图示如下:
在这里插入图片描述

更详细一些:

在这里插入图片描述

补充一个小知识:

  1. 概念
      正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些特别的设置才能使用。

反向代理正好相反。对于客户端来说,反向代理就好像目标服务器。并且客户端不需要进行任何设置。客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反向代理后面的服务,也因此不需要客户端做任何设置,只需要把反向代理服务器当成真正的服务器就好了。

  1. 区别
      正向代理需要你主动设置代理服务器ip或者域名进行访问,由设置的服务器ip或者域名去获取访问内容并返回;而反向代理不需要你做任何设置,直接访问服务器真实ip或者域名,但是服务器内部会自动根据访问内容进行跳转及内容返回,你不知道它最终访问的是哪些机器。

正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;而反向代理是代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。

从上面的描述也能看得出来正向代理和反向代理最关键的两点区别:

是否指定目标服务器
客户端是否要做设置
下面用一张图来表示两者的差异:

在这里插入图片描述


从用途上来区分:

正向代理:正向代理用途是为了在防火墙内的局域网提供访问internet的途径。另外还可以使用缓冲特性减少网络使用率
反向代理:反向代理的用途是将防火墙后面的服务器提供给internet用户访问。同时还可以完成诸如负载均衡等功能
  从安全性来讲:

正向代理:正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此你必须采取安全措施来确保仅为经过授权的客户端提供服务
反向代理:对外是透明的,访问者并不知道自己访问的是代理。对访问者而言,他以为访问的就是原始服务器

正向代理是在客户端和目标服务器之间充当中间人的代理服务器。当客户端请求访问目标服务器时,请求先发送到正向代理服务器,然后由代理服务器转发请求给目标服务器,并将目标服务器的响应返回给客户端。正向代理隐藏了客户端的真实IP地址,使得目标服务器无法直接识别和追踪客户端。
简而言之:正向代理是客户端访问代理服务器去访问目标服务器,并且对目标服务器隐藏了客户端的真实信息(IP等信息)。

正向代理的主要用途包括:

访问被限制的资源:当某些资源受到网络限制或访问限制时,可以使用正向代理绕过这些限制来获取资源。
提高访问速度:代理服务器可以缓存经常请求的资源,从而提高客户端访问资源的速度。
突破防火墙:正向代理可以帮助绕过企业或国家防火墙的限制,访问被封锁的网站或资源。


反向代理是在服务器端和客户端之间充当中间人的代理服务器。当客户端发送请求访问反向代理服务器时,代理服务器会根据一定的规则将请求转发给后端的多个服务器中的一台,然后将后端服务器的响应返回给客户端。反向代理隐藏了真实的服务端,对于客户端而言,它们并不知道具体访问的是哪一台后端服务器。
简而言之:反向代理是指代理服务器接收客户端的请求,然后反向代理将客户端的请求分发给一个或多个目标服务器,最后将响应返回给客户端,对于客户端隐藏了真实的服务端信息。

反向代理的主要用途包括:

负载均衡:反向代理可以根据一定的算法将请求均匀地分发给后端的多台服务器,从而实现负载均衡,提高系统的并发处理能力和稳定性。
缓存静态资源:反向代理可以缓存经常请求的静态资源,减少后端服务器的负载,提高网站的访问速度。
安全性和可靠性:反向代理可以作为防火墙和安全设备,提供安全认证、访问控制、DDoS攻击防护等功能。

总结:
正向代理和反向代理都是利用代理服务器作为中间人来转发请求和响应。
正向代理是客户端通过代理服务器发送请求,代理服务器帮助客户端发送请求到互联网上的目标服务器。隐藏客户端的真实IP地址(目标服务器并不知道是那个真实的客户端访问的)。
反向代理是客户端通过代理服务器发送请求,代理服务器将请求转发到后端的多个服务器中的一个。反向代理隐藏真实的服务端(客户端并不知道那个后端服务器响应的结果)。
两者的区别在于请求的流向和代理服务器与目标服务器的关系,正向代理中代理服务器与客户端处于同一侧(客户端通过代理服务器获取特定的资源),反向代理中代理服务器与目标服务器处于同一侧(服务端通过代理服务器处理客户端的请求)。

参考文章:(其中有更详细的解释)
正向代理和反向代理的区别1
正向代理和反向代理的区别2

### Nginx正向代理反向代理区别 #### 正向代理的工作原理 正向代理是指客户端通过代理服务器来访问目标资源。在这种模式下,客户端明确指定了要访问的目标服务器,并且请求会先发送到代理服务器上。之后由该代理服务器代替客户端去获取所需的数据并返回给客户端[^1]。 对于租房的例子来说,如果把房子比喻成互联网上的服务,则租客相当于浏览器或其他应用程序;而房东就是远程主机或Web应用本身。此时如果有位中介帮助联系房源并与之沟通细节——这位中介就扮演着“正向代理”的角色:它代表客户(即租客)同外界打交道。 ```bash # 配置Nginx作为正向代理的一个简单例子 http { server { listen 80; location / { resolver 8.8.8.8; # 使用Google DNS解析域名 set $target http://example.com$request_uri; proxy_pass $target; # 设置转发头信息以便于识别原始IP地址 proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host example.com; } } } ``` #### 反向代理的工作原理 相比之下,在反向代理的情况下,外部用户并不知道自己实际上是在跟一个中间件交互而不是直接连接至最终的目的地。当用户的请求到达这个中间节点时,后者再决定应该将此流量导向哪个内部网络中的真实服务器处理。因此,从用户的角度来看,他们始终认为自己正在与同一个固定的入口点通信[^5]。 继续沿用之前的类比,假设现在有一个物业管理公司负责管理多个公寓楼内的出租单元。每当有人想要查看某个特定房间的信息时,他们会首先找到这家公司询问情况。物业公司将根据需求安排相关人员带领参观相应的房屋,但访客无需关心具体是由谁陪同以及去了哪栋建筑——这就是所谓的“反向代理”。 ```bash # 下面是一个简单的Nginx反向代理配置实例 http { upstream backend_servers { server web_server_1 weight=5 max_fails=3 fail_timeout=30s; server web_server_2 backup; } server { listen 80; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } ``` #### 主要差异总结 | 特征 | 正向代理 | 反向代理 | | --- | --- | --- | | **定义** | 客户端设置代理以访问其他网站的服务方式 | 用户不知道背后存在多台服务器提供服务的情况下的代理机制 | | **用途场景** | 访问受限制的内容、绕过地理封锁等 | 负载均衡、缓存加速、安全防护等功能 | | **可见性** | 对外公开显示为代理后的源站 | 外部只看到单一的代理接口 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值