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 圣 埃米尔 阿提拉克斯 阿克巴
常用名:艾提拉(艾龙), 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/
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
微博 attilax2016 小号attilax201707
Atitit 代理解决方案proxy solu attilax总结 1. 为什么需要代理 1 1.1. Ajax跨域 1 1.2. Nginx反向代理 1 2. 分类 2 2.1. 普通vs隧道 2相关推荐
- 使用nginx反向代理发起跨域请求
任务5:http://www.jnshu.com/task/2/45/detail//#1 页面文件放在github:https://github.com/Resalee/css_task/tree/ ...
- 关于Ajax跨域的解决方案
关于Ajax跨域的解决方案和一些个人理解 Ajax跨域的原因 Ajax跨域的解决方案 Ajax跨域的原因 浏览器限制 跨域(协议.主机名.端口有一个不同就会产生跨域) xhr请求(XMLHttpReq ...
- Ajax:ajax跨域解决方案代理机制原理及实现
目录: (1)ajax跨域解决方案之代理机制实现原理 (2)ajax跨域解决方案之代理机制的代码实现 (1)ajax跨域解决方案之代理机制实现原理 让ajax请求访问servlet,可以让ajax请求 ...
- nginx反向代理监听非80端口造成的端口丢失解决方案
今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题.但若设置为监听其他端口,就一直跳转不正常:如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端口 ...
- uni-app——一种通过Nginx反向代理处理302重定向请求解决网络请求中无法获取Cookie的解决方案
问题描述 小程序中不会自动保存和发送Cookie 使用插件(https://uniapp.dcloud.io/api/request/request)方法不能解决302重定向情况下获取Cookie 小 ...
- 跨域问题,解决方案-Nginx反向代理
跨域问题,解决方案-Nginx反向代理 参考文章: (1)跨域问题,解决方案-Nginx反向代理 (2)https://www.cnblogs.com/hulianwangjiagoushi/p/11 ...
- 前端跨域,nginx反向代理的解决方案
前端跨域,nginx反向代理的解决方案 参考文章: (1)前端跨域,nginx反向代理的解决方案 (2)https://www.cnblogs.com/Yukiyi/p/7912223.html (3 ...
- nginx 反向代理时丢失端口的解决方案(转)
nginx 反向代理时丢失端口的解决方案(转) 参考文章: (1)nginx 反向代理时丢失端口的解决方案(转) (2)https://www.cnblogs.com/shenyixin/p/1136 ...
- nginx请求转发被拒绝_解决nginx反向代理proxy不能转发header报头
做了一个德国高防plesk卖虚拟主机,奈何地理位置太过于遥远,控制台使用上速度难以接受.用户站点可以使用cloudflare等等的加速手段,控制台能否也这么干呢?理论是完全可以的,那么时间上手看吧.安 ...
- 利用iframe实现ajax 跨域通信的解决方案
在漫长的前端开发旅途上,无可避免的会接触到ajax,而且一般情况下都是用在同一域下的ajax请求:但是如果请求是发生在不同的域下,请求就无法执行,并且会抛出异常提示不允许跨域请求,目前我没有找到明确的 ...
最新文章
- AWS论剑Azure:安全组之争
- 哈希表的实现(取余法)
- 设计模式解析笔记之Adapter模式
- tomcat做成服务
- jzoj4229-学习神技【逆元,费马小定理】
- php 时间加法函数_php 时间加减
- selenium firefox驱动_Python3+selenium配置常见报错解决方案
- atomic_fetch_add
- Timus 1005. Stone pile
- python下载手机app视频教程_Python实例教学
- 动作识别0-02:mmaction2(SlowFast)-官方数据训练测试-ucf101
- 设计模式——工厂模式(包含:简单工厂模式、工厂方法模式、抽象工厂模式)
- Deeping Learning学习与感悟——《深度学习工程师》_1
- 微信公众平台Js API实现微信分享
- iOS 多语言本地化 完美解决方案【自动+手动】
- matlab 阿伦方差,GitHub - XinLiGH/GyroAllan: 陀螺仪随机误差的 Allan 方差分析
- B站banner图片随鼠标移动虚化效果摸索
- npm -i 与npm install -s与-d的区别
- grub引导项修复详解_grub2修复引导 · LINCHUAN的小站
- 解决Tabby终端使用zsh主题字体无法识别问题
热门文章
- sis 最新_传统SIS系统面临考验——“可持续的安全仪表系统”来袭
- Python 深拷贝和浅拷贝详解
- OPA:open policy agent简介
- html中hover的作用,hover在css中的用法
- Excel的LOOKUP函数用法和实例以及与VLOOKUP的异同
- 电脑通话有回音解决方案 使用电脑通话时有回音(可以听到对方电脑中自己说话的声音)电脑通话回音解决方案【以Thinkpad Win10系统为例】
- 简单的快速提取Fbank特征的方法
- 如何快速调整参考文献格式
- 【12306抢票神器】抢票啦—请收下这份2022元旦春节抢票攻略
- python输入个人所得税计算_python实例个税计算