Put Varnish on port 80

Until now we've been running with Varnish on a high port which is great for testing purposes. Let's now put Varnish on the default HTTP port 80.

First we stop varnish: service varnish stop

Now we need to edit the configuration file that starts Varnish.

Debian/Ubuntu (legacy)

On older Debian/Ubuntu this is /etc/default/varnish. In the file you'll find some text that looks like this:

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

Change it to:

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

Debian (v8+) / Ubuntu (v15.04+)

On more recent Debian and Ubuntu systems this is configured in the systemd service file.

Applying changes to the default service is best done by creating a new file /etc/systemd/system/varnish.service.d/customexec.conf:

[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m

This will override the ExecStart part of the default configuration shipped with Varnish Cache.

Run systemctl daemon-reload to make sure systemd picks up the new configuration before restarting Varnish.

Red Hat Enterprise Linux / CentOS

On Red Hat/CentOS you can find a similar configuration file in /etc/sysconfig/varnish.

Restarting Varnish again

Once the change is done, restart Varnish: service varnish start.

Now everyone accessing your site will be accessing through Varnish.