r4787 - trunk/varnish-cache/doc/sphinx/faq

andersb at varnish-cache.org andersb at varnish-cache.org
Mon May 10 01:15:20 CEST 2010


Author: andersb
Date: 2010-05-10 01:15:19 +0200 (Mon, 10 May 2010)
New Revision: 4787

Modified:
   trunk/varnish-cache/doc/sphinx/faq/configuration.rst
   trunk/varnish-cache/doc/sphinx/faq/general.rst
   trunk/varnish-cache/doc/sphinx/faq/old-faq.rst
Log:
More clean-up.

Modified: trunk/varnish-cache/doc/sphinx/faq/configuration.rst
===================================================================
--- trunk/varnish-cache/doc/sphinx/faq/configuration.rst	2010-05-09 18:47:59 UTC (rev 4786)
+++ trunk/varnish-cache/doc/sphinx/faq/configuration.rst	2010-05-09 23:15:19 UTC (rev 4787)
@@ -2,6 +2,8 @@
 Configuration
 %%%%%%%%%%%%%%%
 
+.. _faq-vcl:
+
 VCL
 ===
 
@@ -23,3 +25,28 @@
 * do a "vcl.load <configname> <filename>" in managment interface. <configname> is whatever you would like to call your new configuration.
 * do a "vcl.use <configname>" to start using your new config.
 
+**Should I use ''pipe'' or ''pass'' in my VCL code? What is the difference?**
+
+When varnish does a ``pass`` it acts like a normal HTTP proxy. It
+reads the request and pushes it onto the backend. The next HTTP
+request can then be handled like any other.
+
+``pipe`` is only used when Varnish for some reason can't handle the
+``pass``. ``pipe`` reads the request, pushes in onty the backend
+_only_ pushes bytes back and forth, with no other actions taken.
+
+Since most HTTP clients do pipeline several requests into one
+connection this might give you an undesirable result - as every
+subsequent request will reuse the existing ``pipe``.
+
+Varnish versions prior to 2.0 does not support handling a request body
+with ``pass`` mode, so in those releases ``pipe`` is required for
+correct handling.
+
+In 2.0 and later, ``pass`` will handle the request body correctly.
+
+If you get 503 errors when making a request which is ``pass`` ed, make sure
+that you're specifying the backend before returning from vcl_recv with ``pass``.
+
+
+

Modified: trunk/varnish-cache/doc/sphinx/faq/general.rst
===================================================================
--- trunk/varnish-cache/doc/sphinx/faq/general.rst	2010-05-09 18:47:59 UTC (rev 4786)
+++ trunk/varnish-cache/doc/sphinx/faq/general.rst	2010-05-09 23:15:19 UTC (rev 4787)
@@ -49,7 +49,53 @@
 kernel to decide which process gets to use how much RAM to map the
 virtual address-space of the process.
 
+**How do I instruct varnish to ignore the query parameters and only cache one instance of an object?**
 
+This can be achieved by removing the query parameters using a regexp::
+
+        sub vcl_recv {
+            set req.url = regsub(req.url, "\?.*", "");
+        }
+
+**How can I force a refresh on a object cached by varnish?**
+
+Refreshing is often called `purging <http://dictionary.reference.com/browse/PURGE>`_ a document.  You can purge at least 2 different ways in Varnish:
+
+1. Command line
+
+        From the command line you can write::
+
+                url.purge ^/$
+
+        to purge your / document.  As you might see url.purge takes an `regular expression <http://en.wikipedia.org/wiki/Regular_expression>`_
+        as its argument. Hence the ``^`` and ``$`` at the front and end.  If the ``^`` is ommited, all the documents ending in a ``/`` in the cache would be deleted.
+
+        So to delete all the documents in the cache, write::
+
+                url.purge .*
+
+        at the command line.
+
+2. HTTP PURGE
+
+        VCL code to allow HTTP PURGE is to be found `here <http://www.varnish-cache.org/wiki/VCLExamplePurging>`_. Note that this method does not support wildcard purging.
+
+**How can I debug the requests of a single client?**
+
+The "varnishlog" utility may produce a horrendous amount of output.  To be able debug our own traffic can be useful.
+
+The ReqStart token will include the client IP address.  To see log entries matching this, type::
+
+        $ varnishlog -c -o ReqStart 192.0.2.123
+
+To see the backend requests generated by a client IP address, we can match on the TxHeader token, since the IP address of the client is included in the X-Forwarded-For header in the request sent to the backend.
+
+At the shell command line, type::
+
+        $ varnishlog -b -o TxHeader 192.0.2.123
+
+
+
 Where...
 ========
 
@@ -162,7 +208,15 @@
 
 See the `PCRE man pages <http://www.pcre.org/pcre.txt>`_ for more information.
 
+**Are regular expressions case sensitive or not? Can I change it?**
 
+In 2.1 and newer, regular expressions are case sensitive by default.  In earlier versions, they were case insensitive.
+
+To change this for a single regex in 2.1, use ``(?i)`` at the start.
+
+See the `PCRE man pages <http://www.pcre.org/pcre.txt>`_ for more information.
+
+
 **Why does the ``Via:`` header say 1.1 in Varnish 2.1.x?**
 
 The number in the ``Via:`` header is the HTTP protocol version
@@ -184,15 +238,10 @@
 The three point describes happens to your backend system when you
 put Varnish in front of it.
 
-How...
-======
+**Why does Varnish require the system to have a C compiler?**
 
-**How do I instruct varnish to ignore the query parameters and only cache one instance of an object?**
+The :ref:`VCL <faq-vcl>` compiler generates C source as output (your config file), and uses the systems C-compiler to compile that into a shared library.  If there is no C compiler, Varnish will not work.
 
-This can be achieved by removing the query parameters using a regexp::
+**Isn't that security problem?**
 
-        sub vcl_recv {
-            set req.url = regsub(req.url, "\?.*", "");
-        }
-
-
+The days when you could prevent people from running non-approved programs by removing the C compiler from your system ended roughly with the VAX 11/780 computer.

Modified: trunk/varnish-cache/doc/sphinx/faq/old-faq.rst
===================================================================
--- trunk/varnish-cache/doc/sphinx/faq/old-faq.rst	2010-05-09 18:47:59 UTC (rev 4786)
+++ trunk/varnish-cache/doc/sphinx/faq/old-faq.rst	2010-05-09 23:15:19 UTC (rev 4787)
@@ -6,89 +6,8 @@
 
 
 
-        === Does Varnish require the system to have a C compiler? ===
-
-        Yes.  The VCL compiler generates C source as output, and uses the systems C-compiler to compile that into a shared library.  If there is no C compiler, Varnish will not work.
-
-        === ... Isn't that security problem? ===
-
-        The days when you could prevent people from running non-approved programs by removing the C compiler from your system ended roughly with the VAX 11/780 computer.
-
-        === Should I use ''pipe'' or ''pass'' in my VCL code? What is the difference? ===
-
-        When varnish does a ''pass'' it acts like a normal HTTP proxy. It
-        reads the request and pushes it onto the backend. The next HTTP
-        request can then be handled like any other.
-
-        ''pipe'' is only used when Varnish for some reason can't handle the
-        ''pass''. ''pipe'' reads the request, pushes in onty the backend
-        _only_ pushes bytes back and forth, with no other actions taken.
-
-        Since most HTTP clients do pipeline several requests into one
-        connection this might give you an undesirable result - as every
-        subsequent request will reuse the existing ''pipe''.
-
-        Varnish versions prior to 2.0 does not support handling a request body
-        with ''pass'' mode, so in those releases ''pipe'' is required for
-        correct handling.
-
-        In 2.0 and later, ''pass'' will handle the request body correctly.
-
-        If you get 503 errors when making a request which is ''pass''ed, make sure
-        that you're specifying the backend before returning from vcl_recv with ''pass''.
-
-
-        === Are regular expressions case sensitive or not? Can I change it? ===
-
-        In 2.1 and newer, regular expressions are case sensitive by default.  In earlier versions, they were case insensitive.
-
-        To change this for a single regex in 2.1, use "(?i)" at the start.  See the [http://www.pcre.org/pcre.txt PCRE man pages] for more information.
-
         == How do I... ==
 
-        === How can I force a refresh on a object cached by varnish? ===
-
-        Refreshing is often called [http://dictionary.reference.com/browse/PURGE purging] a document.  You can purge at least 2 different ways in Varnish:
-
-        1. From the command line you can write:
-
-        {{{
-        url.purge ^/$
-        }}}
-
-        to purge your '''/''' document.  As you might see url.purge takes an
-        [http://en.wikipedia.org/wiki/Regular_expression regular expression]
-        as its argument. Hence the !^ and $ at the front and end.  If the !^ is ommited, all the documents ending in a / in the cache would be deleted.
-
-        So to delete all the documents in the cache, write:
-
-        {{{
-        url.purge .*
-        }}}
-
-        at the command line.
-
-        2. HTTP PURGE
-
-        VCL code to allow HTTP PURGE [wiki:VCLExamples is to be found here]. Note that this method does not support wildcard purging.
-
-        === How can I debug the requests of a single client? ===
-
-        The "varnishlog" utility may produce a horrendous amount of output.  To be able debug our own traffic can be useful.
-
-        The ReqStart token will include the client IP address.  To see log entries matching this, type:
-
-        {{{
-        $ varnishlog -c -o ReqStart 192.0.2.123
-        }}}
-
-        To see the backend requests generated by a client IP address, we can match on the TxHeader token, since the IP address of the client is included in the X-Forwarded-For header in the request sent to the backend.
-
-        At the shell command line, type:
-        {{{
-        $ varnishlog -b -o TxHeader 192.0.2.123
-        }}}
-
         === How can I rewrite URLS before they are sent to the backend? ===
 
         You can use the "regsub()" function to do this.  Here's an example for zope, to rewrite URL's for the virtualhostmonster:




More information about the varnish-commit mailing list