正向代理(Forward Proxy)
代理技术默认说的是正向代理技术,代理服务器替代用户去访问目标服务器。
用途:
- 访问本无法访问的服务器;
- 加速访问服务器,早期是这样;
- 匿名访问
- cache:代理服务器可以缓存数据,反向代理也使用了cache;
- 客户端访问授权,现在常用。
防火墙作为网关,用来过滤外网对其的访问。假设用户A和用户B都设置了代理服务器,用户A允许访问互联网,而用户B不允许访问互联网(这个在代理服务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器B,而用户B因为没有被代理服务器Z授权,所以访问服务器B时,数据包会被直接丢弃。
总结一下。
正向代理是一个位于客户端和原始服务器origin server
之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
反向代理(reverse proxy)
对于客户端而言,反向代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间namespace
中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
用途:
- 保护和隐藏原始资源服务器
防火墙和反向代理的共同作用保护了原始资源服务器,用户并不知情,并且以为自己访问的是原始服务器。
- 负载均衡
当反向代理服务器不止一个的时候,可以把它们做成集群,当更多的用户访问资源服务器的时候,让不同的代理服务器去应答不同的用户.
开源软件中最流行的就是squid,既可以做正向代理,也有很多人用来做反向代理的前端服务器。
反向代理中最主要的实践就是WEB服务,近些年来最火的就是Nginx了。网上有人说NGINX不能做正向代理,其实是不对的。NGINX也可以做正向代理,不过用的人比较少了。
透明代理transparent proxy
透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的报文request fields
,并会传送真实IP。
加密的透明代理则是属于匿名代理Anonymous Proxy
,意思是不用设置使用代理了。
用户并不知道行为管理设备充当透明代理行为,当用户向服务器提交请求时,透明代理设备根据自身策略拦截并修改用户的报文,并作为实际的请求方,向服务器发送请求;
当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户
如果透明代理设置不允许访问服务器,那么用户就不会得到服务器的数据。\
透明代理:
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your IP
透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以从HTTP_X_FORWARDED_FOR来查到你是谁。
匿名代理:
REMOTE_ADDR = proxy IP
HTTP_VIA = proxy IP
HTTP_X_FORWARDED_FOR = proxy IP
匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁。
还有其它的代理服务器.
混淆代理Distorting Proxies
:
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Random IP address
别人还是能知道你在用代理,但是会得到一个假的地址,伪装的更逼真?
高匿代理Elite proxy
或High Anonymity Proxy
REMOTE_ADDR = Proxy IP
HTTP_VIA = not determined
HTTP_X_FORWARDED_FOR = not determined
高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。
参考链接: