Set up Varnish reverse HTTP proxy¶
1 Install Varnish¶
Since Varnish is not widely available in all necessary versions, here you will compile it from downloaded source.
1.1 Download Varnish¶
Download the required Varnish source from GitHub to your home directory:
mkdir ~/varnish
cd ~/varnish
wget https://github.com/varnishcache/varnish-cache/archive/varnish-6.0.6.tar.gz
Extract the downloaded archive and position into it:
cd ~/varnish
tar xzf varnish-6.0.6.tar.gz && rm varnish-6.0.6.tar.gz
cd varnish-cache-varnish-6.0.6
1.2 Patch Varnish¶
As nicely explained at https://varnish-cache.org/docs/6.0/phk/platforms.html, MacOS is not the primary platform Varnish team cares about. They will try not to break it, but will not regularly test it and may rely on contributors to alert about problems. Since you use MacOS, and our web technology of choice forces us to use a bit older version of Varnish, you will need to manually apply some patches existing in the newer versions.
Execute on the command line:
cd ~/varnish/varnish-cache-varnish-6.0.6
subl bin/varnishd/cache/cache_lck.c
Then manually apply the following commit: https://github.com/varnishcache/varnish-cache/commit/e5e545f9fe14b4bfd4003c26403d80645c73385a
1.3 Install tools needed to compile Varnish¶
Install automake
using brew
if you don’t already have it:
brew info automake
brew install automake
1.4 Compile and install Varnish¶
Execute the following to compile and install Varnish binaries:
cd ~/varnish/varnish-cache-varnish-6.0.6
./autogen.sh
./configure
make
sudo make install
Once the process has finished, Varnish binaries will be installed on
paths /usr/local/bin
and /usr/local/sbin
. If these are not
already under your environment PATH
variable, leave them be where
they are and just symlink them to your user’s bin
directory:
cd ~/bin
ln -s /usr/local/bin/varnishadm
ln -s /usr/local/bin/varnishhist
ln -s /usr/local/bin/varnishlog
ln -s /usr/local/bin/varnishncsa
ln -s /usr/local/bin/varnishstat
ln -s /usr/local/bin/varnishtest
ln -s /usr/local/bin/varnishtop
ln -s /usr/local/sbin/varnishd
2 Install Varnish modules¶
Aside from standard Varnish installation, you’ll need xkey
module as
well.
2.1 Clone repository¶
Clone modules repository into your home directory, position into it and
checkout branch 6.0-lts
:
cd ~/varnish
git clone https://github.com/varnish/varnish-modules.git
cd varnish-modules
git checkout 6.0-lts
2.2 Compile and install Varnish modules¶
Execute the following to compile and install module binaries:
cd ~/varnish/varnish-modules
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./bootstrap
./configure
make
sudo make install
3 Start¶
Now start the server in the foreground on the port 8081, replacing the example path to VCL with correct one for your project:
varnishd -f /path/to/configuration.vcl -a :8081 -s malloc,256M -F
With these options, configure purge_server
in your eZ Platform
installation to http://localhost:8081
.
If needed you can adjust the amount of memory given to the Varnish
server (256M in the above example). Stop the server when needed with
Control-C
.
4 Configure VCL¶
In instructions for macOS (above) Varnish is started from the command line when needed, and the VCL configuration is provided as a parameter to the starting command, so there is no need to configure it separately.