基本概念

代理顾名思义就是自己不去干一件事,让别人帮你去干。同样的,我们在网络上访问一些服务时也需要通过代理去完成,比如有天你想要看某某hub,但是你在China时看不到的,所以此时你便需要一个国外的代理服务器代理你去访问,然后将结果返回给你,然后你就可以嘿嘿嘿了。
前向代理与反向代理

在这里便是代理的一种应用,其实代理按照代理的方式一般可分为前向代理与反向代理

区别

  • 前向代理

    我们所见到的大部分情况都是前向代理,A客户端表面上与B服务器进行通信,但是事实上中间可能还经过了B服务器的转发,此时B服务器就起的是代理的作用,代理服务器是面向客户端的。刚开始我们所举的例子就属于前向代理范畴,通常用于访问某些服务受限时,起到了代理转发的作用。
  • 反向代理

    反向代理我们可能见的并不多,但是却起到至关重要的作用,例如著名的Nginx服务器通常就起的是反向代理的作用。当你准备网上购物时,在浏览器地址栏输入taobao.com,域名地址经过DNS服务器解析后便可访问到对应的网站,这只是一个宏观上的过程,事实上在此过程中浏览器拿到服务器ip地址后便向服务器发送http请求,此时接受请求的就是nginx服务器(也可能是其他服务器,例如Apache等),而nginx接收到请求后自己并不能处理请求,需要将请求转发到对应的web应用层进行处理,在进行完逻辑处理后,web应用层把请求返回给nginx,说:‘nginx,你可以把结果返回到客户端了’,nginx便乖乖的将结果返回到客户端,这便是反向代理在其中所起到的作用,隐匿了真正的业务逻辑层,提高了应用层安全性。
    主要功能:
    • 对客户端隐藏服务器(集群)的IP地址
    • 安全:作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等
    • 为后端服务器(集群)统一提供加密和SSL加速(如SSL终端代理)
    • 负载均衡,若服务器集群中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援
    • 对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务
      对一些内容进行压缩,以节约带宽或为网络带宽不佳的网络提供服务
    • 减速上传
    • 为在私有网络下(如局域网)的服务器集群提供NAT穿透及外网发布服务
    • 提供HTTP访问认证[2]
    • 突破互联网封锁(不常用,因为反向代理与客户端之间的连线不一定是加密连线,非加密连线仍有遭内容审查进而遭封禁的风险;此外面对针对域名的关键字过滤、DNS缓存污染/投毒攻击乃至深度数据包检测也无能为力)
    常见反向代理软件
    • Nginx、Tengine
    • Apache HTTP Server
    • Varnish cache
    • Squid Cache
    • Traffic Server
    • HAProxy
    • YXORP
    • Polipo
    • Privoxy
    • IIS

参考资料

[维基百科-反向代理](https://zh.m.wikipedia.org/zh-hans/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86)

相关文章:

  • 2021-08-26
猜你喜欢
  • 2022-02-08
  • 2021-07-07
相关资源
相似解决方案