Varnish on a Virtualmin Server
5 March, 2021 by
Varnish on a Virtualmin Server
Administrator
| No comments yet

This document describes how to run the Varnish cache on a Virtualmin server.

We’re often asked about Varnish support in Virtualmin. Virtualmin is only designed to manage web servers, such as Apache and Nginx. However, with some manual configuration, it’s possible to setup Varnish on a server being managed by Virtualmin.

Note that this setup isn’t designed for a typical shared hosting server. Varnish isn’t a general-purpose web server. Applications running behind Varnish need to be configured to work with the cache.

However, if your server is dedicated to the purpose of hosting a site or sites which are in need of the speed offered by the Varnish cache, this may be for you.

If you’re looking for the speed of Varnish for a domain on a shared hosting server, you can still use Varnish, but you would want to install it onto a second server, rather than putting it onto the server hosting your domains. The steps below cover installing Varnish onto your Virtualmin server, but you could modify those steps to put it on a second server if that’s what you need.

We’d encourage you to perform these steps first on a test system, before making any changes to a live server.

The following instructions are for CentOS 7+, Ubuntu 12.04+, and Debian 7+ (other distros/versions are likely to work, but may require some modification to the steps):

Install Varnish

CentOS

yum install epel-release
yum install varnish

 

Ubuntu/Debian

apt-get install varnish

Edit the Varnish startup options

CentOS

Edit /etc/varnish/varnish.params, and set:

VARNISH_LISTEN_PORT=80

Ubuntu/Debian

Edit /etc/default/varnish, and set:

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"

Edit the Varnish config.

Edit /etc/varnish/default.vcl, and set the following host and port:

backend default {
.host = "x.x.x.x";
.port = "8080";
}

Where “x.x.x.x” is your server’s primary IP address (often “eth0”).

Change the Apache “Listen” port

CentOS

Edit /etc/httpd/conf/httpd.conf and change the “Listen 80” line to “Listen 8080”.

Ubuntu/Debian

Edit /etc/apache2/ports.conf, and change port 80 to 8080 so the file looks like this:

Listen 8080
Listen 443

Change Apache port for Existing Domains

If you have any existing domains setup, you’ll need to edit the port for each one in Virtualmin. To do that, go into Server Configuration -> Change IP Address for the selected domain, and on that screen, change New HTTP port from 80 to 8080.

Restart Apache and Varnish

service apache2 restart
service varnish restart

 

Edit Virtualmin config

Lastly, in Virtualmin, we need to tell it to add new Apache websites on the new port. To do that, go into System Settings -> Server Templates -> Default -> Apache Website -> Port number for virtual hosts, and there, set the port to 8080.

Varnish Setup Finished!

If you access the websites on your server, they should now be going through your Varnish cache, rather than just Apache.

Application Setup

At this point, the only remaining step is to configure your application to use Varnish. Applications need a way to tell Varnish to purge the cache when the content changes. Applications such as WordPress, Drupal, and Joomla provide plugins for that.

As a temporary solution, you can also manually purge it by restarting the Varnish service.

Sign in to leave a comment