Web代理(proxy)位于客户端和服务器端之间。HTTP的代理服务器既是Web服务器端又是Web客户端。

1. 代理和网关的对比

代理连接的是两个或者多个使用相同协议的应用程序。

网关连接的是两个或者多个使用不同协议的端点。网关扮演的是“协议转换器”的角色。

实际上,代理和网关的区别很模糊。由于浏览器和服务器端使用的http版本的不同,代理也经常做一些协议转换的工作。

2. 为什么使用代理

改善安全性,提高性能,节省费用。代理服务器可以看到并接触到所有流过的HTTP的流量,所以代理可以监视流量并对其进行修改,以实现很多增值的WEB业务。一些应用场景:

儿童过滤器:过滤不良页面;(出口代理)

文档访问控制:根据用户授予不同的权限;

安全防火墙:控制安全

Web缓存(访问入口代理)

反向代理:他们可以发起与其他服务器的通信,以便按需定位所请求的内容。

内容路由器

转码器 :在将内容发给客户端之前,可以修改内容的主体格式。

匿名者:主动从HTTP报文中删除身份信息 (例如:客户端的IP地址),从而提高私密性和匿名性。

3. 客户端的代理设置

3.1 手工配置

3.2 PAC文件,proxy auto-configuration,代理自动配置 。PAC文件是一些小型的JS程序,可以在运行过程中计算代理的配置。因此,是一种个动态的代理配置解决方案。

3.3 客户端代理配置(WPAD, web proxy auto discovering protocol)。使用逐级上升策略自动为浏览器找到合适的PAC文件。实现WPAD的客户需要

用WPAD找到PAC的URI;

从指定的URI 获取PAC文件;

执行PAC文件来判定代理服务器;

为请求使用代理服务器。

WPAD会使用一系列资源发现技术判定适当的PAC文件。 并不是所有的组织都能够使用所有的发现技术,所以WPAD使用了很多发现技术。WPAD会一个接一个的对每种技术进行尝试,知道成功为止。

当前的WPAD协议规范按顺序定义了下列技术:

动态主机配置协议(Dynamic Host Configuration Protocol, DHCP);

服务定位协议(Service Location Protocol,SLP);

DNS知名主机名;

DNS SRV记录;

4. 代理中一些棘手的问题

显示的代理要求在请求报文中使用完整的URI来解决这个问题。

虚拟主机Web服务器要求使用Host首部来承载主机和端口号信息。

【HTTP】初识代理的更多相关文章

  1. 初识代理——Proxy

    无处不在的模式——Proxy 最近在看<设计模式之禅>,看到代理模式这一章的时候,发现自己在写spring项目的时候其实很多时候都用到了代理,无论是依赖注入.AOP还是其他,可以说是无处不 ...

  2. 初识AOP与动态代理

    AOP AOP是指在jvm运行时, 动态将代码切入到指定位置. OOP是一个维度上写代码, AOP是把他切开来, 变成立体的. 这样的好处是: 业务逻辑跟辅助逻辑分离, 例如日志打印, 性能监控, 安 ...

  3. 初识nginx反向代理和缓存机制

    实现的需求图:   环境: nginx缓存和反向代理服务器:192.168.0.224 实际存储数据机器:192.168.0.37 一.实现反向代理 1.安装nginx,两台服务器都需要安装 1)安装 ...

  4. 初识Swift中的值和引用,循坏引用、代理的注意点

    1.0 在Swift中分有值类型和引用类型 Int .String . 结构体和枚举都属于值类型, 将值类型传递给方法是,将在内存中创建其副本,并传递这个副本:这样我们就可以随心所欲修改它,而不用担心 ...

  5. 死磕Spring之AOP篇 - 初识JDK、CGLIB两种动态代理

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

  6. 初识Spring框架

    一.Ioc 1)概念:Ioc(Inversion Of Control)控制反转,也被称为依赖注入DI(Dependency Injection),是面向对象编程的一种思想. 2)作用:用来减低程序代 ...

  7. 初识 MySQL 5.6 新功能、参数

    摘要: 继上一篇的文章 初识 MySQL 5.5 新功能.参数 之后,现在MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不 ...

  8. IOS之UI -- UITableView -- 1 -- 相关初识

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  9. [转]反向代理过程与Nginx特点详解

    原文链接:<Nginx搭建反向代理服务器过程详解> 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内 ...

随机推荐

  1. Android 软键盘的监听(监听高度,是否显示)

    Android官方本身没有提供一共好的方法来对软键盘进行监听,但我们实际应用时.非常多地方都须要针对软键盘来对UI进行一些优化. 下面是整理出来的一个不错的方法.大家能够使用. public clas ...

  2. react-native + teaset 实现 Tabbar

    1.代码 src/pages/MainPage/index.js /** * 主页面 */ import React, {Component} from 'react'; import { BackH ...

  3. 单例模式 - GCD 、兼容ARC和MRC

    单例模式 - GCD .兼容ARC和MRC 单例模式的作用: 1,能够保证在程序执行过程.一个类仅仅有一个实例,并且该实例易于供外界訪问 2,从而方便地控制了实例个数,并节约系统资源 单例模式的使用场 ...

  4. 【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示4

    前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开发的时候,有中文的话肯定要使用中文分词了,这一篇博文主要介绍一下如何使用 ...

  5. H265 Rtp封包

    H265 Rtp封包可以参考Ffmpeg,具体实现在文件rtpenc_h264_hevc.c(4.0.1版本),核心的方法是nal_send 这个方法有些绕,下面帖子具体的代码及注释. static ...

  6. DevOpsDays 活动咨询网站

    站点:http://www.41huiyi.com/event-1452630998.html

  7. 转Postman请求Https接口

    转自:https://blog.csdn.net/ONS_cukuyo/article/details/79172242 单向认证 像平常一样访问就行,无需做任何处理,只需要把http://变成htt ...

  8. 面向对象-Object类

    一.Object类中的equals()方法 equals(Object obj) :指示其它某个对象是否与此对象"相等". 返回值类型是boolean Oblect类中的equal ...

  9. Sphinx初探之安装

    在Centos or redhat 安装Sphinx .首先安装依赖包 $ yum install postgresql-libs unixODBC .安装软件 $ rpm -Uhv sphinx-- ...

  10. 使用mescroll实现上拉加载与下拉刷新

    现在上拉加载与下拉刷新几乎已经是移动端必备功能之一了,自己实现一个太麻烦,但是好用的插件又非常少.之前看到网上很多人都在用iScroll,于是也尝试用它做了几个DEMO,但或多或少都有一些问题,比如这 ...