一直对正向代理和反向代理的概念不清楚,感觉两者就是一样的,只是概念上有些不同。
很多资料说正向代理是屏蔽了客户端,而反向代理屏蔽了服务端。实在是不理解,反向代理对于服务端来说,不同样是屏蔽掉了客户端吗?
还是说反向代理和正向代理的区别,只是说在客户端、代理、服务端这三者之间的关系上的概念。
不要纠结于屏蔽了什么东西,这都是些抽象概念,你先看图,看能不能看懂。
本质上的区别就在于,正向代理是服务于客户端的,需要在客户机上设置代理服务器。对于服务端来说,数据包是从代理服务器来的,它没法知道最初到底是由哪个客户端发起的,也就是屏蔽了客户端;而客户端完全知道自己到底要访问的是什么服务器。
而反向代理是服务于服务端的,对于客户端来说,它只知道代理服务器的位置,完全不知道最终指向的服务器到底在哪里,也就是说屏蔽了服务端;而对于服务器来说,它其实是知道客户端的IP的
正向代理代理客户端(如VPN),反向代理代理服务器
正向代理就是比如有一组服务器 a,b,c,且a,b,c没有接入网络,即a,b,c不能访问公网,有堡垒机d,d可以访问公网.此时有需求a,b,c需要访问公网,但是此时为了服务器安全,a,b,c不能添加公网,必须经过堡垒机.此时,就需要正向代理.也就是代理a,b,c的请求到堡垒机,从堡垒机访问公网,此时别人探查到的只有堡垒机,而不知a,b,c服务器的存在,安全系数大大提高.
同样,如果用户想访问a,b,c,因为a,b,c没有接入公网,此时用户只能访问到堡垒机,通过堡垒机代理用户请求到a,b,c服务器.这就是反向代理.
注意,此时说的正向,反向,你会发现,凡主动使用代理的,即为正向代理,凡被动使用代理的,即反向代理. 在场景1下,是a,b,c服务器主动要访问公网,所以它是正向代理;场景2下,用户本身没用使用代理,他就是访问a,b,c,但是,a,b,c访问不到,此时服务器使用了代理,代理了用户请求,到服务器a,b,c,此时用户是被动使用了代理,因此为反向代理.其实用户是无感知的.