Atitit 代理解决方案proxy solu attilax总结 1. 为什么需要代理 1 1.1. Ajax跨域 1 1.2. Nginx反向代理 1 2. 分类 2 2.1. 普通vs隧道 2

Atitit 代理解决方案proxy solu attilax总结

 

1. 为什么需要代理 1

1.1. Ajax跨域 1

1.2. Nginx反向代理 1

2. 分类 2

2.1. 普通vs隧道 2

2.2. 正向反向 2

2.3. CGLIB 动态代理 AspectJ静态代理 2

2.4. http代理 socket代理 2

3. 普通代理 2

3.1.1. 普通代理 3

4. 隧道代理 4

5. 反向代理 5

6. 代理的实现 5

6.1. nginx 5

6.2. 正向代理也可以使用apache实现 5

6.3. 浏览器代理 6

7. 参考 6

8. 参考资料 6

 

1. 为什么需要代理

1.1. Ajax跨域

1.2. Nginx反向代理

 

  server_name  http://www.qq.com;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            proxy_pass http://www.qq.com;

        }

 

2. 分类

2.1. 普通vs隧道

2.2. 正向反向

 

2.3. CGLIB 动态代理 AspectJ静态代理

2.4. http代理 socket代理

3. 普通代理

Web 代理是一种存在于网络中间的实体,提供各式各样的功能。现代网络系统中,Web 代理无处不在。我之前有关 HTTP 的博文中,多次提到了代理对 HTTP 请求及响应的影响。今天这篇文章,我打算谈谈 HTTP 代理本身的一些原理,以及如何用 Node.js 快速实现代理。

HTTP 代理存在两种形式,分别简单介绍如下:

第一种是 RFC 7230 - HTTP/1.1: Message Syntax and Routing(即修订后的 RFC 2616,HTTP/1.1 协议的第一部分)描述的普通代理。这种代理扮演的是「中间人」角色,对于连接到它的客户端来说,它是服务端;对于要连接的服务端来说,它是客户端。它就负责在两端之间来回传送 HTTP 报文。

第二种是 Tunneling TCP based protocols through Web proxy servers(通过 Web 代理服务器用隧道方式传输基于 TCP 的协议)描述的隧道代理。它通过 HTTP 协议正文部分(Body)完成通讯,以 HTTP 的方式实现任意基于 TCP 的应用层协议代理。这种代理使用 HTTP 的 CONNECT 方法建立连接,但 CONNECT 最开始并不是 RFC 2616 - HTTP/1.1 的一部分,直到 2014 年发布的 HTTP/1.1 修订版中,才增加了对 CONNECT 及隧道代理的描述,详见 RFC 7231 - HTTP/1.1: Semantics and Content。实际上这种代理早就被广泛实现。

本文描述的第一种代理,对应《HTTP 权威指南》一书中第六章「代理」;第二种代理,对应第八章「集成点:网关、隧道及中继」中的 8.5 小节「隧道」。

.作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

3.0.1. 普通代理

第一种 Web 代理原理特别简单:

HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。

当然代理也可以修改 HTTP 请求头部,通过 X-Forwarded-IP 这样的自定义头部告诉服务端真正的客户端 IP。但服务器无法验证这个自定义头部真的是由代理添加,还是客户端修改了请求头,所以从 HTTP 头部字段获取 IP 时,需要格外小心。

 

4. 隧道代理

 

可以看到,浏览器与代理进行 TCP 握手之后,发起了 CONNECT 请求,报文起始行如下:

CONNECT imququ.com:443 HTTP/1.1

对于 CONNECT 请求来说,只是用来让代理创建 TCP 连接,所以只需要提供服务器域名及端口即可,并不需要具体的资源路径。代理收到这样的请求后,需要与服务端建立 TCP 连接,并响应给浏览器这样一个 HTTP 报文:

HTTP/1.1 200 Connection Established

浏览器收到了这个响应报文,就可以认为到服务端的 TCP 连接已经打通,后续直接往这个 TCP 连接写协议数据即可。通过 Wireshark 的 Follow TCP Steam 功能,可以清楚地看到浏览器和代理之间的数据传递:

可以看到,浏览器建立到服务端 TCP 连接产生的 HTTP 往返,完全是明文,这也是为什么 CONNECT 请求只需要提供域名和端口:如果发送了完整 URL、Cookie 等信息,会被中间人一览无余,降低了 HTTPS 的安全性。HTTP 代理承载的 HTTPS 流量,应用数据要等到 TLS 握手成功之后通过 Application Data 协议传输,中间节点无法得知用于流量加密的 master-secret,无法解密数据。而 CONNECT 暴露的域名和端口,对于普通的 HTTPS 请求来说,中间人一样可以拿到(IP 和端口很容易拿到,请求的域名可以通过 DNS Query 或者 TLS Client Hello 中的 Server Name Indication 拿到),所以这种方式并没有增加不安全性

 

5. 反向代理

还有一种情况是访问 A 网站时,实际上访问的是代理,代理收到请求报文后,再向真正提供服务的服务器发起请求,并将响应转发给浏览器。这种情况一般被称之为反向代理,它可以用来隐藏服务器 IP 及端口。一般使用反向代理后,需要通过修改 DNS 让域名解析到代理服务器 IP,这时浏览器无法察觉到真正服务器的存在,当然也就不需要修改配置了。反向代理是 Web 系统最为常见的一种部署方式,例如本博客就是使用 Nginx 的 proxy_pass 功能将浏览器请求转发到背后的 Node.js 服务。

通常是由apache实现

6. 代理的实现

6.1. nginx

6.2. 正向代理也可以使用apache实现

 

  #正向代理设置

    ProxyRequests On

    ProxyVia On

 

    <Proxy *>

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1

    </Proxy></VirtualHost>

现在看正向代理设置那一段

ProxyRequests On:开启Apache正向代理

ProxyVia On:控制位于代理服务器链中的代理请求的流向

  引用Apache2.2官方文档中对ProxyVia的解释如下:

 

如果设置为默认值Off ,将不会采取特殊的处理。如果一个请求或应答包含"Via:"头,将不进行任何修改而直接通过。

如果设置为On每个请求和应答都会对应当前主机得到一个"Via:"头。

如果设置为Full ,每个产生的"Via:"头中都会额外加入Apache服务器的版本,以"Via:"注释域出现。

如果设置为Block ,每个代理请求中的所有"Via:"头行都将被删除。且不会产生新的"Via:"头。

6.3. 浏览器代理

7. 参考

7.1. HTTP 代理原理及实现(一)   JerryQu 的小站.htm

7.2. Apache配置正向代理与反向代理 - Alexis_Liu - 博客园.htm

7.3.  

7.4. 参考资料

7.5. Apache配置正向代理与反向代理 - Alexis_Liu - 博客园.htm

7.6. [转载]socks2http原理分析 代理技巧交流 代理中国--ProxyCN_Com 提供每日全球最新最快代理服务器 - Powered by PHPWind.htm

7.7. atitit. 自动代理 proxy 的设计实现。

7.8. Atitit.实现反向代理(1)----url rewrite 配置java php.wps

7.9. Java开发代理服务器.htm

7.10. Java编写代理服务器(Burp拦截Demo)- Web安全 - 米安网.htm

7.11. Atitit.java http 代理  atiHttpProxy  大木马.docx

7.12. 多线程Http代理服务器 Java实现 - 独上高楼 - ITeye技术网站.htm

7.13. Atitit 通用服务端代理接口  转接口 attilax总结.docx

7.14. java实现http代理服务 - chenyu.hz - ITeye技术网站.htm

7.15. Atitit.HTTP 代理原理及实现 正向代理与反向代理attilax总结.docx

7.16. Atitit 动态调用webservice与客户端代理方式调用.docx

7.17. Atitit 代理CGLIB 动态代理 AspectJ静态代理区别.docx

 

 

 

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher  kok  虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王  纵火者

简称:: st Emir Attilax Akbar 圣 埃米尔 阿提拉克斯 阿克巴

全名::st Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 圣 埃米尔 阿提拉克斯 阿克巴 马哈茂德 阿提拉 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

 

 

头衔:

 

uke

 Emir Uke部落首席大酋长,ati协会创始人

uke总部o2o负责人,全球网格化项目创始人,

圣阿提拉克斯国王

科技领域

UTSC uke技术标准化委员会委员长 uke 首席cto   软件部门总监 技术部副总监  研发部门总监主管  产品部副经理 项目部副经理   uke科技研究院院长 uke软件培训大师

Ati组织科研研究院创始人

 

文艺领域

,  ,, uke机车协会主任 uke纹身协会

uke交友协会会长  uke捕猎协会会长

Ati文艺协会会长  ati文学协会

 

行政领域

Gchsp总裁  gchsp常委  GsP创始人

媒体传播领域

   uke出版社编辑总编  宣传布道总策划

Ati传媒总部

 

渔猎军事领域

uke保安部首席大队长

Uke 户外运动协会理事长  度假村首席大村长

Ati打猎协会

法学

法学研究会 制度研究会

管理领域

工商管理学 公共管理与社会服务

,uke制度检查委员会副会长

教育领域

 uec学院校长, uecip图像处理机器视觉专业系主任   uke文档检索专业系主任

Uke图像处理与机器视觉学院首席院长

uke终身教育学校副校长

靓号研究院

 

经济领域

uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

 Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长

直达巴士西北区负责人   直达巴士长沙与西安分部部长

润昌通讯软件事业部总裁 执行长 分部负责人  执行委员会主席

Ati经济研究所

历史领域

历史事业部  ati历史研究院

社会科学领域

社科学院  ati文化部

自然科学领域

Uke研究院院长兼首席研究员 科学家

Ati自然科学研究院

宗教神学领域

uke宗教与文化融合事务部部长  大师master

uke制度与重大会议委员会委员长    ati宗教事务所

医学领域

   Uke医院 与医学院方面的创始人

 

 

 

 

 

 

 

 

 

转载请注明来源:attilax的专栏  http://blog.csdn.net/attilax

http://www.cnblogs.com/attilax/

Microblog

http://weibo.com/u/5941179815   (common attilax)

https://weibo.com/p/1005055941179815  attilax201707,bek weibo

http://weibo.com/u/5487832265 (tech,for blog auto gene)

知乎空间

https://www.zhihu.com/people/ati-att/activities

Qq 1466519819  小号112237553

 微信attilax  小号attilax201708

微博 attilax2016   小号attilax201707

 

 

--Atiend  v19

 

posted @ 2018-02-05 23:40  attilaxAti  阅读(26)  评论(0编辑  收藏  举报