反向代理为什么叫做反向代理

(P.s. 本文系转载,原文排版更佳,推荐阅读原文。地址:https://foofish.net/proxy-and-reverse-proxy.html)

维基百科对「代理服务器」的解释也是让人一头雾水,在计算机世界,代理可分为「正向代理」和「反向代理」,比如著名的FQ软件 Shadowsocks 就是一款正向代理软件,全世界前1000的高流量网站都在用的 Web 服务器 Nginx 也作为反向代理服务器,那么两者之间究竟有什么区别?我尝试着用浅显易懂的例子把两个概念解释清楚

正向代理

A同学在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱,可想而知,最后碰一鼻子灰回来了,情急之下,他想到一个办法,找关系开后门,经过一番消息打探,原来A同学的大学老师王老师是马云的同学,于是A同学找到王老师,托王老师帮忙去马云那借500万过来,当然最后事成了。不过马云并不知道这钱是A同学借的,马云是借给王老师的,最后由王老师转交给A同学。这里的王老师在这个过程中扮演了一个非常关键的角色,就是代理,也可以说是正向代理,王老师代替A同学办这件事,这个过程中,真正借钱的人是谁,马云是不知道的,这点非常关键。

我们常说的代理也就是只正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,科学上网工具 Shadowsocks 扮演的就是典型的正向代理角色。在天朝用浏览器访问 www.google.com 时会被无情的墙掉,要想翻阅这堵墙,你可以在国外用 Shadowsocks 来搭建一台代理服务器,让代理帮我们去请求 www.google.com,代理再把请求响应结果再返回给我。

反向代理

大家都有过这样的经历,拨打10086 客服电话,一个地区的 10086 客服有几个或者几十个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是你的问题能不能得到专业的解答,你只需要拨通了10086 的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的 10086 总机号码就是我们说的反向代理。客户不知道真正提供服务的人是谁。

反向代理隐藏了真实的服务端,当我们访问 www.baidu.com 的时候,就像拨打 10086 一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到提供真实计算的服务器那里去。Nginx 就是性能非常好的反向代理服务器,它可以用来做负载均衡。

两者的区别在于代理的对象不一样,「正向代理」代理的对象是客户端,「反向代理」代理的对象是服务端。

时间: 2024-08-28 20:55:03

反向代理为什么叫做反向代理的相关文章

使用ssh正向连接、反向连接、做socks代理的方法

ssh -L 219.143.16.157:58080:172.21.163.32:8080 用户名@localhost -p 10142 在 219.143.16.157机器执行   将ssh隧道打通 将172.21.163.32:8080 映射到本机58080上 1.用ssh做正向连接 啥叫正向连接?就是client连上server,然后把server能访问的机器地址和端口(当然也包括server自己)镜像到client的端口上. 命令: ssh -L [客户端IP或省略]:[客户端端口]:

用nginx TCP反向代理作mail邮件代理

用nginx TCP反向代理作mail邮件代理 用nginx TCP反向代理作mail邮件代理 1. 背景 2. Nginx安装(包括nginx_upstream_check_module) 3. Nginx配置 4. 总结 1. 背景 新版本nginx有TCP反向代理功能,nginx的mail proxy配置认证又太麻烦,于是就想用TCP反向功能作mail代理. 2. Nginx安装(包括nginx_upstream_check_module) cd /tmptar zxf pcre-8.35

正向代理,反向代理、透明代理、匿名代理、高匿名代理

代理总体来讲分正向,反向两种! 正向代理代理的客户端,就是通讯请求方.反向代理代理的是服务端,就是通讯接收方. 反向代理暂且不提,太熟了!nginx.Fikker.Traefik.haproxy随随便便能说出四五个. 今天咱们主要聊正向代理.让我们开始这段感情吧! 正向代理分透明代理,匿名和高匿名代理.这个透明,匿名,高匿名是针对信息接收方来讲的. 透明代理:对方服务器可以知道你使用了代理,并且也知道你的真实IPhttp头为:REMOTE_ADDR = 代理服务器IPHTTP_VIA = 代理服

Spring框架_代理模式(静态代理,动态代理,cglib代理)

共性问题: 1. 服务器启动报错,什么原因? * jar包缺少.jar包冲突 1) 先检查项目中是否缺少jar包引用 2) 服务器: 检查jar包有没有发布到服务器下:                                      用户库jar包,需要手动发布到tomcat. (每次新建项目) 3) 重新发布项目 * 配置文件错误 (web.xml / struts.xml /bean.xml /hibernate.xml / *.hbm.xml) 明确的提示 * 端口占用 * we

Java进阶之 JDK动态代理与Cglib动态代理

一.动态代理概述: 与静态代理对照(关于静态代理的介绍 可以阅读上一篇:JAVA设计模式之 代理模式[Proxy Pattern]), 动态代理类的字节码是在程序运行时由Java反射机制动态生成. 注意: 1.AspectJ是采用编译时生成AOP代理类,具有更好的性能,但是需要使用特定的编译器进行处理 2.Spring AOP采用运行时生成AOP代理类,无需使用特定编译器进行处理,但是性能相对于AspectJ较差 二.JDK动态代理 [对有实现接口的对象做代理] 1.JDK动态代理中 需要了解的

解决微信开发者工具当前系统代理不是安全代理

微信小程序开发工具登录时,有时会遇到提示当前系统代理不是安全代理 是否信任 ,然后我们点击确认,却弹出Error:unable to verify the first certificate.这时无论我们在左上角选择设置是否选用代理都无法解决.本人曾经也很困惑,后来知道这是微信小程序开发者工具,为了信息的安全性,检查了系统代理,至于为什么选择不使用代理同样不行,就不得而知了.不过没事,现在解决了,所以拿出来和大家分享下. 1,在电脑左下角开始处点开输入regedit或按快捷键win+R然后输入r

Java学习之:JDK动态代理与CGLIB动态代理

代理的概念:简单的理解就是通过为某一个对象创建一个代理对象,我们不直接引用原本的对象,而是由创建的代理对象来控制对原对象的引用. 动态代理:是指在程序运行时由Java反射机制动态生成,无需手动编写代码.动态代理不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java反射机制可以生成任意类型的动态代理类. 代理原理:代理对象内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象.同时,代理对象可以在执行真实对象操作时,附加其他的操作

【设计模式】动态代理 && 模拟JDK动态代理

真正理解动态代理需要明白回答以下问题: 什么叫动态代理?怎么产生? 动态代理的作用?可配置的事务,权限控制,日志等等....只有你想不到,没有动态代理做不到. 下面来回答以上3个问题: 先说下静态代理: 方法:创建代理类,代理类包含被代理对象的方法并在被代理方法的前后加添加的方法. 创建代理类可以用继承接口或者聚合(implements)被代理对象的接口来实现,然后传入被代理对象的实例.其中聚合并继承好,使用继承的时候如果代理类需要嵌套代理类或者创建不同的代理类,需要创建不同的代理类.造成类泛滥

设计模式(11)--代理模式之动态代理

保护代理 在调用方法前后,进行一些动作. 动态代理之所以叫动态代理是因为,是运行时才将它的类创建出来. 日志 . 连接. 事务. Java在java.lang.reflect包中有自己的代理支持,利用这个包你可以要运行时动态地创建一个代理类,实现一个或多个接口,并将方法的调用转发到你所指定的类.因为实际的代理类是在运行时创建类,我们称这个Java技术为:动态代理. Java为你创建Proxy类,因为Proxy不是你直接实现的,你让代理执行的代理应该放在InvocationHandler中. In

微信开发者工具 当前系统代理不是安全代理,是否信任

微信开发者工具扫码提示 "当前系统代理不是安全代理,是否信任" 微信开发者工具,为了信息安全性,首先检查了系统代理. 这是因为某些代理软件, 将代理设置填入到了系统注册表中,将注册表中的代理相关参数删除,然后注销一下,重新登录系统,就可以解决了 解决方法: 按Crtl+R,输入regedit进注册表, [HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings] "ProxyEn