正向|反向|透明代理

正向|反向|透明 代理

正向代理

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

常见用途:

  • 访问原本无法反问的服务器: 例如梯子

    graph LR A(用户) --> B{代理} A -.墙.-> C B --> C[(服务器)]
  • 加速访问服务器: 例如用户->代理, 代理->服务器带宽更高

  • cache: 例如 A用户通过代理访问服务器, B用户通过代理访相同资源命中cache, 不用再访问服务器

  • 客户端访问授权: 例如作为防火墙来判断能否连外网

    graph LR A(用户A) --> C{代理} B(用户B) --> C C --> D[(网络)]
  • 隐藏访问者的行踪: 服务器并不知道是用户访问了自己, 而以为是代理服务器, 代理服务器也可以叫"肉鸡"

反向代理

客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样.

反向代理结论与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。

常见用途:

  • 保护和隐藏原始资源服务器:

    graph LR a(用户) --> b[(反向代理服务器)] subgraph identifier[" "] c[防火墙] --> d[(资源服务器)] end b--> c
  • 负载均衡: 当反向代理服务器不止一个的时候, 甚至可以做成集群,让不同的代理服务器去响应不同的用户,当代理服务器具备cache功能, 且用户和代理服务器在同一个网络,就能得到高质量的速度,这就是CDN的核心.

    graph RL g[(资源服务器)] --> d[(反向代理服务器D)] --> a(用户A) g[(资源服务器)] --> e[(反向代理服务器E)] --> b(用户B) g[(资源服务器)] --> f[(反向代理服务器F)] --> c(用户C)

透明代理

客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。

常见用途:

  • 行为管理工具: 例如某信服
graph LR subgraph identifier[" "] a(用户A) --> c[交换机] --> d[(行为管理工具)] b(用户B) --> c[交换机] end d --> e[(互联网)]
build with Hugo, theme Stack, visits 0