出于安全考虑,局域网内的机器访问访问墙外的网站借助于代理服务器进行,如果把局域网外Internet想象成一个巨大的资源库,局域网内的用户要访问这个库里的资源必须统一通过代理服务器进行。反过来,如果局域网向Internet提供资源,让Internet上的用户访问局域网内的资源也可以设置成一个代理服务器,只不过与我们常用的代理服务器方向正好相反,所以叫反向代理(Reverse Proxy)。

1、代理可分为三种: 标准的代理缓冲服务器、透明代理缓冲服务器、反向代理缓冲服务器 
(1)标准的代理缓冲服务器 
  这种方式需要在Client浏览器配置中指明Proxy的IP地址和端口号。浏览器每次都把请求送给Proxy处理。Proxy可以有缓存的功能:它根据请求确定是否连接到Remote Origin Server获取数据,如果在本地缓冲区有目标数据(cache hit),则直接将缓存数据传给用户即可,如果没有的话则先取回数据(cache miss),先在本地保存一份缓冲,然后将数据发给客户端浏览器。 
(2)透明代理缓冲服务器 
  透明代理缓冲服务器和标准代理服务器的功能完全相同,但是代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口号)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置,所以透明代理对于ISP(Internet服务器提供商)特别有用。 
(3)反向代理缓冲服务器(surrogate)
  反向代理是和前两种代理完全不同的一种代理服务,使用它可以降低原始web服务器的负载。反向代理服务器承担了对原始web服务器的静态页面的请求,防止原始服务器过载。它位于本地web服务器和Internet之间,处理所有对web服务器的请求,组织了web服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户;如果没有缓冲,则先向web服务器发出请求,取回数据并在本地缓存后再发送给用户。这种方式通过降低了向web服务器的请求数,从而降低了web服务器的负载。

2、反向代理有两种用法: 
(1)一种是为多个网站的Web服务器提供代理,这些网站的域名都指向surrogate,对这些网站的请求全都发给了surrogate,由surrogate转发HTTP请求给相应网站的origin server。 
(2)一种是为一个网站的Web服务器集群提供代理,surrogate作为负载均衡器决定具体哪个origin server接收请求。

surrogate总是位于Web服务器的前端,Internet上的用户对Web服务器的连接要先经过surrogate,然后由surrogate决定哪个Web服务器处理用户请求,并将请求路由给相应的Web服务器。对静态内容可以在反向代理上缓存,这样就不用再向Web服务器路由了。

3、除了缓存和负载均衡,surrogate还能提供如下功能: 
(1)安全:反向代理隔离了用户和Web服务器,用户很难针对特定的服务器发动攻击; 
(2)数据加密/SSL加速: 某些Web服务器可能不具有SSL加密功能,但是具有加密功能的反向代理服务器可以为Web服务器提供数据加密,而且装备了SSL加速硬件的反向代理服务器还能为Web应用提供了高速的加密通道; 
(3)压缩:代理服务器能压缩经过的数据以节省带宽

1、Proxy介于Client和Server中间,它同时扮演了Client和Server的双重角色:

对于Client而言,Proxy就像一个Server,Proxy处理Client的请求,并将Server的响应转发给Client;

对于Server而言,Proxy就像一个Client,Proxy转发Client的请求给Server,并接收Server返回的响应;

2、Proxy可以分为public proxy和private proxy:

public proxy可以同时为多个client提供服务,考虑到不同client可能会发出相同的request(例如100个用户同时访问新浪网),可以在proxy上caching这些访问率非常高的网页,从而大大提高效率;

private proxy仅为一个client提供服务,通常这样的私有代理是绑定在client上的,为该client提供一些扩展服务。

3、Proxy与gateway的区别:

proxy只能连接使用相同协议的应用程序;而gateway可以连接使用不同协议的应用程序,更像一个协议翻译者(protocol converter);

(但是现在这种区别已经模糊了,一些代理也具有网关的功能)

4、proxy可以作为local network的filewall,它是通往Internet的唯一出口。所有用户对公网的访问都要经过proxy,从而实现一些访问控制的过滤机制,并保护该局域网免受外网的入侵。下面图示了proxy的几类主要功能:

(1)proxy的访问控制功能(access control):

(2)proxy作为防火墙(firewall):

(3)proxy作为内容缓冲(cache):

(4)反向代理(surrogate),位于Internet和Web Server之间,可以分担Server的负载:

(5)content router

5、proxy在网络中的部署:

6、proxy怎么得到流量:

(1)在客户端浏览器中进行配置,让浏览器直接访问代理服务器而非源服务器。

(2)利用router, gateway的拦截和路由功能,将客户端流量引导至proxy,这种技术的优点是客户端不需要做任何配置。

(3)修改DNS映射关系,例如将surrogate配置为origin server的IP和hostname,这样来自客户端的流量将被引导至surrogate中。

(4)修改origin server,将其接收到的请求重定向到proxy中。

HTTP学习笔记之三——Proxy代理服务器相关推荐

  1. linux系统管理学习笔记之三----软件的安装

    linux系统管理学习笔记之三----软件的安装 2009-12-29 19:10:02 标签:linux 系统管理 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 ...

  2. 设计模式学习笔记——代理(Proxy)模式

    设计模式学习笔记--代理(Proxy)模式 @(设计模式)[设计模式, 代理模式, proxy] 设计模式学习笔记代理Proxy模式 基本介绍 代理案例 类图 实现代码 Printable接口 Pri ...

  3. 学习笔记之三人表决器FPGA

    学习笔记之三人表决器FPGA 新手入门,多多包涵,不足错误之处,望指出 三人表决器,顾名思义就是三人投票,只要达到两票以上,就取胜. 设a,b,c为三个投票的人,输出的为f,投为1,不投为0,两票以上 ...

  4. 2010年SQLite学习笔记之三

    2010年SQLite学习笔记之三 一.如何备份数据库 先打开数据库test.db E:/sqlite/tool/sqlite-3_6_22>sqlite3  D:/Test/debug/tes ...

  5. TensorFlow学习笔记之三(神经网络的优化)

    文章目录 1. 使用激活函数去线性化(为什么要用激活函数) 实验证明线性模型的局限性 常用激活函数 2. 神经网络复杂度:用网络层数和网络参数的个数表示 3. 损失函数(loss):预测值(y)与已知 ...

  6. ABAP 标准培训教程 BC400 学习笔记之三:ABAP 编程语言的特性和基本构成要素

    SAP ABAP 标准培训教程 BC400 中对 ABAP 编程语言特性的总结如下: Is typed - 强类型编程语言,任何 ABAP 变量在其声明时,其数据类型就已经的确定下来了. Enable ...

  7. 富爸爸系列 -- 《财务自由》学习笔记之三

    112,经验的价值 推荐方式,人们在进入I象限之前先在B象限工作的另一个原因.无论投资房地产.企业.股票还是债券,都需要一种潜在的"综合性"商业意识,这种意识对于成为一名成功的投资 ...

  8. 【Java学习笔记之三十一】详解Java8 lambda表达式

    Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...

  9. 推荐系统学习笔记之三 LFM (Latent Factor Model) 隐因子模型 + SVD (singular value decomposition) 奇异值分解

    Low Rank Matrix Factorization低阶矩阵分解 在上一篇笔记之二里面说到我们有五部电影,以及四位用户,每个用户对电影的评分如下,?表示未评分. Movies\User User ...

最新文章

  1. Linux ALSA声卡驱动之四:Control设备的创建
  2. 视频转为flv和图片
  3. java 累进计费率计算_税点点分享第198期:案例解答个人所得税的计算公式
  4. IDEA Unmapped Spring configuration files found.
  5. 代码下移快捷键_收藏细看!最全面的通达信快捷键一览
  6. IIS7的HTTP 500.19错误
  7. 机器学习 之 LBP特征
  8. java标准化试题_标准化考试系统Java
  9. php递归函数名字,php递归示例 php递归函数代码
  10. 基于单片机的智能数字电子秤设计
  11. 主编编辑器怎么把文章转成长图?
  12. 【路径规划】基于蚁群算法求解带时间窗车辆路径问题(VRPTW)matlab代码
  13. 有关linux表情图片,面向Ubuntu的LumaQQ个人修改版下载(支持新款表情)
  14. Qt实现提示音以及QSound的使用说明
  15. 二叉树非递归程序c语言,二叉树非递归遍历C语言实现
  16. 2019年java全栈工程师学习大全
  17. 《零基础学HTML5+CSS3(全彩版)》读书笔记
  18. 怎么用python画一个皮卡丘,用python画皮卡丘的代码
  19. python自动化通过邮件发送测试结果
  20. 《华为的冬天》-任正非(2000年)

热门文章

  1. IBM V7000错误代码及解决
  2. Golang 基础之基础语法梳理 (一)
  3. python逻辑运算符优先级
  4. 计算机英语统考试卷分析,考试英语试卷分析
  5. 推荐系统lambda架构学习笔记之推荐系统(一)
  6. 解决惠普打印机可以打印出PIN码但是输入码无效连接失败的问题
  7. Java组件库JIDE Software近日宣布发行它的最新版本1.8.4。
  8. python怎么测试opencv安装是否成功_学习笔记:自己编译安装OpenCV+测试opencv安装是否成功...
  9. uniapp 微信小程序长按识别二维码,跳转小程序、个人微信
  10. 补单平台-淘宝天猫补单平台-手工补单平台-靠谱的补单平台是什么样的