Proxy servers and tunneling
在通过互联网的不同网络进行导航时,代理服务器和HTTP隧道有助于访问万维网上的内容。代理可以位于用户的本地计算机上,也可以位于用户计算机与Internet上目标服务器之间的任何位置。本页概述了一些关于代理的基础知识,并介绍了一些配置选项。
有两种类型的代理:正向代理(或隧道或网关)和反向代理(用于控制和保护对服务器的访问以进行负载平衡,身份验证,解密或缓存)。
转发代理
转发代理或网关,或者只是“代理”为客户或一组客户提供代理服务。互联网上可能有成千上万的开放式转发代理。它们存储和转发互联网服务(如DNS或网页)以减少和控制该组使用的带宽。
转发代理也可以是匿名代理,并允许用户在浏览Web或使用其他Internet服务时隐藏其IP地址。TOR(洋葱路由器)通过多个代理匿名发送互联网流量。
反向代理
顾名思义,反向代理的作用与转发代理的作用相反:转发代理代表客户端(或请求主机),反向代理服务器代表服务器。转发代理可以隐藏客户端的身份,而反向代理可以隐藏服务器的身份。反向代理有几个用例,其中一些是:
- 负载均衡:将负载分配给多个Web服务器,
- 缓存静态内容:通过缓存图片等静态内容来卸载Web服务器,
- 压缩:压缩并优化内容以加快加载时间。
通过代理转发客户端信息
代理可以使请求看起来好像是源自代理的IP地址。如果使用代理提供客户端匿名,这可能很有用,但在其他情况下,原始请求中的信息会丢失。原始客户端的IP地址通常用于调试,统计或生成依赖于位置的内容。披露此信息的常用方法是使用以下HTTP标头:
标准化标题:
Forwarded
包含代理服务器的面向客户端的信息,这些信息在请求路径中包含代理时发生了改变或丢失。
或事实上的标准版本:
X-Forwarded-For
标识通过HTTP代理或负载平衡器连接到Web服务器的客户端的始发IP地址。X-Forwarded-Host
标识客户端用于连接到代理或负载平衡器的原始主机请求。X-Forwarded-Proto
标识客户端用于连接到代理或负载平衡器的协议(HTTP或HTTPS)。
要提供有关代理本身的信息(而不是关于连接到它的客户端),Via
可以使用标题。
Via
代理添加了正向和反向代理,并且可以出现在请求头和响应头中。
HTTP隧道
隧道通过封装数据通过公共网络传输专用网络数据和协议信息。HTTP隧道正在使用较高级别的协议(HTTP)来传输较低级别的协议(TCP)。
HTTP协议指定一个调用的请求方法CONNECT
。它启动与请求资源的双向通信,并可用于打开隧道。这就是HTTP代理服务器后面的客户端如何使用SSL访问网站(即HTTPS,端口443)。但请注意,并非所有代理服务器都支持该CONNECT
方法,或仅将其限制为端口443。