简单的说HTTP代理就是处于HTTP客户端和服务器端之间,中转消息的中间人。

一种代理是代客户端去请求服务器,叫做Forward Proxy正向代理;另一种是代理真正的服务器来接收用户请求,叫做Reverse Proxy反向代理。下边分别介绍。

  • 先说正向代理,也是最常见的。

为什么需要?客户端不能直接建立连接到目的服务器。比如大公司的内网(或者大T朝内网),你不能直接PING到外网服务器,根本没有路由器帮你传送IP包到外网(或者某部分外网)。这时候又需要允许内网访问网页,比如百度一下什么的。这时候HTTP代理就是不二选择了。HTTP服务器这时候既要接受内网的请求,又要能连接外网。所以这时候HTTP服务器必须位于所谓的DMZ非军事区或者内外两个网卡非别连接内外网。

正向代理要求客户端必须知道代理服务器的地址和端口,并且显式配置。

浏览器或者其它客户端在使用代理的情况下行为与不使用代理有所不同:

1. 所有网页不再连接目标主机,改为建立TCP连接到代理。

2.发送请求时,必须发送完整URL,比如GET http://www.luoxq.com/index.html,而不能再简单发送GET /index.html。因为代理服务器要知道客户端究竟要访问哪个网站。而不用代理的情况下,客户端已经直接连接到www.luoxq.com了,没必要发主机名。(实际上也有必要,但是历史原因一般通过Host头部发送了)。

3.对与HTTPS连接要特别处理。因为HTTPS就是要保证安全,如果代理能从中看到客户端和服务器的通信就不安全了。比如你不希望使用支付宝的时候代理服务器还看到你发送的信息吧:)。那怎么做到呢?代理协议有个特殊的方法,叫CONNECT。这时候客户端发送一个 CONNECT www.luoxq.com:443请求。代理服务器呢,只是简单的帮客户端连接服务器的443端口,并且以二进制的方式(不去解读,也无法解读内容)中转两方的TCP数据流。客户端和服务器会利用这个隧道连接传送数字证书和公钥。利用PKI公钥机制,代理服务器完全无法解读他们的通信。这样就安全了。说道这里,我们可以想象如果客户端并不是请求页面,代理服务器也无法获知客户端与服务器究竟是不是在做HTTP通信。也就是说通过这个隧道实际上可以建立到外网的任意TCP连接。呵呵。

我们可以想想一个代理服务器 的内部逻辑不会太复杂,对头部的一些解读,然后就是中转数据流。当然一个真正的完整的代理服务器有很多功能,比如缓存等。

  • 下面说说反向代理。也许只有系统管理员才熟悉这个。

反向代理对客户端不可见。也就是说你访问www.luoxq.com很可能你是在访问一个反向代理,但是你并不知道。其实反向代理也可以说是一个门面服务器。反向代理主要起到以下作用:

1. 集群和负载均衡。一个大网站可以由多台服务器提供服务。这些服务器可以位于不可见的内网。反向代理服务器将多个用户请求分发给多台服务器处理。这里当然有比较复杂的配置,比如分发算法,粘住会话,探测服务器状态等。

2.提供业务服务器业务逻辑之外的功能。比如数字证书,单点登录,日志,更好的静态文件性能等。

Apache HTTPD是最常用的代理服务器之一。它既可以配置为正向代理,还可以配置为反向代理,并且它有丰富的插件支持各种功能,或者只是用它作为应用服务器 – 使用PHP, CGI等。官方文档有很好的说明。也可以同时配置成正向和反向代理,并行不悖,并且可以同时给正向代理配置安全属性 – 如果你需要这个可以给我留言。

HTTP代理浅说的更多相关文章

  1. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  2. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  3. Visual Studio Code 代理设置

    Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...

  4. DynamicObject - 代理对象的种类

    开箱即用,DynamicProxy提供了多种代理对象,主要分成两个大类: 基于继承(Inheritance-based) 基于继承的代理是通过继承一个代理类来实现,代理拦截对类的虚(virtual)成 ...

  5. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论

    异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#signalR 后台创建了一个DntHub的集线器 前台在调用的时候出现了问题(经检查是代理对象 ...

  6. 实现代理设置proxy

    用户在哪些情况下是需要设置网络代理呢? 1. 内网上不了外网,需要连接能上外网的内网电脑做代理,就能上外网:多个电脑共享上外网,就要用代理: 2.有些网页被封,通过国外的代理就能看到这被封的网站:3. ...

  7. 23种设计模式--代理模式-Proxy

    一.代理模式的介绍       代理模式我们脑袋里出现第一个词语就是代购,其实就是这样通过一个中间层这个中间成是属于什么都干什么都买得,俗称"百晓生",在平时得开发中我们经常会听到 ...

  8. 使用Java原生代理实现AOP

    ### 本文由博主柒.原创,转载请注明出处 ### 完整源码下载地址 [https://github.com/MatrixSeven/JavaAOP](https://github.com/Matri ...

  9. Javascript 代理模式模拟一个文件同步功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. ural 1698. Square Country 5(记忆化搜索)

    1698. Square Country 5 Time limit: 2.0 secondMemory limit: 64 MB The first arithmetical operation ta ...

  2. ASP.NET中的Excel操作(OLEDB方式)

    一:OLEDB方式操作Excel的个人理解 就是把要操作的Excel当作一个数据库,所有对Excel的操作,就变成了对“数据库”的操作.那么这时就需要有一个数据库的连接字符串. 代码如下: connS ...

  3. SCALA STEP BY STEP

    http://www.artima.com/scalazine/articles/steps.html http://hongjiang.info/scala/

  4. MediaWiki搭建教程

    ♦  MediaWiki是什么以及有什么作用,这里我就不再阐述了,网上可以查到很多.这里只是简单记录一下搭建wiki的基本过程,给一些热爱捯饬的小伙伴一些参考. ♦  其实wiki的搭建本身很简单,最 ...

  5. centos 安装ftp服务器

    CentOS下搭建FTP服务器简单记录. 1.安装vsftpd yum install vsftpd 2.编辑iptablesvi /etc/sysconfig/iptables -A INPUT - ...

  6. php扩展memcache的安装

    1.安装memcache服务器 Memcached作为开放.免费.高效的.分布式的内存缓存系统受到很多网站的欢迎. 官网下载memcached源代码安装包,稳定版即可 官网:http://memcac ...

  7. Hadoop上的中文分词与词频统计实践 (有待学习 http://www.cnblogs.com/jiejue/archive/2012/12/16/2820788.html)

    解决问题的方案 Hadoop上的中文分词与词频统计实践 首先来推荐相关材料:http://xiaoxia.org/2011/12/18/map-reduce-program-of-rmm-word-c ...

  8. 转:JDBC驱动配置相关

    1.做JDBC请求 ,首先要了解这个JDBC对象是什么,现在以SQLServer为例来说明 首先下载对应的数据库驱动(百度“jdbc sqlserver驱动”,然后下载). 注意 :下载完成后,直接把 ...

  9. SOM聚类与Voroni图在验证码字符分割中的应用

    http://www.docin.com/p-1300981517.html SOM聚类与Voroni图在验证码字符分割中的应用  

  10. Shiro 的FilterChain

    /** * Shiro的FilterChain * @see ===================================================================== ...