http://trafficserver.apache.org/
安装:
解压源码包后先阅读 README 文件,里面告诉了需要那些开发包的支持。
Ubuntu:
gcc
libssl-dev
tcl-dev
libexpat-dev
libpcre3-dev
libcap-dev
apt-get install 安装以上各个开发包。
./configure --help 查看编译的一些选项
./configure (默认安装在 /usr/local,如需修改,使用 --prefix=PREFIX;参数中还有用户和用户组选项,这是 TS 进程运行的身份,默认均为 nobody,centos 可以不作修改,其他发行版可能需要修改,如 ./configure --with-group=nogroup)
make
make install
最后安装完成后注意这个提示:
Libraries have been installed in:
/usr/local/libexec/trafficserver
提示说明自己安装的动态库文件安装在该路径下,所以编辑 /etc/ld.so.conf.d/libc.conf 配置文件,把该库文件路径加入文件中。运行 ldconfig 命令,使文件生效。
目录结构:
默认目录内容
运行时创建的日志文件/usr/local/var/log/trafficserver
运行时的一系列文件/usr/local/var/trafficserver
配置文件/usr/local/etc/trafficserver
可执行文件/usr/local/bin
插件/usr/local/libexec/trafficserver
初步配置(正向代理配置):
编辑全局变量配置文件,默认安装目录 /usr/local/etc/trafficserver/records.config
关闭反向代理:
- CONFIG proxy.config.reverse_proxy.enabled INT 0
关闭反向代理转发:
- CONFIG proxy.config.url_remap.remap_required INT 0
允许TS操作客户端请求的host头部:
- CONFIG proxy.config.url_remap.pristine_host_hdr INT 0
忽略服务器端和客户端的http头部的 no_cache 和 max_age:
- CONFIG proxy.config.http.cache.ignore_server_no_cache INT 1
- CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
缓存所有对象,忽略头部为 Expires 和 max-age(因为几乎没有对象会有明确的截止日期和生存时间):
- CONFIG proxy.config.http.cache.required_headers INT 0
DEBUG模式开关(默认关闭,调试时候可以打开,海量信息,慎用):
- CONFIG proxy.config.diags.debug.enabled INT 0
Cache-directive |
说明 |
public |
所有内容都将被缓存 |
private |
内容只缓存到私有缓存中 |
no-cache |
所有内容都不会被缓存 |
no-store |
所有内容都不会被缓存到缓存或 Internet 临时文件中 |
must-revalidation/proxy-revalidation |
如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证 |
max-age=xxx (xxx is numeric) |
缓存的内容将在 xxx 秒后失效, 这个选项只在HTTP 1.1可用, 并如果和Last-Modified一起使用时, 优先级较高 |
cache.config配置:
我们可以针对一些php、asp、cgi等页面不缓存,编辑cache.conf文件,加入下列规则:
- url_regex=.* suffix=php action=never-cache
针对某些视频的http应答包中存在age项,而导致可以缓存,但是一旦二次访问则检查为过期的,在这里强行指定它的过期时间为25小时,这里的 dest_domain 值为cacheurl插件修改过后的静态地址的域名:
- dest_domain=video.sina.com.cn scheme=http revalidate=24h
- dest_domain=www.pptv.com scheme=http revalidate=24h
http://trafficserver.apache.org/docs/trunk/admin/configuration-files/cache.config.en.html,还有其他很强大的功能,比如指定域名,指定源地址,指定忽略no-cache等等。
cacheurl插件编译安装:
http://svn.apache.org/repos/asf/trafficserver/plugins/trunk/cacheurl/ 在官网上下载 cacheurl.c 和 Makefile 文件,然后进入文件目录编译:
make TSXS=/usr/local/bin/tsxs
make TSXS=/usr/local/bin/tsxs install
源码里有版本校验函数,只支持到2.1.6版本,所以最新3.0.2版无法支持,暂时修改源代码支持到3.0后插件能正常工作,稳定性有待测试。
编译完成后在 /usr/local/etc/trafficserver/plugin.config 文件中加入动态库 cacheurl.so
然后在插件目录 /usr/local/libexec/trafficserver 下创建配置文件 cacheurl.config,写入Rewrite url 的 perl正则即可。会在 /usr/local/var/log/trafficserver/cacheurl.log 产生Rewrite日志。
开启HTTP_UI功能:
http_ui is a cache inspector for TS internal system, a Swiss knife tool for TS, you can setup http_ui by:
- add these remap rules to remap.config, you may need to replace localhost to your own hostname
map http:
map http:
map http:
map http:
map http:
map http:
map http:
- enable http_ui from records.config, we use command line tool here:
traffic_line -s proxy.config.http_ui_enabled -v 3
traffic_line -s proxy.config.http.enable_http_info -v 1
- get traffic_server aware of the change:
- testing with nc:
echo -ne "GET http: | nc -i 1 localhost 8080
使用 raw device 设备:
The following example will use an entire raw disk in the Linux operating system:
In order to make sure traffic_server will have access to this disk you can use udev to persisently set the right permissions. The following rules are targeted for an Ubuntu system, and stored in /etc/udev/rules.d/51-cache-disk.rules:
# Assign /dev/sde and /dev/sdf to the www group
# make the assignment final, no later changes allowed to the group!
- # GROUP 为 TS运行的用户组,否则会无权限加载磁盘
- SUBSYSTEM=="block", KERNEL=="sd[bc]", GROUP:="nogroup"
然后运行 udevadm trigger 命令,重新接收内核事件,或者reboot也是可以的。
ts_admin_chinese.pdf TS3.0.2.part1.rar TS3.0.2.part2.rar
命令行工具、监控
/usr/local/bin/traffic_line 需用管理员身份执行
查看帮助 traffic_line -h
查看变量的值 traffic_line -r 变量名 (变量名见官方管理指南附录C,含 TS 运行时统计数据)
给变量赋值 traffic_line -s 变量名 -v 值 (变量名见records.config)
不重启TS 使配置生效 traffic_line -x
/usr/local/bin/traffic_shell 需用管理员身份执行,进入后提示符为“%”
查看帮助 man traffic_shell (由于开发者疏忽,暂不能用)
show 命令,如 %show:cache-stats 查看缓存统计,如命中情况,缓存大小;如%show:proxy-stats 查看命中率
config 命令,如 %config:logging event disable 关闭日志;如 %config:cache clear,清除缓存,config命令作出的修改都会立即生效
/usr/local/bin/traffic_logcat 日志查看工具
traffic_logcat -h 获得帮助
查看二进制日志 traffic_logcat 日志文件名
Traffic Server 系统自身的运行日志可在 /var/log/message 中查看(centos),用于排错
traffic_logstats 提供了基于日志的统计功能