Difference between revisions of "Varnish"

From ArchWiki
Jump to: navigation, search
(recategorize to avoid redirect after the old category has been renamed (https://github.com/lahwaacz/wiki-scripts/blob/master/recategorize-over-redirect.py))
m (Changed the paragraph on how to override varnish defaults settings. Instead of directly editing systemd unit files it's better do use override files.)
Line 2: Line 2:
 
Varnish Cache is a web application accelerator also known as a caching HTTP reverse proxy. You install it in front of any server that speaks HTTP and configure it to cache the contents.
 
Varnish Cache is a web application accelerator also known as a caching HTTP reverse proxy. You install it in front of any server that speaks HTTP and configure it to cache the contents.
  
== Multiple backends ==
+
== Customizing Varnish ==
  
 
By default, varnish comes configured in {{ic|/etc/varnish/default.vcl}} to use '''localhost:8080''' as the only backend, default.vcl is called by the default systemd varnish.service file :
 
By default, varnish comes configured in {{ic|/etc/varnish/default.vcl}} to use '''localhost:8080''' as the only backend, default.vcl is called by the default systemd varnish.service file :
Line 23: Line 23:
 
ln -s '/usr/lib/systemd/system/varnish.service' '/etc/systemd/system/multi-user.target.wants/varnish.service'}}
 
ln -s '/usr/lib/systemd/system/varnish.service' '/etc/systemd/system/multi-user.target.wants/varnish.service'}}
  
instead copy it and edit to increase malloc default.vcl etc:
+
Override the defaults in the unit file by using systemctl edit.  
  
{{bc|$ cp '/usr/lib/systemd/system/varnish.service' '/etc/systemd/system/varnish.service'}}
+
{{bc|$ systemctl edit varnish.service}}
 +
To override ExecStart use an empty ExecStart line first and then an ExecStart with the new values. Eg.
  
then enable varnish and it will use your customized .service file instead:
+
[Service]
 
+
ExecStart=
{{bc|$ systemctl enable varnish
+
ExecStart=/usr/bin/varnishd -j unix,user=nobody -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1G
ln -s '/etc/systemd/system/varnish.service' '/etc/systemd/system/multi-user.target.wants/varnish.service'}}
 
  
 
Also, if you change the config file {{ic|/etc/varnish/default.vcl}} you'll need to reload varnish:
 
Also, if you change the config file {{ic|/etc/varnish/default.vcl}} you'll need to reload varnish:

Revision as of 13:58, 11 April 2017

Varnish Cache is a web application accelerator also known as a caching HTTP reverse proxy. You install it in front of any server that speaks HTTP and configure it to cache the contents.

Customizing Varnish

By default, varnish comes configured in /etc/varnish/default.vcl to use localhost:8080 as the only backend, default.vcl is called by the default systemd varnish.service file :

 /usr/lib/systemd/system/varnish.service 
[Unit]
Description=Web Application Accelerator
After=network.target

[Service]
ExecStart=/usr/bin/varnishd -a 0.0.0.0:80 -f /etc/varnish/default.vcl -T localhost:6082 -s malloc,64M -u nobody -g nobody -F
ExecReload=/usr/bin/varnish-vcl-reload

[Install]
WantedBy=multi-user.target

systemctl enable merely makes a symlink to the default

$ systemctl enable varnish
ln -s '/usr/lib/systemd/system/varnish.service' '/etc/systemd/system/multi-user.target.wants/varnish.service'

Override the defaults in the unit file by using systemctl edit.

$ systemctl edit varnish.service

To override ExecStart use an empty ExecStart line first and then an ExecStart with the new values. Eg.

[Service]
ExecStart=
ExecStart=/usr/bin/varnishd -j unix,user=nobody -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1G

Also, if you change the config file /etc/varnish/default.vcl you'll need to reload varnish:

$ systemctl reload varnish.service

or restart

$ systemctl restart varnish.service

Manual VCL load

If the previous VCL configuration reload failed, try loading the VCL file manually:

  1. Connect to the varnish console:
    $ varnishadm -T localhost:6082
  2. Load the default VCL. Make sure it has at least one backend:
    varnish> vcl.load default /etc/varnish/default.vcl
  3. Make it active:
    varnish> vcl.use default
  4. Start the child proccess (optional):
    varnish> start