目录

  • 概述
  • 原理
  • 代理的作用
  • 代理可做的事情
  • 分类
  • 正向代理
  • 反向代理
  • 对比
  • HTTP正向代理 和 SNAT
  • HTTP反向代理 和 DNAT
  • 参考


概述

原理

代理的核心功能可以用一句话概括:接受客户端的请求,转发到后端服务器,获得应答之后返回给客户端。

HTTP代理服务器会自动提取请求数据包的HTTP Request数据,并且把HTTP Response的数据转发给发送请求的客户端;HTTP代理服务器使用的端口通常是8080,如下图所示:

HTTP/HTTPS Proxy_反向代理

  • 对于Web客户端来说,代理扮演的服务器角色,接收请求(Request),返回响应(Response)。
  • 对于Web服务器来说,代理扮演的客户端角色,发送请求(Request),接收响应(Response)。

代理的作用

代理服务器根据不同的配置和使用,可能会有不同的功能,这些功能主要包括:

  • 内容过滤
    代理可以根据一定的规则限制某些请求的连接。比如有些公司会设置内部网络无法访问某些购物、游戏网站,或者学校的网络不让学生访问色情暴力的网站等。
  • 缓存Cache
    代理服务器可以作为缓存使用,对于某些资源只需要第一次访问的时候去下载,以后代理直接把缓存的结果返回给客户端,节约网络带宽的开销,加速请求的访问,在更快的时间内返回结果。
  • 负载均衡
    通过反向代理将多个用户的请求均衡的分发给多个真实的后端服务器。
  • 安全
    公司可以在内网和外网之间通过代理进行转发,这样不仅对外隐藏了实现的细节,而且可以在代理层对爬虫、病毒性请求、攻击进行过滤,保护内部服务。

代理可做的事情

上诉的功能的实现都依赖于代理的特性,它可以在客户端和服务器端做一些事情,根据代理做的事情不同,它的角色和功能也就不同。那么,代理具体可以做哪些事情呢?比如:

  • 修改 HTTP 请求:url、header、body
  • 过滤请求:根据一定的规则丢弃、过滤请求
  • 决定转发到哪个后端(可以是静态定义的,也可以是动态决定)
  • 保存服务器的应答,后续的请求可以直接使用保存的应答
  • 修改应答:对应答做一些格式的转换,修改数据,甚至返回完全不一样的应答数据
  • 重试机制,如果后端服务器暂时无法响应,隔一段时间重试

分类

正向代理

反向代理

对比

HTTP正向代理 和 SNAT

HTTP反向代理 和 DNAT

参考