Apache Traffic Server Traffic Server is a high-performance building block for cloud services. It's more than just a caching proxy server; it also has support for plugins to build large scale web applications. 1. DIRECTORY STRUCTURE trafficserver/ ............ Top src dir |-- build/ ................ Custom macros for configure.ac |-- ci/ ................... Quality assurance and other CI tools and configs |-- configs/ .............. Configurations |-- contrib/ .............. Various contributed auxiliary pieces |-- doc/ .................. Documentation for Traffic Server |-- admin-guide/ ...... Admin guide documentations |-- appendices/ ....... Appendices of Traffic Server |-- developer-guide/ .. Documentation for developers |-- dot/ .............. Graphviz source files for docs pictures |-- static/ ........... Static resources |-- uml/ .............. Documentation in UML |-- example/ .............. Example plugins |-- iocore/ ............... |-- aio/ .............. Asynchronous I/O core |-- cache/ ............ Disk and RAM cache |-- dns/ .............. DNS (asynchronous) |-- eventsystem/ ...... Event Driven Engine |-- hostdb/ ........... Internal DNS cache |-- net/ .............. Network |-- quic/ ......... QUIC implementation |-- utils/ ............ Utilities |-- lib/ .................. |-- perl/ ............. Perl libraries for e.g. mgmt access and configurations |-- records/ .......... Library for config files |-- yamlcpp/ .......... Library for YAML of C++ |-- mgmt/ ................. Management server and tools |-- plugins/ .............. Stable core plugins |-- experimental/ ..... Experimental core plugins |-- proxy/ ................ HTTP proxy logic |-- hdrs/ ............. Headers parsing and management |-- http/ ............. The actual HTTP protocol implementation |---http2/ ............ HTTP/2 implementation |---http3/ ............ HTTP/3 implementation |-- logging/ .......... Flexible logging |-- shared/ ........... Shared files |-- rc/ ................... Installation programs and scripts |-- src/ .................. Source for all the main binaries / applications |-- traffic_cache_tool/ Tool to interact with the Traffic Server cache |-- traffic_crashlog/ . Helper process that catches Traffic Server crashes |-- traffic_ctl/ ...... Command line management tool |-- traffic_layout/ ... Display information on the build and runtime directory structure |-- traffic_logcat/ ... Convert binary log file to plain text |-- traffic_logstats/ . Log parsing and metrics calculation utility |-- traffic_manager/ .. The manager process for Traffic Server |-- traffic_server/ ... Main proxy server |-- traffic_top/ ...... Top like tool for viewing Traffic Server statistics |-- traffic_via/ ...... Tool for decoding the Traffic Server Via header codes |-- traffic_wccp/ ..... Program speaking the client side of the WCCP |-- tscore/ ........... Base / core library |-- tscpp/ ............ C++ api wrapper for plugin developers |-- wccp/ ............. WCCP implementation |-- tests/ ................ Different tests for Traffic Server |-- tools/ ................ Directory of various tools |-- INSTALL ............... Build and installation guide |-- LAYOUT ................ Traffic Server default layout |-- LICENSE ............... Full license text |-- NOTICE ................ Copyright notices |-- README ................ Intro, links, build info |-- README-EC2 ............ Info on EC2 support |-- REVIEWERS ............. (Incomplete) list of areas with committer interest `-- STATUS ................ Release history and information 2. REQUIREMENTS This section outlines build requirements for different OS distributions. This may be out of date compared to the on-line requirements at <https://cwiki.apache.org/confluence/display/TS/Building>. As of ATS v7.0.0 and later, gcc 4.8.1 or later is required, since we now use and require the C++11 standard. Fedora / CentOS / RHEL: autoconf automake libtool pkgconfig perl-ExtUtils-MakeMaker gcc/g++ or clang/clang++ openssl-devel pcre-devel ncurses-devel and libcurl-devel(optional, needed for traffic_top) libcap-devel (optional, highly recommended) hwloc-devel (optional, highly recommended) flex (optional, needed for e.g. WCCP) Ubuntu / Debian autoconf automake libtool pkg-config libmodule-install-perl gcc/g++ or clang/clang++ zlib1g-dev libssl-dev libpcre3-dev libcap-dev (optional, highly recommended) libhwloc-dev (optional, highly recommended) libncurses5-dev (optional, required for e.g.: traffic_top) libcurl4-openssl-dev (optional, required for e.g.: traffic_top) flex (optional, required for e.g. WCCP) Alpine Linux build-base libexecinfo-dev pcre-dev libressl-dev autoconf automake libtool linux-headers macOS (we recommend HomeBrew): autoconf automake pkg-config libtool openssl pcre FreeBSD devel/gmake devel/autoconf devel/automake devel/pkgconf devel/libtool security/openssl devel/pcre textproc/flex (optional, install newer version from ports, fix PATH) devel/hwloc (optional, highly recommended) OmniOS: developer/gcc46 developer/build/gnu-make developer/build/autoconf developer/build/automake-111 developer/build/libtool library/security/openssl library/pcre 3. Building from distribution You can download the latest source code from the official Apache Traffic Server site: https://trafficserver.apache.org/downloads (or via the URL shortener: http://s.apache.org/uG). Once downloaded, follow the instructions: tar xf trafficserver-2.1.8-unstable.tar.bz2 cd trafficserver-2.1.8-unstable ./configure # configure the build environment to create Makefiles make # execute the compile This will build with a destination prefix of /usr/local. You can finish the installation with sudo make install 4. BUILDING FROM GIT REPO mkdir -p ~/dev # make yourself a development dir cd ~/dev # enter your development dir git clone ... # get the source code from ASF Git repository cd trafficserver # enter the checkout directory autoreconf -if # generate the configure script and Makefile.in files ./configure # configure the build environment to create Makefiles make # execute the compile 4b. Instructions for building on EC2 NOTE: Alternately you may use the scripts under 'contrib' which will automate the install for trafficserver under EC2 which is HIGHLY RECOMMENDED. See 'README-EC2' for further details. # As root do the following when using Ubuntu mkdir -p /mnt #EC2 Storage Mount, where storage is located cd /mnt git clone ... # get the source code from ASF Git repo cd trafficserver # enter the checkout dir autoreconf -i --force # generate the configure script and Makefile.in files ./configure make # As root do the following when using Fedora Core 8 kernel mkdir -p /mnt #EC2 Storage Mount, where storage is located cd /mnt git clone ... # get the source code from ASF Git repo cd trafficserver # enter the checkout dir autoreconf -i --force # generate the configure script and Makefile.in files ./configure --disable-eventfd make 4c. Instructions for building on FreeBSD The only difference is how to run configure and make: MAKE=gmake ./configure # make sure that gmake is the make we use gmake 5. INSTALLATION DEFAULT DIR CONTENTS /usr/local/var/log/trafficserver log files created at runtime /usr/local/var/trafficserver runtime files /usr/local/etc/trafficserver configuration files /usr/local/bin executable binaries /usr/local/libexec/trafficserver plugins 6. CRYPTO NOTICE This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See <http://www.wassenaar.org/> for more information. The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code. The following provides more details on the included cryptographic software: The functionality of OpenSSL <http://www.openssl.org/> is utilized in parts of the software. 7. ADDITIONAL INFO Web page: https://trafficserver.apache.org/ Wiki: https://cwiki.apache.org/confluence/display/TS/ User mailing list: [email protected]
Apache Traffic Server™ is a fast, scalable and extensible HTTP/1.1 and HTTP/2 compliant caching proxy server.
Apache Traffic Server Traffic Server is a high-performance building block for cloud services. It's more than just a caching proxy server; it also hasCategory: C/C++ / Networking and Internet |
Watchers: 161 |
Star: 1.4k |
Fork: 706 |
Last update: Dec 9, 2021 |
Scalar is a header only library. It provides typed numeric values that have a scaling factor. The "value" of a scalar is its count multiplied by its scale. The primary benefits are
- The scaling factor is explicit and carried with the type.
- Conversions between scaled values are automatic or rejected by the compiler.
- Explicit conversions indicate rounding up or down.
- Conversions are as fast as possible, compiling down to single multiplies or divides if one scale is a multiple of the other. If the scales are powers of two the conversions are compiled down to shift operations.
This is currently being tested in work on the cache, using Scalar to represent the various size values in the cache. This provides simple conversions and compiler warnings when scales don't match.
The requirements are outlined in https://github.com/apache/trafficserver/issues/1555
For brotli to work the "proxy.config.http.normalize_ae_gzip" configuration should be set to '0' Should we control this flag manually or through the gzip plugin?
@bryancall @shukitchan can you review.
This is an alternative proposal to #1520.
This started as an effort to update the documentation for the cache with regard to spans and stripe allocation in the spans. Eventually it changed in to building a cache tool that would let me verify the documentation was correct. The code is very rough and still in many ways experimental. But certain people requested early access so here it is.
This pull request depends on two other pull requests, #1330 and #1331.
This patch makes combo_handler
correctly handle the presence of one or more Cache-Control: immutable
flags.
In short, the combo response will be immutable if and only if all requested documents have immutable in their response headers.
In addition, the same logic applies for Cache-Control: private
. This was not present before.
This should be the squashed commit message:
Diagnostic log scrubbing is intended an extra security measure to prevent sensitive strings from leaking to diagnostic logs. This is provided via a config option proxy.config.diags.scrubs
.
For each line that is to be written to diagnostic logs, a regular expression(s) is applied to the line. If there are any matches, the matched substring is replaced with the replacement string.
The initial invocation of clang-format
causes make
to rebuild many files, despite clang-format not reformatting any files. Future invocations do not cause this, however.
To reproduce:
docker pull ci.trafficserver.apache.org/ats/rockylinux:8
docker run -it ci.trafficserver.apache.org/ats/rockylinux:8 /bin/bash
# From inside the docker container.
cd /var/tmp
git clone https://github.com/apache/trafficserver.git
cd trafficserver
autoreconf -fi
./configure
make -j8
# Wait for the build to complete.
# Run make again. Nothing should need to be rebuilt:
make -j8
make clang-format
# Verify no files got modified by clang-format.
git status
make -j8
# Many files are rebuilt. This is not expected.
# Re-run clang-format again, even removing the local repo installation.
rm -rf .git/fmt
make clang-format
make -j8
# No files are rebuilt.
It would be good to figure out why the initial invocation of clang-format causes many files to be rebuilt and to investigate whether this can be avoided. Across the many developers who build Traffic Server this wastes a lot of time.
Testing that osx build fires and completes
TLSTunnelSupport::initialize() was missed on #8612.
The initial run of the clang-format target with multiple threads would invoke multiple instances of tools/clang-format.sh at the same time. This would result in multiple processes trying to install the clang-format binary into .git/fmt, leading to a failure with a a "Text file busy" error. Subsequent runs would succeed, however, because the binary had already been installed.
This updates the tools/clang-format.sh script to take a --install
argument which just installs clang-format to .git/fmt, and makes the
existence of that directory a prerequisite for the clang-format target.
If it doesn't exist, then it is created with a run of
tools/clang-format.sh --install
. Then the various clang-format-
This also adds, for convenience, a format
target that runs both
clang-format
and autopep8
.
I want to use aws s3 as origin server and access control
plugin to access control. Can do that ?
I'm using s3_auth
plugin of traffic server
to aws s3
authentication.
I just install trafficserver from EPEL7.
And I fllowed Document "Get started -> Configuring A Reverse Proxy" without https, beacuse it Just for test.
Then I got "invalid client cipher suite", but I didn't change any ssl setings.
Here is the full log:
[Jun 29 15:12:47.648] traffic_server STATUS: opened /var/log/trafficserver/diags.log
[Jun 29 15:12:47.648] traffic_server NOTE: updated diags config
[Jun 29 15:12:47.695] traffic_server NOTE: storage.config loading ...
[Jun 29 15:12:47.697] traffic_server NOTE: storage.config finished loading
[Jun 29 15:12:47.730] traffic_server NOTE: ip_allow.yaml loading ...
[Jun 29 15:12:47.732] traffic_server NOTE: ip_allow.yaml finished loading
[Jun 29 15:12:47.733] traffic_server NOTE: parent.config loading ...
[Jun 29 15:12:47.733] traffic_server NOTE: parent.config finished loading
[Jun 29 15:12:47.734] traffic_server NOTE: /etc/trafficserver/logging.yaml loading ...
[Jun 29 15:12:47.735] traffic_server NOTE: /etc/trafficserver/logging.yaml finished loading
[Jun 29 15:12:47.737] traffic_server NOTE: logging initialized[3], logging_mode = 3
[Jun 29 15:12:47.737] traffic_server NOTE: Initialized plugin_dynamic_reload_mode: 1
[Jun 29 15:12:47.737] traffic_server NOTE: plugin.config loading ...
[Jun 29 15:12:47.738] traffic_server NOTE: plugin.config finished loading
[Jun 29 15:12:47.741] traffic_server ERROR: SSL::139969208883328:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:ssl_lib.c:1383
[Jun 29 15:12:47.741] traffic_server ERROR: invalid client cipher suite in records.config
Here is the build info: (traffic_server -V)
Traffic Server 9.1.2 Jun 15 2022 15:39:22 buildvm-x86-03.iad2.fedoraproject.org
traffic_server: using root directory '/usr'
Apache Traffic Server - traffic_server - 9.1.2 - (build # 061515 on Jun 15 2022 at 15:39:22)
Update: Work fine on Ubuntu (apt install) with Same config!!!
Maybe the trafficserver from EPEL7 has SSL bug?