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