author | Mahlon E. Smith <mahlon@laika.com> |
Wed, 09 Nov 2011 16:06:49 -0800 | |
changeset 20 | c5cbe1eb96f4 |
parent 18 | d4ce82194b64 |
child 22 | 822094314703 |
child 26 | 7b28fb383da2 |
permissions | -rw-r--r-- |
10
d07309450285
Get the ragel line parser properly tokenizing the input lines. Add a
Mahlon E. Smith <mahlon@martini.nu>
parents:
diff
changeset
|
1 |
|
d07309450285
Get the ragel line parser properly tokenizing the input lines. Add a
Mahlon E. Smith <mahlon@martini.nu>
parents:
diff
changeset
|
2 |
Volta |
d07309450285
Get the ragel line parser properly tokenizing the input lines. Add a
Mahlon E. Smith <mahlon@martini.nu>
parents:
diff
changeset
|
3 |
===== |
d07309450285
Get the ragel line parser properly tokenizing the input lines. Add a
Mahlon E. Smith <mahlon@martini.nu>
parents:
diff
changeset
|
4 |
|
13
23a242d7b7fa
1st iteration of volta actually doing something. Process the request,
Mahlon E. Smith <mahlon@laika.com>
parents:
10
diff
changeset
|
5 |
What is volta? |
18
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
6 |
-------------- |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
7 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
8 |
Volta is a high performance, low resource URI rewriter for use with the |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
9 |
Squid caching proxy server (http://www.squid-cache.org/.) With it, you |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
10 |
can dynamically alter URI requests that pass through Squid based on |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
11 |
various criteria. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
12 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
13 |
It uses a state machine to parse URIs and rules, and a constant database |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
14 |
to store and access those rules. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
15 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
16 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
17 |
Why is it called "volta"? |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
18 |
------------------------- |
13
23a242d7b7fa
1st iteration of volta actually doing something. Process the request,
Mahlon E. Smith <mahlon@laika.com>
parents:
10
diff
changeset
|
19 |
|
18
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
20 |
It's a type of old Italian music written in triple-time. Quick! |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
21 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
22 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
23 |
How fast is it? |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
24 |
--------------- |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
25 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
26 |
On a 2Ghz Xeon 5130, it can process a million squid requests against |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
27 |
10000 rules in less than 8 seconds, using about 800k of ram. On an |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
28 |
1.8Ghz Intel E4300, it can do it in 3 seconds. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
29 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
30 |
Your mileage may vary, but for most all intents and purposes the answer |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
31 |
is "definitely fast enough." |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
32 |
|
13
23a242d7b7fa
1st iteration of volta actually doing something. Process the request,
Mahlon E. Smith <mahlon@laika.com>
parents:
10
diff
changeset
|
33 |
|
10
d07309450285
Get the ragel line parser properly tokenizing the input lines. Add a
Mahlon E. Smith <mahlon@martini.nu>
parents:
diff
changeset
|
34 |
Configuring squid |
18
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
35 |
----------------- |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
36 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
37 |
You must enable url rewriting from within the squid.conf file. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
38 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
39 |
url_rewrite_program /usr/local/bin/volta |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
40 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
41 |
... and that's it. You may need some additional customization, like where |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
42 |
the volta database is stored on disk: |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
43 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
44 |
url_rewrite_program /usr/local/bin/volta -f /var/db/squid/volta.db |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
45 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
46 |
Busy servers: |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
47 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
48 |
Make sure rewrite_concurrency is disabled, volta is single threaded. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
49 |
Instead, just add more volta children. They are lightweight, so load em |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
50 |
up. A proxy at my $DAYJOB is in use by around 450 people, and we get by |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
51 |
nicely with 10 volta children. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
52 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
53 |
url_rewrite_concurrency 0 |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
54 |
url_rewrite_children 10 |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
55 |
|
13
23a242d7b7fa
1st iteration of volta actually doing something. Process the request,
Mahlon E. Smith <mahlon@laika.com>
parents:
10
diff
changeset
|
56 |
|
10
d07309450285
Get the ragel line parser properly tokenizing the input lines. Add a
Mahlon E. Smith <mahlon@martini.nu>
parents:
diff
changeset
|
57 |
Using volta |
18
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
58 |
----------- |
10
d07309450285
Get the ragel line parser properly tokenizing the input lines. Add a
Mahlon E. Smith <mahlon@martini.nu>
parents:
diff
changeset
|
59 |
|
18
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
60 |
See the INSTALL file for instructions on how to compile volta. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
61 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
62 |
Volta reads its rewrite rules from a local database. You can create the |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
63 |
rules in a text editor, then convert it to the database like so: |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
64 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
65 |
% volta -c rules.txt |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
66 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
67 |
You'll be left with a "volta.db" file in the current directory. Put it |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
68 |
wherever you please, and use the -f flag to point to it. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
69 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
70 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
71 |
Rule file syntax |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
72 |
---------------- |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
73 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
74 |
Volta's rule syntax is designed to be easy to parse by humans and |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
75 |
machines. Blank lines are skipped, as is any line that starts with the |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
76 |
'#' character, so you can keep the ascii version of your rules well |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
77 |
documented and in version control. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
78 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
79 |
When compiling the ruleset into the database format, volta detects |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
80 |
malformed rules and stops if there are any problems, leaving your |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
81 |
original database intact. You can change the ruleset at any time while |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
82 |
volta is running, and the new rules will take affect within about 10 |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
83 |
seconds. No need to restart squid! |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
84 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
85 |
There are two types of rules -- positive matches, and negative matches. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
86 |
Positive matches cause the rewrite, negative matches allow the original |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
87 |
request to pass. Rule order is consistent, top-down, first match wins. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
88 |
Fields are separated by any amount of whitespace (spaces or tabs.) |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
89 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
90 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
91 |
### Positive matches: |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
92 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
93 |
First field: the hostname to match. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
94 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
95 |
You can use an exact hostname (www.example.com), or the top level |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
96 |
domain (tld) if you want to match everything under a specific host |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
97 |
(example.com.) You can also use a single '*' to match every request, |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
98 |
though this essentially bypasses a lot of what makes volta quick, it |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
99 |
is included for completeness. You may have an unlimited amount of |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
100 |
rules per hostname. Hostnames are compared without case sensitivity. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
101 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
102 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
103 |
Second field: the path to match. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
104 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
105 |
This can be an exact match ('/path/to/something.html'), a regular |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
106 |
expression ('\.(jpg|gif|png)$'), or a single '*' to match for any |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
107 |
path. Regular expressions are matches without case sensitivity. There |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
108 |
is currently no support for capturing, though this may be added in |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
109 |
a future release. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
110 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
111 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
112 |
Third field: The redirect code and url to rewrite to. |
13
23a242d7b7fa
1st iteration of volta actually doing something. Process the request,
Mahlon E. Smith <mahlon@laika.com>
parents:
10
diff
changeset
|
113 |
|
18
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
114 |
Any pieces of a url that are omitted are automatically replaced |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
115 |
with the original request's element -- the exception is a hostname, |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
116 |
which is required. If you omit a redirect code, the URL rewrite is |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
117 |
transparent to the client. You can attach a 301: or 302: prefix to |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
118 |
cause a permanent or temporary code to be respectively sent, instead. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
119 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
120 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
121 |
### Negative matches: |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
122 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
123 |
First field: the hostname to match. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
124 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
125 |
See above -- all the same rules apply. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
126 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
127 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
128 |
Second field: the path to match. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
129 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
130 |
See above -- all the same rules apply. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
131 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
132 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
133 |
Third field: the 'negative' marker. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
134 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
135 |
This is simply the '-' character, that signals to volta that this is |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
136 |
a negative matching rule. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
137 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
138 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
139 |
You can easily test your rules by running volta on the command line, and |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
140 |
pasting URLs into it. Boost the debug level (-d4) if you're having any issues. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
141 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
142 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
143 |
Examples |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
144 |
-------- |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
145 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
146 |
Rewrite all requests to Google to the SSL version: |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
147 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
148 |
google.com * 302:https://www.google.com |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
149 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
150 |
This will redirect the request "http://www.google.com/search?q=test" to |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
151 |
"https://www.google.com/search?q=test". |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
152 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
153 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
154 |
Transparently alter all uploaded images on imgur to be my face: :) |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
155 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
156 |
i.imgur.com \.(gif|png|jpg)$ http://www.martini.nu/images/mahlon.jpg |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
157 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
158 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
159 |
Expand a local, non qualified hostname to a FQDN (useful alongside the |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
160 |
'dns_defnames' squid setting to enforce browser proxy behaviors): |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
161 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
162 |
local-example * local-example.company.com |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
163 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
164 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
165 |
Cause all blog content except for 2011 posts to permanently redirect to |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
166 |
an archival page: |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
167 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
168 |
martini.nu /blog/2011 - |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
169 |
martini.nu /blog 301:martini.nu/content-archived.html |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
170 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
171 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
172 |
Turn off rewriting for specific network segment or IP address: |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
173 |
|
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
174 |
Squid has this ability built in -- see the 'url_rewrite_access' setting. |
d4ce82194b64
- 1st pass at documentation with the README.
Mahlon E. Smith <mahlon@laika.com>
parents:
15
diff
changeset
|
175 |