正向代理和反向代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正向代理和反向代理相关的知识,希望对你有一定的参考价值。

【原创作品,技术交流.允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息。如有错误,请指正】

/**

author: lihaibo

date: 1/25/2016

*/

今天看到几篇比较好的关于写代理服务器的文章(已经在末尾附地址),本文就是这几篇好文经过改动并结合自己实际情况来阐述代理和代理的工作原理。
 

正向代理(Forward Proxy)的概念

正 向代理,也就是传说中的代理,他的工作原理就像一个跳板, 简单的说, 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器 这个代理服务器呢,他能访问那个我不能访问的网站 于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容 代理服务器去取回来,然后返回给我

从网站的角度,只在代理服务器来取内容的时候有一次记录 有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站

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

 
1.1正向代理简单图示:
 
技术分享
1.2正向代理简单原理图:
服务器B不知道是用户A在请求,服务器Z隐藏了A的请求
技术分享
1.3简单模拟现实图:
B不知道是用户A在借钱,代理服务器Z隐藏了A的身份。
技术分享
 
2.1正向代理实际应用之FAN墙图示
技术分享
 
2.2正向代理之FAN墙原理
技术分享
 
2.3模拟现实FAN墙图:(FQ=正向代理+VPN+cache)
技术分享

 

Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了Cache(缓存)技术。还如上图所示,如果在用户A访问服务器B某数据J之前,已经有人通过代理服务器Z访问过服务器B上得数据J,那么代理服务器Z会把数据J保存一段时间,如果有人正好取该数据J,那么代理服务器Z不再访问服务器B,而把缓存的数据J直接发给用户A。这一技术在Cache中术语就叫Cache命中。如果有更多的像用户A的用户来访问代理服务器Z,那么这些用户都可以直接从代理服务器Z中取得数据J,而不用千里迢迢的去服务器B下载数据了。

3.1正向代理之客户端权限管理图示

技术分享
 

3.2正向代理之客户端权限管理原理

技术分享
 
3.3正向代理之客户端权限管理现实应用
 
技术分享
 

【总结一下】 正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。

 
====================================================上面是正向代理/下面是反向代理===============================================
 

反向代理(reverse proxy)的概念

反向代理常用软件:Fikker、nginx、Squid

继续举例: 例用户访问 http://ooxx.me/readme 但ooxx.me上并不存在readme页面 他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户

但用户并不知情 这很正常,用户一般都很笨

这里所提到的 ooxx.me 这个域名对应的服务器就设置了反向代理功能

结 论就是 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。
 
 
1.1隐藏资源服务器(一台或者集群)
 
技术分享
 
 
1.2隐藏服务器原理
技术分享
1.3隐藏服务器之真实案例
 
技术分享
 
2.1带有缓存的反向代理集群
技术分享
 
2.2带有缓存的反向代理集群原理
技术分享
 
3.3带有缓存的反向代理集群之CDN加速
技术分享
 
3.4带有缓存的反向代理集群之CDN加速 原理
 
技术分享
具体分析:
技术分享
 
【总结一下】反向代理结论与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
 
 
 
 

参考文档:http://blog.csdn.net/cywosp/article/details/38026809

     http://www.cnblogs.com/zhwl/archive/2013/09/25/3338807.html

     http://z00w00.blog.51cto.com/515114/1031287

 

以上是关于正向代理和反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Nginx的正向代理和反向代理

nginx--❤️图解及代码实现正向代理反向代理及负载均衡(非常实用,建议收藏❤️)

正向代理与反向代理

什么是正向代理和反向代理??

正向代理和反向代理

正向代理与反向代理,正向代理与反向代理的应用