Varnish is a proxy and cache, or HTTP accelerator, designed to improve performance for busy, dynamic web sites. By redirecting traffic to static pages, varnish reduces the number of dynamic page calls, thus reducing load. Varnish is designed for content-heavy dynamic web sites as well as heavily consumed APIs. In contrast to other web accelerators, such as Squid, or Apache and nginx, which are primarily origin servers, Varnish was designed as an HTTP accelerator.
Once installed, Varnish Cache allows us to use several apps to evaluate the server by means of statistics. These apps are the ones mentioned below.
- varnishtop: grouped list with the most usual entries from different logs.
- varnishhist: a histogram that shows the time taken for the requests processing.
- varnishsizes: it performs the same task as “varnishhist” but showing the size of the objects.
- varnishstat: it shows many contents on cache hits, resource consumption, etc..
- varnishlog: it allows us to see all the requests made to the web backend server.
You may need an operating system RHEL 7 or Centos 7 in your dedicated or vps server. Please make sure to set a hostname for your server and its dns is pointing to the IP address of the server.
Before you begin please install LAMP(Linux Apache Mysql PHP) in your server. To install LAMP, Please refer the documentation from here
Update your server with latest packages.
# yum update
Now install varnish on Centos.
# yum install varnish
# vi /etc/varnish/varnish.params
Change Listen Port to 80 as we are going to run Varnish in front of Apache:
Now edit Apache configuration file:
# vi /etc/httpd/conf/httpd.conf
Then look for the line that says “Listen 80” and change it to “Listen 8080”
Now restart Apache at first so the webserver run on port 8080 leaving port 80 being usable by Varnish:
# systemctl restart httpd.service
# systemctl restart varnish.service
# systemctl enable varnish.service
You can see varnish running on port 80 using the following command:
# netstat -tunlp | grep :80 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 22368/httpd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 22145/varnishd
# varnishd -V
Gives you an output something like this:
varnishd (varnish-3.0.7 revision f544cd8) Copyright (c) 2006 Verdens Gang AS Copyright (c) 2006-2014 Varnish Software AS
You can check it like this
# curl -I
# curl -I 192.168.3.18 HTTP/1.1 403 Forbidden Date: Sun, 17 Jan 2016 10:42:54 GMT Server: Apache/2.4.6 (CentOS) PHP/5.4.16 Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT ETag: "1321-5058a1e728280" Accept-Ranges: bytes Content-Length: 4897 Content-Type: text/html; charset=UTF-8 X-Varnish: 13 Age: 0 Via: 1.1 varnish-v4 Connection: keep-alive