How to Setup Varnish Cache 5.0 Proxy for Apache on CentOS 7

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 -ysudo 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.servicesudo 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:

cdwget -zxvf varnish-5.0.0.tar.gzcd varnish-5.0.0sh autogen.shsh configuremakesudo make installsudo 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=httpsudo firewall-cmd --reload

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

sudo touch /var/www/html/1.htmlsudo 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 OKDate: Thu, 26 Jan 2017 15:14:07 GMTServer: Apache/2.4.6 (CentOS)Last-Modified: Thu, 26 Jan 2017 15:13:20 GMTETag: "0-54700ca2565dc"Content-Length: 0Content-Type: text/html; charset=UTF-8X-Varnish: 2Age: 0Via: 1.1 varnish (Varnish/5.0)Accept-Ranges: bytesConnection: 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.

Want to contribute?

You could earn up to $300 by adding new articles

Submit your article
Suggest an update
Request an article

No comments

Powered by Blogger.