Learn How To Setup Varnish Cache 5.0 Proxy for Apache on CentOS 7

April 9, 2019

Table of Contents

Varnish Cache, also referred to as Varnish, is an open source caching HTTP reverse proxy which can help improve a web server’s performance.

In this article we will be covering the process of compiling Varnish Cache 5.0 from its source to use alongside Apache on CentOS 7.


  • A CentOS 7 x64 server instance.
  • A sudo user.

Step 1: Update the system

Update the system as follows:

sudo yum install epel-release -y
sudo yum clean all && sudo yum update -y && sudo shutdown -r now

Once the server is back online, log back in using the same sudo user.

Step 2: Install Apache

Use YUM to install Apache:

sudo yum install httpd -y

Set Apache as listening on port 8080:

sudo sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf

Start the Apache service:

sudo systemctl start httpd.service
sudo systemctl enable httpd.service

Step 3: Install Varnish Cache 5.0 from source

Since there is no pre-compiled RPM for Varnish Cache 5.0, we will be compiling it from its source.

Before compiling Varnish Cache 5.0, we need to install several package on which Varnish Cache relies to function:

sudo yum install autoconf.noarch automake.noarch jemalloc-devel.x86_64 libedit-devel.x86_64 libtool.x86_64 ncurses-devel.x86_64 pcre-devel.x86_64 pkgconfig.x86_64 python-docutils.noarch python-sphinx.noarch graphviz.x86_64 -y

Compile Varnish Cache 5.0 from source:

wget https://repo.varnish-cache.org/source/varnish-5.0.0.tar.gz
tar -zxvf varnish-5.0.0.tar.gz
cd varnish-5.0.0
sh autogen.sh
sh configure
sudo make install
sudo ldconfig

After executing the above commands, the Varnish Cache 5.0 main executable will be installed onto your system as /usr/local/sbin/varnishd. You can confirm that the installation was successful using the below command:

sudo /usr/local/sbin/varnishd -V

Step 4: Test Varnish Cache

Modify firewall rules in order to allow inbound traffic on port 80:

sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload

Create an empty html file /var/www/html/1.html for test:

sudo touch /var/www/html/1.html
sudo systemctl restart httpd.service

Use the following command to start Varnish Cache, setting it to listen on port 80 and to communicate to Apache which is using localhost’s 8080 port:

sudo /usr/local/sbin/varnishd -a :80 -b localhost:8080

Use the curl command to connect your server:

curl -I

The output should resemble:

HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 15:14:07 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Thu, 26 Jan 2017 15:13:20 GMT
ETag: "0-54700ca2565dc"
Content-Length: 0
Content-Type: text/html; charset=UTF-8
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/5.0)
Accept-Ranges: bytes
Connection: keep-alive

The X-Varnish: 2 and Via: 1.1 varnish (Varnish/5.0) headers will only appear when Varnish Cache is running

This concludes our tutorial. Thanks for reading.

Need help?

Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!