HTTP代理(转发代理&反向代理)与重定向

转发代理服务器

Forward Proxy:客户端无法直接请求服务器,只能将请求发往转发代理服务器(简称代理服务器),代理服务器将请求转发给服务器,接收到服务器响应后再将响应转发回客户端。适用于客户端从内部网络访问外部网络时,可能由于防火墙的存在无法直接访问外网,这时需要借助转发代理服务器访问外部网络(防火墙可能配置了只允许转发代理服务器与外部通信及一些其他规则)。有时为了加速代理服务器响应,可能会采用缓存技术。整个过程如:

这里写图片描述

反向代理服务器

Reverse Proxy:反向代理服务器用来代理服务器接收客户端请求,对于客户端来说,其感知不到反向代理的存在。考虑到服务器集群的安全,可以将反向代理服务器架设在防火墙外,接收到客户端请求后,反向代理服务器透过防火墙将请求转发到不同的服务器,再将服务器的响应回应给客户端(防火墙可以设置只允许反向代理服务器与真实服务器集群交互)。反向代理服务器也可能采用缓存技术,整个过程如下图(结构与转发代理服务器差不多):

这里写图片描述

在代理转发场景,用户端发送一次请求就可以获得响应,无需关注转发代理服务器或者反向代理服务器做了什么。而在重定向场景,客户端至少要发送两次请求才能得到想要的结果。

重定向

客户端向服务器请求资源A,服务器发现A在其他地方,于是返回301 Move Permanently给客户端,告诉客户端该资源被永久移动到位置B(通过响应头部的Location字段):

这里写图片描述

然后客户端重新请求资源B得到想要的结果:

这里写图片描述

重定向时,如果该资源是被临时移动,服务端可能会返回302 Temporarily Moved,但是302响应可能会被搜索引擎认为是在作弊,所以日常开发最好使用301Move Permanently 。

最后,请求一个资源有可能发生多次重定向行为(请求A,被重定向到B,又被重定向到C,…,最后得到真正的资源)。

如下几篇文章是我在学习HTTP协议时总结的博文,欢迎参考:
1. HTTP缓存
2. HTTP认证(基本认证与摘要认证)
3. HTTP、HTTPS基本原理

转载自 HTTP代理(转发代理&反向代理)与重定向

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页