正向代理
正向代理,英文名为Forward Proxy。一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。 正向代理是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的架构图如下:

使用正向代理的原因或优势有:
(1)通过代理服务器可以访问本来无法访问的资源
(2)访问加速
(3)缓存cache
(4)隐藏访问者的行踪
反向代理
反向代理,中文名为Reverse Proxy。反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理发送普通请求,但是反向代理上并没有需要的资源,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
反向代理的架构图如下:

使用反向代理的原因或优势有:
(1)保护和隐藏原始资源服务器
(2)负载均衡
透明代理
透明代理是相当于正向代理而言,透明代理的意思是客户端根本不需要知道有代理服务器的存在。如下为一个生产环境中使用透明代理的例子:

用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户A或B,如上图,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据。
以Nginx的正向代理和反向代理的配置
(1)nginx正向代理的配置
1 | server { |
这里有resolver配置,即DNS服务器的配置。通过proxy_pass http://$http_host$request_uri;可以知道,代理服务器直接将代替客户将原始请求转发给真正的服务端。简单来看,代理服务器发出的http请求头和客户端发出的http请求头基本是一样的。
(2)nginx反向代理的配置
1 | http { |
备注:简单来看,反向代理服务发出的http请求的请求头是变化的,例如请求url。