Traffic Server 正向代理(透明代理)

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

关闭反向代理:
  1. CONFIG proxy.config.reverse_proxy.enabled INT 0

关闭反向代理转发:
  1. CONFIG proxy.config.url_remap.remap_required INT 0

允许TS操作客户端请求的host头部:
  1. CONFIG proxy.config.url_remap.pristine_host_hdr INT 0

忽略服务器端和客户端的http头部的 no_cache 和 max_age:
  1. CONFIG proxy.config.http.cache.ignore_server_no_cache INT 1
  2. CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1

缓存所有对象,忽略头部为 Expires 和 max-age(因为几乎没有对象会有明确的截止日期和生存时间):
  1. CONFIG proxy.config.http.cache.required_headers INT 0

DEBUG模式开关(默认关闭,调试时候可以打开,海量信息,慎用):
  1. CONFIG proxy.config.diags.debug.enabled INT 0


常用 cache-directive 值
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文件,加入下列规则:
  1. url_regex=.* suffix=php action=never-cache
针对某些视频的http应答包中存在age项,而导致可以缓存,但是一旦二次访问则检查为过期的,在这里强行指定它的过期时间为25小时,这里的 dest_domain 值为cacheurl插件修改过后的静态地址的域名
  1. dest_domain=video.sina.com.cn scheme=http revalidate=24h
  2. 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:

  1. add these remap rules to remap.config, you may need to replace localhost to your own hostname
    remap.config
    map http://localhost/cache-internal/ http://{cache-internal}
    map http://localhost/cache/ http://{cache}
    map http://localhost/stat/ http://{stat}
    map http://localhost/test/ http://{test}
    map http://localhost/hostdb/ http://{hostdb}
    map http://localhost/net/ http://{net}
    map http://localhost/http/ http://{http}
  2. enable http_ui from records.config, we use command line tool here:
    command
    traffic_line -s proxy.config.http_ui_enabled -v 3
    traffic_line -s proxy.config.http.enable_http_info -v 1
  3. get traffic_server aware of the change:
    command
    traffic_line -x
  4. testing with nc:
    command
    echo -ne "GET http://localhost/stat/ HTTP/1.0\r\n\r\n" | nc -i 1 localhost 8080
使用 raw device 设备:

The following example will use an entire raw disk in the Linux operating system:

  1. #磁盘设备
  2. /dev/sdb
  3. /dev/sdc

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!

  1. GROUP 为 TS运行的用户组,否则会无权限加载磁盘
  2. 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 提供了基于日志的统计功能

你可能感兴趣的:(server,cache,Scheme,System,domain)