JIRA:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12327093&styleName=Text&projectId=12310963
主要是 CVE-2015-5168 和 CVE-2015-5206 修复,因为这两个会影响 HTTP/2 的实验性特性.
Traffic Server做HTTP反向代理
3. Traffic Server建立一个和源服务器的HTTP连接。
- 在remap.config文件中创建映射规则(见Creating Mapping Rules for HTTP Requests)。
- 开启反向代理选项(见Enabling HTTP Reverse Proxy)。
为HTTP请求创建映射规则
处理源服务器重定向响应
为HTTP请求使用映射规则
- 一个映射规则是将一个客户端的请求URL转换为定位内容的URL。当Traffic Server使用反向代理模式并接收客户端的HTTP请求,它必须从相关的URL和头部来构造一个完整的URL。Traffic Server接下来使用这个完整的URL在remap.config文件中查找其匹配的目标URL。要使请求URL匹配目标URL,下面的条件必须满足:
- 两个URL必须是一个组合
- 两个URL的host必须相同。如果请求URL中包含一个不合格的主机名,它不可能匹配到一个具有合格的主机名的目标URL。
- 两个URL的端口号必须相同。如果指定的URL中没有端口号,URL的组合将使用默认的端口号。
- 目标URL的路径部分必须可以和请求URL的前缀匹配。
- 一个反向映射规则是将源服务器重定向响应中的URL转换为指向Traffic Server,这样客户端会再次重定向到Traffic Server而不是直接访问一个源服务器。比如,在源服务器www.molasses.com 上有一个/pub目录,一个客户端向该源服务器发送一个/pub的请求,源服务器可能回复一个http://www.test.com/pub/ 的重定向来告诉客户端它请求的是一个目录,而不是文档(重定向通常的应用是标准化URL,这样客户端可以正确地标记文档)。
开启HTTP反向代理
变量 | 描述 |
proxy.config.reverse_proxy.enabled | 设置这个变量为1来开启HTTP反向代理模式。 |
设置可选的HTTP反向代理选项
- 配置Traffic Server在转换的时候保存客户端的host头部信息
- 配置Traffic Server只服务发向映射规则中的源服务器的请求。因此,发向不在映射规则中源服务器的请求将不会被服务。
- 为来自老版本客户端的请求指定一个替换的URL(比如,没有提供Host头部的客户端)。
变量 | 描述 |
proxy.config.url_remap.pristine_host_hdr | 设置这个变量为1来保存客户端请求的host头部。
如果想要Traffic Server转换客户端请求的host头部,设置这个变量为0。
|
proxy.config.url_remap.remap_required | 如果想让Traffic Server只为在remap.config文件的映射规则中的源服务器的请求服务,设置这个变量为1。
如果想让Traffic Server服务所有源服务器的请求,设置这个变量为0。
|
proxy.config.header.parse.no_host_url_redirect | 输入为没有host头部的请求重定向的URL。 |
重定向HTTP请求
变量 | 描述 |
type | 输入其中的一个:
redirect – 不联系源服务器而永久重定向HTTP请求。
redirect_temporary — 不联系源服务器而临时重定向HTTP请求。
|
target | 输入源URL。可以由四部分组成:
scheme://host:port/path_prefix
|
replacement | 输入目标URL。可以由四部分组成:
scheme://host:port/path_prefix
|
proxy服务器-trafficserver基础
简介
Apache Traffic Server(简称 ATS)是新一代的缓存代理服务器,Yahoo 买下 Inktomi,经多年开发日渐成熟,2009 年将其贡献给 Apache 基金会作为 TLP。
特性
- 缓存,也是其最主要应用,功能和 Squid 一样;
- 代理,服务器端做反向代理,负载均衡,功能和 nginx 等类似;
- 快速,支持多核处理器,每秒并发支持到 3w;
可扩展
- 插件机制使其内部可扩展
- 通过多级缓存和 ICP 互联工作模式使其外部可扩展
注意:在技术领域里会经常看到这种新技术创造的革命,如 nginx
组件
TrafficServer 缓存
通过告诉对象数据库来缓存,索引为 URL 和相关 header 头。可以根据 vary 存多份;存储很大和很小的文件;能容忍磁盘的任何失效,盘坏完了就切换为纯代理模式;可以对缓存分区,不同条件存到不同的分区,可用于混合存储。
RAM 缓存
顾名思义,内存缓存。
Host 数据库
用于保存链接源服务器的 DNS 记录,包括 DNS,HTTP 版本信息。
DNS 解析器
回源解析,可实现根据条件使用不同的 DNS 服务器。
TrafficServer 进程
- traffic_server 是事务处理引擎
- traffic_manager 用来命令和控制 ATS 的进程,如配置,统计,集群管理和故障转移
- trafficcop 监控 trafficserver 和 traffic_manager 健康状况,可重启这俩进程。
安装
安装依赖
对于 CentOS:
sudo yum install gcc gcc-c++ pkgconfig pcre-devel tcl-devel expat-devel openssl-devel perl-ExtUtils-MakeMaker libcap libcap-devel hwloc hwloc-devel autoconf automake libtool git
对于 Ubuntu:
sudo apt-get install g++ make pkg-config libssl-dev tcl-dev libexpat1-dev libpcre3-dev libmodule-install-perl
获取源码
git clone https://git-wip-us.apache.org/repos/asf/trafficserver.git
配置环境
cd trafficserver && autoreconf -if && ./configure --prefix=/usr/local/trafficserver
编译安装
make && make check && sudo make install
启动
cd /usr/local/trafficserver/bin && ./traffic_server start
配置
由于 ATS 配置文件采用模块化管理,所以文件数目很多,配置文件对应的功能如下:
- cache.config 控制如何存储对象
- congestion.config 拥塞控制
- hosting.config 为源站或者域名指定磁盘分区
- icp.config 配置 ICP 服务
- ip_allow.config 访问控制
- log_hosts.config 为特定源站单独写 log 文件
- log_xml.config 自定义日志文件格式
- parent.config 定义父缓存节点
- plugin.config 插件配置
- records.config 定义变量,可通过 traffic_line -x 设置
- remap.config URL 映射规则
- splitdns.config 自定义域名解析
- ssl_multicert.config 配置多 SSL 证书
- storage.config 配置所有缓存存储
- update.config 配置定时更新缓存
- volume.config 配置 volume