[master] 7f501a1 Examples are back

Per Buer perbu at varnish-cache.org
Thu Mar 7 10:36:33 CET 2013


commit 7f501a1c5d39f99655a3138731bb70358fe2fce2
Author: Per Buer <perbu at varnish-software.com>
Date:   Thu Mar 7 10:37:33 2013 +0100

    Examples are back

diff --git a/doc/sphinx/users-guide/vcl-example-acls.rst b/doc/sphinx/users-guide/vcl-example-acls.rst
new file mode 100644
index 0000000..3d0226a
--- /dev/null
+++ b/doc/sphinx/users-guide/vcl-example-acls.rst
@@ -0,0 +1,34 @@
+
+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.";
+    }
+  }
diff --git a/doc/sphinx/users-guide/vcl-example-manipulating-headers.rst b/doc/sphinx/users-guide/vcl-example-manipulating-headers.rst
new file mode 100644
index 0000000..35dcb1e
--- /dev/null
+++ b/doc/sphinx/users-guide/vcl-example-manipulating-headers.rst
@@ -0,0 +1,21 @@
+
+
+
+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). 
+
diff --git a/doc/sphinx/users-guide/vcl-example-manipulating-responses.rst b/doc/sphinx/users-guide/vcl-example-manipulating-responses.rst
new file mode 100644
index 0000000..7362789
--- /dev/null
+++ b/doc/sphinx/users-guide/vcl-example-manipulating-responses.rst
@@ -0,0 +1,19 @@
+
+
+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.
diff --git a/doc/sphinx/users-guide/vcl-example-websockets.rst b/doc/sphinx/users-guide/vcl-example-websockets.rst
new file mode 100644
index 0000000..7217b88
--- /dev/null
+++ b/doc/sphinx/users-guide/vcl-example-websockets.rst
@@ -0,0 +1,20 @@
+
+Implementing websocket support
+------------------------------
+
+Websockets is a technology for creating a bidirectional stream-based channel over HTTP.
+
+To run websockets through Varnish you need to pipe it, and copy the Upgrade header. Use the following
+VCL config to do so::
+
+    sub vcl_pipe {
+         if (req.http.upgrade) {
+             set bereq.http.upgrade = req.http.upgrade;
+         }
+    }
+    sub vcl_recv {
+         if (req.http.Upgrade ~ "(?i)websocket") {
+             return (pipe);
+         }
+    }
+



More information about the varnish-commit mailing list