今天说一下老生常谈的问题,正向代理和反向代理的区别?几年前也看过这个问题,也是一个常见的面试题,不过最近去面试时候,竟然也被问到这个问题。所以本博客整理一下资料,尽量写得通俗易懂一些。
1、定义
- 正向代理:正向代理是一个位于客户端和目标服务端的代理服务器。客户端向代理服务器发送请求,并且指定目标服务端,然后代理服务器会去帮忙代理请求,向目标服务器请求获取到响应后,将响应内容返回给客户端。
- 反向代理:反向代理正好相反,对于客户端来说,代理服务器就好像目标服务器一样,客户端是直接访问代理服务器,代理服务器后台会进行转发到对应目标服务器,对客户端来说是看不到的,客户端不知道具体是哪个目标服务器,但是访问代理服务器是和请求目标服务器效果是一样的
2、区别是什么?
对于理论来说,相对比较难理解,所以本博客进行对比的方式来学习,画图说明一下
正向代理代理的是客户端,帮客户端发送请求给目标服务器,服务器响应后,由代理服务器将响应内容返回给客户端。使客户端对目标服务器不可见。比较常见的用户场景就是翻墙。
反向代理在生产中应用还是比较多的,代理服务器代理目标服务器,负责收发请求,目标服务器对客户端来说是不可见的,不过客户端请求目标服务器和请求代理是一样的效果。比较常见的场景就是nginx的负载均衡
ok,通过前面的图例,读者应该可以指定正向代理和反向代理的明显区别了,现在进行归纳总结一下
正向代理和反向代理区别:
- 代理对象不同:正向代理代理的是客户端,客户端访问代理服务器,并且需要指定目标服务器,然后代理服务器会发送请求给目标服务器,响应之后,响应内容由代理服务器返回给客户端;反向代理代理的是目标服务端,客户端请求代理服务器,不需要指定配置什么目标服务器,代理服务器会进行转发到对应目标服务器,对客户端来说,目标服务器是不可见的,不过访问代理服务器和访问目标服务器好像是一样的
- 用途不同:正向代理是为了在防火墙内的局域网提供访问internet的途径,比如翻墙;反向代理是将防火墙后面的服务器提供给internet用户访问,比如负载均衡
3、使用场景
- 正向代理
正向代理,最常见的场景就是翻墙,比如我们要访问Google,但是我们不能直接访问,我们需要翻墙,比如搭建一个vps服务器,然后我们就可以直接在浏览器访问Google,访问链接后,由代理服务器进行代理请求,请求到Google服务器后,拿到响应内容返回给客户端
翻墙是正向代理的一个最常见的应用,适用的场景就是客户端A能访问代理服务器B,代理服务器能访问C,客户端A不能访问服务器C,所以这种场景就可以用代理服务器进行转发
- 反向代理
反向代理的应用场景,最常见的就是负载均衡,比如我们访问一台代理的nginx服务器,后面代理很多Tomcat服务器,具体的服务和静态资源等都是部署到Tomcat服务器,我们访问nginx并不知道访问到哪个Tomcat,但是访问nginx和访问Tomcat服务器效果是一样的
反向代理的应用场景比较多,简单列举一下反向代理的应用场景:
今天说一下老生常谈的问题,正向代理和反向代理的区别?几年前也看过这个问题,也是一个常见的面试题,不过最近去面试时候,竟然也被问到这个问题。所以本博客整理一下资料,尽量写得通俗易懂一些。
1、定义
- 正向代理:正向代理是一个位于客户端和目标服务端的代理服务器。客户端向代理服务器发送请求,并且指定目标服务端,然后代理服务器会去帮忙代理请求,向目标服务器请求获取到响应后,将响应内容返回给客户端。
- 反向代理:反向代理正好相反,对于客户端来说,代理服务器就好像目标服务器一样,客户端是直接访问代理服务器,代理服务器后台会进行转发到对应目标服务器,对客户端来说是看不到的,客户端不知道具体是哪个目标服务器,但是访问代理服务器是和请求目标服务器效果是一样的
2、区别是什么?
对于理论来说,相对比较难理解,所以本博客进行对比的方式来学习,画图说明一下
正向代理代理的是客户端,帮客户端发送请求给目标服务器,服务器响应后,由代理服务器将响应内容返回给客户端。使客户端对目标服务器不可见。比较常见的用户场景就是翻墙。
反向代理在生产中应用还是比较多的,代理服务器代理目标服务器,负责收发请求,目标服务器对客户端来说是不可见的,不过客户端请求目标服务器和请求代理是一样的效果。比较常见的场景就是nginx的负载均衡
ok,通过前面的图例,读者应该可以指定正向代理和反向代理的明显区别了,现在进行归纳总结一下
正向代理和反向代理区别:
- 代理对象不同:正向代理代理的是客户端,客户端访问代理服务器,并且需要指定目标服务器,然后代理服务器会发送请求给目标服务器,响应之后,响应内容由代理服务器返回给客户端;反向代理代理的是目标服务端,客户端请求代理服务器,不需要指定配置什么目标服务器,代理服务器会进行转发到对应目标服务器,对客户端来说,目标服务器是不可见的,不过访问代理服务器和访问目标服务器好像是一样的
- 用途不同:正向代理是为了在防火墙内的局域网提供访问internet的途径,比如翻墙;反向代理是将防火墙后面的服务器提供给internet用户访问,比如负载均衡
3、使用场景
- 正向代理
正向代理,最常见的场景就是翻墙,比如我们要访问Google,但是我们不能直接访问,我们需要翻墙,比如搭建一个vps服务器,然后我们就可以直接在浏览器访问Google,访问链接后,由代理服务器进行代理请求,请求到Google服务器后,拿到响应内容返回给客户端
翻墙是正向代理的一个最常见的应用,适用的场景就是客户端A能访问代理服务器B,代理服务器能访问C,客户端A不能访问服务器C,所以这种场景就可以用代理服务器进行转发
- 反向代理
反向代理的应用场景,最常见的就是负载均衡,比如我们访问一台代理的nginx服务器,后面代理很多Tomcat服务器,具体的服务和静态资源等都是部署到Tomcat服务器,我们访问nginx并不知道访问到哪个Tomcat,但是访问nginx和访问Tomcat服务器效果是一样的
反向代理的应用场景比较多,列举一下反向代理的应用场景:
- 负载均衡
- 隐藏原始资源服务器
- 加密和SSL加速
- 缓存静态内容
- 减速上传
- 安全
- 压缩
- 外网发布
- …
参考资料