Commit da7d47ef authored by Per Buer's avatar Per Buer

various cleanups

parent 93c5e395
......@@ -27,7 +27,7 @@ When a new configuration is loaded, the varnishd management process
translates the VCL code to C and compiles it to a shared object which
is then dynamically linked into the server process.
.. include:: ../include/vcl-syntax.rst
.. .. include:: ../include/vcl-syntax.rst
.. include:: ../include/vcl-backends.rst
......
......@@ -11,7 +11,7 @@ The guide is split into short chapters, each chapter explaining a
separate topic.
.. toctree::
:maxdepth: 3
:maxdepth: 2
configuration
vcl
......
......@@ -7,10 +7,7 @@ Varnish has a concept of "backend" or "origin" servers. A backend
server is the server providing the content Varnish will accelerate.
Our first task is to tell Varnish where it can find its content. Start
your favorite text editor and open the varnish default configuration
file. If you installed from source this is
/usr/local/etc/varnish/default.vcl, if you installed from a package it
is probably /etc/varnish/default.vcl.
your favorite text editor and open the relevant VCL file.
Somewhere in the top there will be a section that looks a bit like this.::
......
Manipulating request headers in VCL
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lets say we want to remove the cookie for all objects in the /images
directory of our web server::
sub vcl_recv {
if (req.url ~ "^/images") {
unset req.http.cookie;
}
}
Now, when the request is handled to the backend server there will be
no cookie header. The interesting line is the one with the
if-statement. It matches the URL, taken from the request object, and
matches it against the regular expression. Note the match operator. If
it matches the Cookie: header of the request is unset (deleted).
Altering the backend response
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here we override the TTL of a object comming from the backend if it
matches certain criteria::
sub vcl_fetch {
if (req.url ~ "\.(png|gif|jpg)$") {
unset beresp.http.set-cookie;
set beresp.ttl = 1h;
}
}
.. XXX ref hit-for-pass
We also remove any Set-Cookie headers in order to avoid a hit-for-pass
object to be created.
ACLs
~~~~
You create a named access control list with the *acl* keyword. You can match
the IP address of the client against an ACL with the match operator.::
# Who is allowed to purge....
acl local {
"localhost";
"192.168.1.0"/24; /* and everyone on the local network */
! "192.168.1.23"; /* except for the dialin router */
}
sub vcl_recv {
if (req.method == "PURGE") {
if (client.ip ~ local) {
return(lookup);
}
}
}
sub vcl_hit {
if (req.method == "PURGE") {
set obj.ttl = 0s;
error 200 "Purged.";
}
}
sub vcl_miss {
if (req.method == "PURGE") {
error 404 "Not in cache.";
}
}
......@@ -7,8 +7,9 @@ capabilites of the VCL language.
.. toctree::
vcl-example1-manipulating-headers
vcl-example2-manipulating-responses
vcl-example3-acls
vcl-example-manipulating-headers
vcl-example-manipulating-responses
vcl-example-acls
vcl-example-websockets
......@@ -27,7 +27,7 @@ code commented out in default.vcl that ships with Varnish Cache.
.. _users-guide-vcl_fetch_actions:
.. toctree::
:maxdepth: 2
:maxdepth: 1
vcl-syntax
vcl-built-in-subs
......
Using Websockets
----------------
Implementing websocket support
------------------------------
Websockets is a technology for creating a bidirectional stream-based channel over HTTP.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment