Configure Varnish for Ghost

NOTE: The steps below assume that Ghost is already running at the root URL of the server, such as at http://ghost.bitnamiapp.com/.

Follow these steps:

  • Log in to the server console using SSH.

  • Enable and start Varnish. Skip this step if you selected “Varnish” as part of the “Development Options” when creating the server. The Varnish service will start on port 81 by default.

  • Backup the Varnish configuration file:

    $ sudo cp /opt/bitnami/varnish/etc/varnish/default.vcl /opt/bitnami/varnish/etc/varnish/default.vcl.backup
  • Add the Ghost-specific Varnish configuration by executing the following commands:

    • For Varnish < 4.0:

      $ sudo cp ghost.vcl /opt/bitnami/varnish/etc/varnish/default.vcl
      $ sudo sed -i 's/port = "[^"]*"/port = "80"/g' /opt/bitnami/varnish/etc/varnish/default.vcl
    • For Varnish >= 4.0:

      $ sudo cp ghost.v4 /opt/bitnami/varnish/etc/varnish/default.vcl
      $ sudo sed -i 's/port = "[^"]*"/port = "80"/g' /opt/bitnami/varnish/etc/varnish/default.vcl
  • Restart Varnish:

    $ cd /opt/bitnami
    $ sudo ./ctlscript.sh restart varnish
  • Open port 81 in the server firewall.

  • Check if your website is being served properly by Varnish on port 81 by adding :81 to the domain name in your browser - for example, http://xyz.bitnamiapp.com:81/.

  • If Varnish is working correctly, switch the Apache and Varnish ports and activate Varnish on port 80:

    $ sudo sed -i 's/^\s*Listen .*$/Listen 81/g' apache2/conf/httpd.conf
    $ sudo sed -i 's/\:80/\:81/g' apache2/conf/bitnami/bitnami.conf
    $ sudo sed -i 's/at port.*"/at port 81"/g' apache2/scripts/ctl.sh
    $ sudo sed -i 's/\:80/\:81/g' apps/*/conf/httpd-vhosts.conf
    $ sudo sed -i 's/=80/=81/g' properties.ini
    $ sudo sed -i 's/port\s*=\s*"[^"]*"/port = "81"/g' varnish/etc/varnish/default.vcl
    $ sudo sed -i 's/VARNISH_PORT=.*$/VARNISH_PORT=80/g' varnish/scripts/ctl.sh
    $ sudo ./ctlscript.sh restart
  • Remove the firewall rule for port 81.

Download the different files used in the example as a reference:

Last modification September 10, 2018