Apache Traffic Server is a highly scalable caching proxy server capable of handling large volumes of concurrent requests while maintaining a very low latency. Compared to other popular proxy servers, such as Varnish or Squid, it usually consumes less memory and responds faster. It is also designed to make the most of modern multi-core processors. Depending on your requirements, you can use it as a reverse proxy or as a forward proxy.
This tutorial will cover how to install Apache Traffic Server on Ubuntu 14.04 and configure it to behave as a caching reverse proxy.
To follow this tutorial, you will need:
One Ubuntu 14.04 Droplet
At least 1 GB of swap space
Because Traffic Server is available on Ubuntu 14.04’s default repositories, you can install it using apt-get
. Make sure you update your package index files before you do so.
- sudo apt-get update && sudo apt-get install trafficserver
Traffic Server listens on port 8080 by default. You can use a browser to visit http://your_server_ip:8080/
now. However, you will see an error because you haven’t configured it yet.
By definition, a proxy server acts as an intermediary between external users and a web server. Therefore, before you begin configuring Traffic Server, you should install a web server such as Apache HTTP Server on your machine.
Install and start Apache using apt-get
.
- sudo apt-get install apache2
You can now use a browser and visit http://your_server_ip/
to see Apache’s welcome page.
Apache accepts connections on all network interfaces by default. By configuring it to accept connections only on the loopback interface, you can make sure that it is inaccessible to remote users.
Open ports.conf
using nano
or your favorite text editor.
- sudo nano /etc/apache2/ports.conf
Search for the line containing the Listen 80
directive and change it to:
Listen 127.0.0.1:80
Save and exit the file.
Next, open apache2.conf
.
- sudo nano /etc/apache2/apache2.conf
Add the following line at the end of the file:
ServerName localhost
Save and close the file.
To apply the configuration changes, restart Apache using the following command:
- sudo service apache2 restart
Try using a browser to visit http://your_server_ip/
again. Your browser should show an error now, because you blocked remote access to the server.
In this step, we will configure Traffic Server as a reverse proxy. To do so, open remap.config
, which is the file you should edit to define Traffic Server’s mapping rules.
- sudo nano /etc/trafficserver/remap.config
Let’s create a simple rule that says all requests to the server’s IP address on port 8080 are mapped to the web server’s local address and port. You can do so by adding the following line to the end of the file:
map http://your_server_ip:8080/ http://127.0.0.1:80/
Save the file and exit.
To activate the new mapping rule, use the reread_config
command of traffic_line
:
- sudo traffic_line --reread_config
Open a browser and visit http://your_server_ip:8080/
. If you are able to see Apache’s welcome page now, you have successfully configured Traffic Server as a reverse proxy.
By default, Traffic Server will cache an HTTP response only if it contains a Cache-Control
or Expires
header explicitly specifying how long the item should be stored in the cache. However, as our web server is only serving static files, it is safe to cache all its responses.
To configure Traffic Server such that it caches all HTTP responses, you should change the value of a config variable called proxy.config.http.cache.required_headers
to 0. This can be done using the set_var
command of traffic_line
.
- sudo traffic_line --set_var proxy.config.http.cache.required_headers --value 0
Apply the change using the reread_config
flag.
- sudo traffic_line --reread_config
Open a browser and visit http://your_server_ip:8080/
again. This will store the Apache welcome page in Traffic Server’s cache.
To view the contents of Traffic Server’s cache, you can use a tool called Cache Inspector, which has a web-based interface.
To activate the tool, set the value of the proxy.config.http_ui_enabled
config variable to 1.
- sudo traffic_line --set_var proxy.config.http_ui_enabled --value 1
Next, create a mapping rule specifying the path you want to use to access it. Open remap.config
again using nano
.
- sudo nano /etc/trafficserver/remap.config
Let’s make the Cache Inspector available on /inspect
. To do so, add the following line at the top of the file:
- map http://your_server_ip:8080/inspect http://{cache}
Save the file and exit.
To apply the changes, restart Traffic Server.
- sudo service trafficserver restart
The Cache Inspector is now ready to be used. Open a browser, and visit http://your_server_ip:8080/inspect/
. You will see a page which looks like this:
Next, click on the Lookup url link.
You can now type in a URL in the text field and click on the Lookup button to check if it is stored in the cache.
For example, you can type in http://your_server_ip:8080/
to check if your web server’s homepage is being served from the cache. If it is, you will see a page which looks like this:
You now know how to install Apache Traffic Server on Ubuntu 14.04 and configure it as a caching reverse-proxy. Though we used Apache as the web server in this tutorial, you can just as easily use any other web server. To learn more about Traffic Server, you can go through its Administrator’s Guide.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Hi there! Is this still working for you guys? Just wanna know, i follow the step but i encountered something wrong
i tried to apply this for streaming (set up proxy server between end viewer and the main source server) however it works (not 100% but usually ok) for vod but not for live channels… thanks to help with this…
So can we change the port 8080 that traffic server use to port 80 ?