++++++++++

This commit is contained in:
Jianfeng 2016-10-27 16:56:16 +08:00
parent 4907ea5697
commit de8c6d8ca5
2 changed files with 105 additions and 1 deletions

View File

@ -26,4 +26,6 @@
### *[第四章 连接管理](https://github.com/woai30231/http/tree/master/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E8%BF%9E%E6%8E%A5%E7%AE%A1%E7%90%86)*
### *[第五章 web服务器](https://github.com/woai30231/http/tree/master/%E7%AC%AC%E4%BA%94%E7%AB%A0%20web%E6%9C%8D%E5%8A%A1%E5%99%A8)*
### *[第五章 web服务器](https://github.com/woai30231/http/tree/master/%E7%AC%AC%E4%BA%94%E7%AB%A0%20web%E6%9C%8D%E5%8A%A1%E5%99%A8)*
### *[第六章 代理]()*

102
第六章 代理/readme.md Normal file
View File

@ -0,0 +1,102 @@
### 内容提要
* 本章主要介绍了http代理方面的概念包括代理的配置、分类、作用等
#### web的中间实体
* web上的代理服务器是代表客户端对事务请求处理的中间人分为私有代理只代理一个客户端和公共代理代理多个客户端
* 代理和网关的对比:代理的两端使用相同的协议,而网关的两端使用不同的协议,网关负责协议转换!
#### 为什么使用代理
* 主要使用代理作以下功能使用:
1、儿童过滤器
2、文档访问控制
3、安全防火墙
4、web缓存缓存资源的副本
5、反向代理原始服务的替代物能访问其他服务器作服务器加速器使用
6、内容路由器
7、转码器比如改变图片格式以便更轻巧利于传输
8、匿名者
#### 代理去往何处
* 按部署代理的位置代理可以分为一下几种:
1、出口代理
2、访问入口代理
3、反向代理
4、网络交换代理
* 代理层次结构描述的代理的部署层级结构,比如一级代理,二级代理等,这是一种静态层级结构,有父代理和子代理的概念,离原始服务器进的的代理是离服务器远的代理的父代理!但是代理层级不应该静态的,而应该可以是动态的,以保证代理可以根据实际网络负载情况而下发报文到不同的代理!从而产生的动态层级代理概念有**负载均衡**、**地理位置附近的路由**等!
* http请求报文是怎么进入代理的描述的怎么把http请求报文流量导入代理主要有一下几种方式
1、*修改客户端*:比如现在的客户端都支持收手动和自动配置代理!
2、*修改网络*:网络通过一些技术在客户端不知情的情况揽入流量进入代理!
3、*修改dns命名空间*把代理的ip和端口号设置成跟原始服务器一样比如修改系统的dns映射文件让代理伪装成原始服务器从而把web请求导入代理
4、*修改服务器*让服务器返回一个重定向有关的代码把http请求报文导入到代理
#### 客户端代理设置
* 略
#### 与代理有关的一些棘手问题
1、发送给服务其的url可以是相对路径而发送给代理的是包含方法、主机名等完整路径
2、与虚拟主机目录同样存在的问题可以通过在请求报文的host首部发送确定的主机信息
3、拦截代理会受到部分url
4、代理既可以处理代理请求也可以处理服务器请求
5、转发过程中对URI的修改
6、URI的客户端自动扩展和主机名解析
7、没有代理URI的解析
8、有显示代理的URI的解析
9、有拦截代理的URI的解析
#### 追踪报文
* 现在代理请求逐步流行的情况下需要一种机制来追踪我们的报文经过了那些节点。此时报文中via字段就是一个描述报文在代理中逐级传输的过程中所经过代理的方式如下
``` bash
GET /index.html HTTP/1.0
Accept: text/html
Host: www.joes-hardware.com
Via: 1.1 proxy-62.irenes-isp.net,1.0 cache.joes-hardware.com
```
via字符告诉我们报文流经了两个代理。这个字符串说明第一个代理名为proxy-62.irenes-isp.net,它实现了HTTP/1.1协议第二个代理被称为cache.joes-hardware.com,实现了HTTP/1.0。
#### 代理认证
#### 代理的互操作性