高性能的、模块化的 HTTP 代理和缓存服务器,Apache Traffic Server 5.2.0 发布

jopen 9年前

Apache Traffic Server(ATS或TS)是一个高性能的、模块化的 HTTP 代理和缓存服务器。Traffic Server 最初是 Inktomi 公司的商业产品,该公司在 2003 年被 Yahoo 收购,之后 Traffic Server 一直在 Yahoo 内部使用长达 4 年,直到 2009 年 8 月 Yahoo 向 Apache 软件基金会(ASF)贡献了源代码,并于 2010 年 4 月成为了 ASF 的顶级项目(Top-Level Project)。 Apache Traffic Server 现在是一个开源项目,开发语言为C++。

    HTTP 代理服务器是 HTTP 服务器的一种实现,处于客户端(一般为浏览器)与另一个 HTTP 服务器之间(通常指源服务器,Origin Server)。HTTP 代理通常分为正向代理、反向代理和透明代理,我们主要关注的是反向代理(Reverse Proxy, 见下图)反向代理服务器根据明确配置的映射规则来处理用户请求。反向代理服务器通常会设置一个较大的缓存区,服务器处理请求的同时将请求的内容缓存在服务 器本地,当下次用户请求同一个对象时,服务器可直接从缓存区里取出对象,而不用去源服务器去取,起到了加速的效果。另外,配置反向代理的映射规则也能实现 负载均衡的功能。除了 Traffic Server,常见的开源代理服务器还有 Squid,Varnish,Nginx,HAProxy。


该版本包含 bug 修复,新特性和改进,详细介绍请看这里
下载:http://trafficserver.apache.org/downloads

完整的记录包括:

Sub-task

  • [TS-1476] - static analysis: argument with 'nonnull' attribute passed null

  • [TS-1477] - static analysis: dead store, dead assignment

  • [TS-1478] - static analysis: dead store, dead increment

  • [TS-1479] - static analysis: dead store, dead initialization

  • [TS-1480] - static analysis: logic error, called C++ object pointer is null

  • [TS-1481] - static analysis: logic error, dereference of null pointer

Bug

  • [TS-407] - traffic_server not using proxy.config.syslog_facility

  • [TS-898] - Fix potential problems from coverity scan

  • [TS-1475] - Static analysis: clean up all clang and coverity reports

  • [TS-1535] - FetchSM process_fetch_write should ignore event TS_EVENT_VCONN_WRITE_READY

  • [TS-1570] - remap doesn't reject request whose Host has extra characters after port (like "test.com:80xxx")

  • [TS-2009] - Disallow \0 in all headers

  • [TS-2095] - autoconf warnings related to unordered_map

  • [TS-2883] - core dump in TSFetchCreate()

  • [TS-2938] - Core dump in HttpSM::redirect_request when handling 307

  • [TS-2959] - Compiler warnings from gcc 4.9.1

  • [TS-3020] - Blind Tunnel fake request URL is IPv4 only

  • [TS-3026] - SPDY not forwarding Accept-Encoding headers for Firefox

  • [TS-3035] - Double logging on errored transactions

  • [TS-3039] - OCSP stapling memory leaks

  • [TS-3042] - Fix the static traffic_server build

  • [TS-3048] - Removed hard coded directory in TSPluginDirGet Regresson Test

  • [TS-3051] - Bad if for perror on AIO.cc

  • [TS-3064] - Expose TS_EVENT_VCONN_ACTIVE_TIMEOUT in headers

  • [TS-3065] - Delete the header "Transfer-Encoding" when the error body was set

  • [TS-3066] - Latest master does not compile on OmniOS

  • [TS-3073] - tr-pass: non-http request gets blocked with error message instead of being tunnelled to the origin server

  • [TS-3074] - Regression fails on FreeBSD after TS-2736

  • [TS-3076] - Coverity warning and build error on RHEL6

  • [TS-3081] - ATS doesn't send FIN flag to indicate data complete to the client in some cases..

  • [TS-3083] - Double free of FetchSM

  • [TS-3084] - Forwarding mode breaks iPhone activation (gs.apple.com)

  • [TS-3085] - Large POSTs over (relatively) slower connections failing in ats5

  • [TS-3087] - Flow control can stall at low water mark values

  • [TS-3092] - SSL_CTX_set_timeout should be set even if Server Side Session Cache is disabled

  • [TS-3097] - Reloading SSL certificates crashes

  • [TS-3098] - Fix the ability to configure keep-alive on post to the origin

  • [TS-3105] - Combination of fixes for TS-3084 and TS-3073 causing asserts and segfaults on 5.1 and beyond

  • [TS-3106] - ATS error responses do not flush request body

  • [TS-3109] - Build broken on ubuntu saucy64

  • [TS-3112] - core dump in FetchSM.cc

  • [TS-3120] - Overlapping rank in config.remap when using .include directives

  • [TS-3121] - Seeing garbage SPDY responses sometimes

  • [TS-3125] - SSL ctx is set to a constant allowing for potential inappropriate session reuse.

  • [TS-3129] - Parent proxy configuration does not work for incoming HTTPS requests

  • [TS-3130] - Core dump in Logging

  • [TS-3152] - We offer up H2-14 on current master, even when it's not working / supported

  • [TS-3179] - ats_scoped_fd should not provide boolean operators

  • [TS-3184] - SPDY window_update not triggered correctly..

  • [TS-3188] - Do not set half_close flag for short post on keep_alive client connections

  • [TS-3189] - Do not start reading data on server to user agent tunnel too soon

  • [TS-3190] - Change producer_run() to run a specific producer in more cases

  • [TS-3191] - Confusion with HTTP_TUNNEL_STATIC_PRODUCER

  • [TS-3196] - Core dump when handle event check_inactivity

  • [TS-3199] - HEAD request over SPDY hangs until inactivity timeout

  • [TS-3202] - HTTP Parsing should not allow CTL characters in the method

  • [TS-3205] - ASAN complaints on config reload freeing malloc'ed memory with delete[]

  • [TS-3207] -  _xstrdup incorrectly calls ink_strlcpy with zero length strings

  • [TS-3221] - ink_atoi64 return 0 for input of 0..9

  • [TS-3223] - Fix the internal buffer sizing.

  • [TS-3226] - SSL data not read from the socket sometimes causing transactions to timeout

  • [TS-3244] - stats_over_http plugin does not get the optional path argument properly

  • [TS-3248] - 5.2.0 Segmentation fault due to TS-3189

  • [TS-3254] - AdminClient.pm broken in v5.2.0

  • [TS-3257] - possible memory leak in v5.2.0

  • [TS-3261] - possible slow leak in v5.2.0

  • [TS-3262] - Build failure using clang on Fedora 21

  • [TS-3265] - core dump in spdy_prepare_status_response_and_clean_request

  • [TS-3274] - Cache fixup can cause race condition in ram cache.

  • [TS-3276] - Cache incompatible between 5.0.1 and 5.2.0

  • [TS-3280] - Segfault in new freelist bulk freeing

Improvement

  • [TS-1120] - Use ink_zero / ats_zero instead of calling memset when zeroing a variable or member.

  • [TS-2119] - mysql_remap plugin is in the source tree but does not build

  • [TS-2289] - Only support AIO_MODE_THREAD and AIO_MODE_NATIVE

  • [TS-2561] - Remove app-template from examples

  • [TS-2945] - Balancer plugin forward to other port than 80

  • [TS-2989] - ats_speed: implement In-Place-Resource-Optimization flow

  • [TS-3006] - Augment SNI callback processing

  • [TS-3023] - Support space separated values in inline plugin parameters in remap rules

  • [TS-3024] - Build with OPENSSL_NO_SSL_INTERN

  • [TS-3033] - Reimplement management protocol

  • [TS-3034] - Unanchored traffic_line metrics match

  • [TS-3041] - Add a way to show the installation layout

  • [TS-3044] - Linux native AIO should use eventfd if available to signal thread

  • [TS-3047] - The Makefile.am for traffic_top is inconsistent with the rest of the build system

  • [TS-3054] - Premature origin connection reset: flush partial data received to client before closing client connection

  • [TS-3068] - Remove usage of Boost

  • [TS-3069] - Add mysql_remap to automake

  • [TS-3070] - Consistent span configuration

  • [TS-3071] - Emit JSON numbers in stats_over_http

  • [TS-3093] - Add additional functionality to IpAddr.

  • [TS-3103] - Improve privilege elevation

  • [TS-3114] - Refactor IpMap to make the RB tree a shared data structure

  • [TS-3116] - Add support for tracking the use of the ioBuffers

  • [TS-3131] - Revise the certificates loading procedure

  • [TS-3135] - Disable SSLv3 by default

  • [TS-3143] - Convert DFA class to Regex and add support for JIT

  • [TS-3147] - Improvements to ESI plugin first byte flush feature

  • [TS-3150] - atscppapi should support streaming HTTP fetch

  • [TS-3154] - Add proxy port to access log

  • [TS-3155] - Add a value test method to the MIMEField class

  • [TS-3156] - Mutex[Try]Lock bool() operator change and unused API removal

  • [TS-3157] - standardize --help and --version options

  • [TS-3171] - Tidy up Tokenizer interface

  • [TS-3178] - ProxyAllocator improvements

  • [TS-3185] - Increase the default spdy initial_window_size_in setting to 1 mb

  • [TS-3194] - Remove unused proxy.config.plugin.plugin_mgmt_dir

  • [TS-3233] - Add drain option to restart API

New Feature

  • [TS-1432] - API is missing TSMutexDestroy

  • [TS-2314] - New config to allow unsatifiable Range: request to go straight to Origin

  • [TS-2417] - Add forward secrecy support with DHE (SSL related)

  • [TS-2503] - Dynamic TLS record size tuning

  • [TS-2682] - Add per remap configuration / activation to background_fetch

  • [TS-2683] - Add some control for which content to activate the background_fetch plugin

  • [TS-2955] - Support variable expansion in set-redirect operator for header_rewrite

  • [TS-2956] - Add ssl_pre_handshake hook for better plugin access to SSL handling and allow for combination of blind tunnel and tunnel proxying

  • [TS-3059] - Logging API is missing a TSTextLogObjectRollingSizeMbSet()

  • [TS-3080] - OpenSSL implementation of TLS session cache is very slow.

  • [TS-3101] - Add TSHttpHdrHostGet

  • [TS-3108] - Add port matching condition to header_rewrite

  • [TS-3115] - Add server response time field in custom logging fields

  • [TS-3119] - Add option to support SO_LINGER to origin server

  • [TS-3127] - Add config for OpenSSL session cache auto clear

  • [TS-3139] - Add script to "replicate" a response across a set of proxy caches (using PUSH)

  • [TS-3145] - traffic_line backtrace support

  • [TS-3149] - Move Via decoder out of traffic_line, and make a separate traffic_via tool

  • [TS-3192] - Implement proxy.config.config_dir

  • [TS-3195] - Improved crash logging