]> git.ipfire.org Git - thirdparty/squid.git/blame - src/cf.data.pre
xmemset was removed from Squid sources recently
[thirdparty/squid.git] / src / cf.data.pre
CommitLineData
9cef6668 1#
6845f129 2# SQUID Web Proxy Cache http://www.squid-cache.org/
9cef6668 3# ----------------------------------------------------------
4#
2b6662ba 5# Squid is the result of efforts by numerous individuals from
6# the Internet community; see the CONTRIBUTORS file for full
7# details. Many organizations have provided support for Squid's
8# development; see the SPONSORS file for full details. Squid is
9# Copyrighted (C) 2000 by the Regents of the University of
10# California; see the COPYRIGHT file for full details. Squid
11# incorporates software developed and/or copyrighted by other
12# sources; see the CREDITS file for full details.
9cef6668 13#
14# This program is free software; you can redistribute it and/or modify
15# it under the terms of the GNU General Public License as published by
16# the Free Software Foundation; either version 2 of the License, or
17# (at your option) any later version.
96d88dcb 18#
9cef6668 19# This program is distributed in the hope that it will be useful,
20# but WITHOUT ANY WARRANTY; without even the implied warranty of
21# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22# GNU General Public License for more details.
96d88dcb 23#
9cef6668 24# You should have received a copy of the GNU General Public License
25# along with this program; if not, write to the Free Software
26# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
27#
28
0f74202c 29COMMENT_START
ad12fb4b 30 WELCOME TO @SQUID@
cccac0a2 31 ----------------------------
5945964d
AJ
32
33 This is the documentation for the Squid configuration file.
34 This documentation can also be found online at:
35 http://www.squid-cache.org/Doc/config/
36
37 You may wish to look at the Squid home page and wiki for the
38 FAQ and other documentation:
39 http://www.squid-cache.org/
40 http://wiki.squid-cache.org/SquidFaq
41 http://wiki.squid-cache.org/ConfigExamples
42
43 This documentation shows what the defaults for various directives
44 happen to be. If you don't need to change the default, you should
45 leave the line out of your squid.conf in most cases.
46
47 In some cases "none" refers to no default setting at all,
48 while in other cases it refers to the value of the option
49 - the comments for that keyword indicate if this is the case.
debd9a31 50
cccac0a2 51COMMENT_END
3a278cb8 52
592a09dc 53COMMENT_START
54 Configuration options can be included using the "include" directive.
5945964d 55 Include takes a list of files to include. Quoting and wildcards are
592a09dc 56 supported.
57
58 For example,
59
60 include /path/to/included/file/squid.acl.config
61
62 Includes can be nested up to a hard-coded depth of 16 levels.
63 This arbitrary restriction is to prevent recursive include references
64 from causing Squid entering an infinite loop whilst trying to load
65 configuration files.
d4a3e179
AR
66
67
5735d30b
AR
68 Conditional configuration
69
70 If-statements can be used to make configuration directives
71 depend on conditions:
72
73 if <CONDITION>
74 ... regular configuration directives ...
75 [else
76 ... regular configuration directives ...]
77 endif
78
79 The else part is optional. The keywords "if", "else", and "endif"
80 must be typed on their own lines, as if they were regular
81 configuration directives.
82
5945964d
AJ
83 NOTE: An else-if condition is not supported.
84
5735d30b
AR
85 These individual conditions types are supported:
86
87 true
88 Always evaluates to true.
89 false
90 Always evaluates to false.
91 <integer> = <integer>
92 Equality comparison of two integer numbers.
93
94
d4a3e179
AR
95 SMP-Related Macros
96
97 The following SMP-related preprocessor macros can be used.
98
99 ${process_name} expands to the current Squid process "name"
100 (e.g., squid1, squid2, or cache1).
101
102 ${process_number} expands to the current Squid process
103 identifier, which is an integer number (e.g., 1, 2, 3) unique
104 across all Squid processes.
592a09dc 105COMMENT_END
106
76f44481
AJ
107# Options Removed in 3.2
108NAME: ignore_expect_100
109TYPE: obsolete
110DOC_START
111 Remove this line. The HTTP/1.1 feature is now fully supported by default.
112DOC_END
113
6e095b46
AJ
114NAME: dns_v4_fallback
115TYPE: obsolete
116DOC_START
117 Remove this line.
118DOC_END
119
76f44481
AJ
120NAME: ftp_list_width
121TYPE: obsolete
122DOC_START
123 Remove this line. Configure FTP page display using the CSS controls in errorpages.css instead.
124DOC_END
125
38493d67
AJ
126NAME: maximum_single_addr_tries
127TYPE: obsolete
128DOC_START
129 Replaced by connect_retries. The behaviour has changed, please read the documentation before altering.
130DOC_END
131
76f44481
AJ
132NAME: url_rewrite_concurrency
133TYPE: obsolete
134DOC_START
135 Remove this line. Set the 'concurrency=' option of url_rewrite_children instead.
136DOC_END
137
138# Options Removed in 3.1
139NAME: dns_testnames
140TYPE: obsolete
141DOC_START
142 Remove this line. DNS is no longer tested on startup.
143DOC_END
144
145NAME: extension_methods
146TYPE: obsolete
147DOC_START
148 Remove this line. All valid methods for HTTP are accepted by default.
149DOC_END
150
c72a2049
AJ
151# 2.7 Options Removed/Replaced in 3.2
152NAME: zero_buffers
153TYPE: obsolete
154DOC_NONE
155
76f44481
AJ
156# 2.7 Options Removed/Replaced in 3.1
157NAME: incoming_rate
158TYPE: obsolete
159DOC_NONE
160
161NAME: server_http11
162TYPE: obsolete
163DOC_START
164 Remove this line. HTTP/1.1 is supported by default.
165DOC_END
166
167NAME: upgrade_http0.9
168TYPE: obsolete
169DOC_START
170 Remove this line. ICY/1.0 streaming protocol is supported by default.
171DOC_END
172
173NAME: zph_local zph_mode zph_option zph_parent zph_sibling
174TYPE: obsolete
175DOC_START
176 Alter these entries. Use the qos_flows directive instead.
177DOC_END
178
179# Options Removed in 3.0
180NAME: header_access
181TYPE: obsolete
182DOC_START
183 Since squid-3.0 replace with request_header_access or reply_header_access
184 depending on whether you wish to match client requests or server replies.
185DOC_END
186
187NAME: httpd_accel_no_pmtu_disc
188TYPE: obsolete
189DOC_START
190 Since squid-3.0 use the 'disable-pmtu-discovery' flag on http_port instead.
191DOC_END
192
5473c134 193COMMENT_START
41bd17a4 194 OPTIONS FOR AUTHENTICATION
5473c134 195 -----------------------------------------------------------------------------
196COMMENT_END
197
41bd17a4 198NAME: auth_param
199TYPE: authparam
2f1431ea 200IFDEF: USE_AUTH
5817ee13 201LOC: Auth::TheConfig
cccac0a2 202DEFAULT: none
203DOC_START
41bd17a4 204 This is used to define parameters for the various authentication
205 schemes supported by Squid.
cccac0a2 206
41bd17a4 207 format: auth_param scheme parameter [setting]
cccac0a2 208
41bd17a4 209 The order in which authentication schemes are presented to the client is
210 dependent on the order the scheme first appears in config file. IE
211 has a bug (it's not RFC 2617 compliant) in that it will use the basic
212 scheme if basic is the first entry presented, even if more secure
213 schemes are presented. For now use the order in the recommended
214 settings section below. If other browsers have difficulties (don't
215 recognize the schemes offered even if you are using basic) either
216 put basic first, or disable the other schemes (by commenting out their
217 program entry).
cccac0a2 218
41bd17a4 219 Once an authentication scheme is fully configured, it can only be
220 shutdown by shutting squid down and restarting. Changes can be made on
221 the fly and activated with a reconfigure. I.E. You can change to a
222 different helper, but not unconfigure the helper completely.
cccac0a2 223
41bd17a4 224 Please note that while this directive defines how Squid processes
225 authentication it does not automatically activate authentication.
226 To use authentication you must in addition make use of ACLs based
227 on login name in http_access (proxy_auth, proxy_auth_regex or
228 external with %LOGIN used in the format tag). The browser will be
229 challenged for authentication on the first such acl encountered
230 in http_access processing and will also be re-challenged for new
231 login credentials if the request is being denied by a proxy_auth
232 type acl.
cccac0a2 233
41bd17a4 234 WARNING: authentication can't be used in a transparently intercepting
235 proxy as the client then thinks it is talking to an origin server and
236 not the proxy. This is a limitation of bending the TCP/IP protocol to
237 transparently intercepting port 80, not a limitation in Squid.
b3567eb5
FC
238 Ports flagged 'transparent', 'intercept', or 'tproxy' have
239 authentication disabled.
cccac0a2 240
41bd17a4 241 === Parameters for the basic scheme follow. ===
cccac0a2 242
41bd17a4 243 "program" cmdline
244 Specify the command for the external authenticator. Such a program
5269ec0e
AJ
245 reads a line containing "username password" and replies with one of
246 three results:
247
248 OK
249 the user exists.
250
251 ERR
252 the user does not exist.
253
254 BH
255 An internal error occured in the helper, preventing
256 a result being identified.
257
258 "ERR" and "BH" results may optionally be followed by message="..."
259 containing a description available as %m in the returned error page.
260
b3567eb5
FC
261 If you use an authenticator, make sure you have 1 acl of type
262 proxy_auth.
cccac0a2 263
41bd17a4 264 By default, the basic authentication scheme is not used unless a
265 program is specified.
cccac0a2 266
41bd17a4 267 If you want to use the traditional NCSA proxy authentication, set
268 this line to something like
307b83b7 269
41bd17a4 270 auth_param basic program @DEFAULT_PREFIX@/libexec/ncsa_auth @DEFAULT_PREFIX@/etc/passwd
9e7dbc51 271
d2a89ac1
AJ
272 "utf8" on|off
273 HTTP uses iso-latin-1 as characterset, while some authentication
274 backends such as LDAP expects UTF-8. If this is set to on Squid will
275 translate the HTTP iso-latin-1 charset to UTF-8 before sending the
276 username & password to the helper.
277
7353861b 278 "children" numberofchildren [startup=N] [idle=N] [concurrency=N]
48d54e4d 279 The maximum number of authenticator processes to spawn. If you start too few
41bd17a4 280 Squid will have to wait for them to process a backlog of credential
281 verifications, slowing it down. When password verifications are
282 done via a (slow) network you are likely to need lots of
283 authenticator processes.
48d54e4d
AJ
284
285 The startup= and idle= options permit some skew in the exact amount
64d2327b
AJ
286 run. A minimum of startup=N will begin during startup and reconfigure.
287 Squid will start more in groups of up to idle=N in an attempt to meet
48d54e4d
AJ
288 traffic needs and to keep idle=N free above those traffic needs up to
289 the maximum.
290
7353861b
HN
291 The concurrency= option sets the number of concurrent requests the
292 helper can process. The default of 0 is used for helpers who only
293 supports one request at a time. Setting this to a number greater than
294 0 changes the protocol used to include a channel number first on the
295 request/response line, allowing multiple requests to be sent to the
296 same helper in parallell without wating for the response.
41bd17a4 297 Must not be set unless it's known the helper supports this.
7353861b
HN
298
299 auth_param basic children 20 startup=0 idle=1
0fdafae7 300
41bd17a4 301 "realm" realmstring
302 Specifies the realm name which is to be reported to the
303 client for the basic proxy authentication scheme (part of
304 the text the user will see when prompted their username and
305 password). There is no default.
306 auth_param basic realm Squid proxy-caching web server
d1b63fc8 307
41bd17a4 308 "credentialsttl" timetolive
309 Specifies how long squid assumes an externally validated
310 username:password pair is valid for - in other words how
311 often the helper program is called for that user. Set this
312 low to force revalidation with short lived passwords. Note
313 setting this high does not impact your susceptibility
314 to replay attacks unless you are using an one-time password
315 system (such as SecureID). If you are using such a system,
316 you will be vulnerable to replay attacks unless you also
317 use the max_user_ip ACL in an http_access rule.
cccac0a2 318
41bd17a4 319 "casesensitive" on|off
320 Specifies if usernames are case sensitive. Most user databases are
321 case insensitive allowing the same username to be spelled using both
322 lower and upper case letters, but some are case sensitive. This
323 makes a big difference for user_max_ip ACL processing and similar.
324 auth_param basic casesensitive off
cccac0a2 325
41bd17a4 326 === Parameters for the digest scheme follow ===
cccac0a2 327
41bd17a4 328 "program" cmdline
329 Specify the command for the external authenticator. Such
330 a program reads a line containing "username":"realm" and
5269ec0e
AJ
331 replies with one of three results:
332
333 OK ha1="..."
334 the user exists. The ha1= key is mandatory and
335 contains the appropriate H(A1) value, hex encoded.
336 See rfc 2616 for the definition of H(A1).
337
338 ERR
339 the user does not exist.
340
341 BH
342 An internal error occured in the helper, preventing
343 a result being identified.
344
345 "ERR" and "BH" results may optionally be followed by message="..."
346 containing a description available as %m in the returned error page.
cccac0a2 347
41bd17a4 348 By default, the digest authentication scheme is not used unless a
349 program is specified.
b8c0c06d 350
41bd17a4 351 If you want to use a digest authenticator, set this line to
352 something like
cccac0a2 353
7ce93108 354 auth_param digest program @DEFAULT_PREFIX@/bin/digest_pw_auth @DEFAULT_PREFIX@/etc/digpass
cccac0a2 355
d2a89ac1
AJ
356 "utf8" on|off
357 HTTP uses iso-latin-1 as characterset, while some authentication
358 backends such as LDAP expects UTF-8. If this is set to on Squid will
359 translate the HTTP iso-latin-1 charset to UTF-8 before sending the
360 username & password to the helper.
361
7353861b 362 "children" numberofchildren [startup=N] [idle=N] [concurrency=N]
48d54e4d 363 The maximum number of authenticator processes to spawn (default 5).
41bd17a4 364 If you start too few Squid will have to wait for them to
365 process a backlog of H(A1) calculations, slowing it down.
366 When the H(A1) calculations are done via a (slow) network
367 you are likely to need lots of authenticator processes.
48d54e4d
AJ
368
369 The startup= and idle= options permit some skew in the exact amount
64d2327b
AJ
370 run. A minimum of startup=N will begin during startup and reconfigure.
371 Squid will start more in groups of up to idle=N in an attempt to meet
48d54e4d
AJ
372 traffic needs and to keep idle=N free above those traffic needs up to
373 the maximum.
374
7353861b
HN
375 The concurrency= option sets the number of concurrent requests the
376 helper can process. The default of 0 is used for helpers who only
377 supports one request at a time. Setting this to a number greater than
378 0 changes the protocol used to include a channel number first on the
379 request/response line, allowing multiple requests to be sent to the
380 same helper in parallell without wating for the response.
381 Must not be set unless it's known the helper supports this.
382
48d54e4d 383 auth_param digest children 20 startup=0 idle=1
cccac0a2 384
41bd17a4 385 "realm" realmstring
386 Specifies the realm name which is to be reported to the
387 client for the digest proxy authentication scheme (part of
388 the text the user will see when prompted their username and
389 password). There is no default.
390 auth_param digest realm Squid proxy-caching web server
cccac0a2 391
41bd17a4 392 "nonce_garbage_interval" timeinterval
393 Specifies the interval that nonces that have been issued
394 to client_agent's are checked for validity.
cccac0a2 395
41bd17a4 396 "nonce_max_duration" timeinterval
397 Specifies the maximum length of time a given nonce will be
398 valid for.
cccac0a2 399
41bd17a4 400 "nonce_max_count" number
401 Specifies the maximum number of times a given nonce can be
402 used.
cccac0a2 403
41bd17a4 404 "nonce_strictness" on|off
405 Determines if squid requires strict increment-by-1 behavior
406 for nonce counts, or just incrementing (off - for use when
407 useragents generate nonce counts that occasionally miss 1
408 (ie, 1,2,4,6)). Default off.
cccac0a2 409
41bd17a4 410 "check_nonce_count" on|off
411 This directive if set to off can disable the nonce count check
412 completely to work around buggy digest qop implementations in
413 certain mainstream browser versions. Default on to check the
414 nonce count to protect from authentication replay attacks.
cccac0a2 415
41bd17a4 416 "post_workaround" on|off
417 This is a workaround to certain buggy browsers who sends
418 an incorrect request digest in POST requests when reusing
419 the same nonce as acquired earlier on a GET request.
cccac0a2 420
41bd17a4 421 === NTLM scheme options follow ===
cccac0a2 422
41bd17a4 423 "program" cmdline
424 Specify the command for the external NTLM authenticator.
425 Such a program reads exchanged NTLMSSP packets with
426 the browser via Squid until authentication is completed.
427 If you use an NTLM authenticator, make sure you have 1 acl
5269ec0e 428 of type proxy_auth. By default, the NTLM authenticator program
41bd17a4 429 is not used.
cccac0a2 430
41bd17a4 431 auth_param ntlm program @DEFAULT_PREFIX@/bin/ntlm_auth
cccac0a2 432
48d54e4d
AJ
433 "children" numberofchildren [startup=N] [idle=N]
434 The maximum number of authenticator processes to spawn (default 5).
41bd17a4 435 If you start too few Squid will have to wait for them to
436 process a backlog of credential verifications, slowing it
437 down. When credential verifications are done via a (slow)
438 network you are likely to need lots of authenticator
439 processes.
cccac0a2 440
48d54e4d 441 The startup= and idle= options permit some skew in the exact amount
64d2327b
AJ
442 run. A minimum of startup=N will begin during startup and reconfigure.
443 Squid will start more in groups of up to idle=N in an attempt to meet
48d54e4d
AJ
444 traffic needs and to keep idle=N free above those traffic needs up to
445 the maximum.
446
447 auth_param ntlm children 20 startup=0 idle=1
cccac0a2 448
41bd17a4 449 "keep_alive" on|off
450 If you experience problems with PUT/POST requests when using the
451 Negotiate authentication scheme then you can try setting this to
452 off. This will cause Squid to forcibly close the connection on
453 the initial requests where the browser asks which schemes are
454 supported by the proxy.
cccac0a2 455
41bd17a4 456 auth_param ntlm keep_alive on
cccac0a2 457
41bd17a4 458 === Options for configuring the NEGOTIATE auth-scheme follow ===
cccac0a2 459
41bd17a4 460 "program" cmdline
461 Specify the command for the external Negotiate authenticator.
462 This protocol is used in Microsoft Active-Directory enabled setups with
463 the Microsoft Internet Explorer or Mozilla Firefox browsers.
464 Its main purpose is to exchange credentials with the Squid proxy
465 using the Kerberos mechanisms.
b3567eb5
FC
466 If you use a Negotiate authenticator, make sure you have at least
467 one acl of type proxy_auth active. By default, the negotiate
5269ec0e 468 authenticator program is not used.
41bd17a4 469 The only supported program for this role is the ntlm_auth
470 program distributed as part of Samba, version 4 or later.
cccac0a2 471
41bd17a4 472 auth_param negotiate program @DEFAULT_PREFIX@/bin/ntlm_auth --helper-protocol=gss-spnego
cccac0a2 473
48d54e4d
AJ
474 "children" numberofchildren [startup=N] [idle=N]
475 The maximum number of authenticator processes to spawn (default 5).
41bd17a4 476 If you start too few Squid will have to wait for them to
477 process a backlog of credential verifications, slowing it
478 down. When crendential verifications are done via a (slow)
479 network you are likely to need lots of authenticator
480 processes.
48d54e4d
AJ
481
482 The startup= and idle= options permit some skew in the exact amount
64d2327b
AJ
483 run. A minimum of startup=N will begin during startup and reconfigure.
484 Squid will start more in groups of up to idle=N in an attempt to meet
48d54e4d
AJ
485 traffic needs and to keep idle=N free above those traffic needs up to
486 the maximum.
487
488 auth_param negotiate children 20 startup=0 idle=1
d3803853 489
41bd17a4 490 "keep_alive" on|off
491 If you experience problems with PUT/POST requests when using the
492 Negotiate authentication scheme then you can try setting this to
493 off. This will cause Squid to forcibly close the connection on
494 the initial requests where the browser asks which schemes are
495 supported by the proxy.
527ee50d 496
41bd17a4 497 auth_param negotiate keep_alive on
cccac0a2 498
e0855596
AJ
499
500 Examples:
501
41bd17a4 502#Recommended minimum configuration per scheme:
503#auth_param negotiate program <uncomment and complete this line to activate>
48d54e4d 504#auth_param negotiate children 20 startup=0 idle=1
41bd17a4 505#auth_param negotiate keep_alive on
e0855596 506#
41bd17a4 507#auth_param ntlm program <uncomment and complete this line to activate>
48d54e4d 508#auth_param ntlm children 20 startup=0 idle=1
41bd17a4 509#auth_param ntlm keep_alive on
e0855596 510#
41bd17a4 511#auth_param digest program <uncomment and complete this line>
48d54e4d 512#auth_param digest children 20 startup=0 idle=1
41bd17a4 513#auth_param digest realm Squid proxy-caching web server
514#auth_param digest nonce_garbage_interval 5 minutes
515#auth_param digest nonce_max_duration 30 minutes
516#auth_param digest nonce_max_count 50
e0855596 517#
41bd17a4 518#auth_param basic program <uncomment and complete this line>
6f4d3ed6 519#auth_param basic children 5 startup=5 idle=1
41bd17a4 520#auth_param basic realm Squid proxy-caching web server
521#auth_param basic credentialsttl 2 hours
41bd17a4 522DOC_END
cccac0a2 523
41bd17a4 524NAME: authenticate_cache_garbage_interval
525TYPE: time_t
526DEFAULT: 1 hour
527LOC: Config.authenticateGCInterval
528DOC_START
529 The time period between garbage collection across the username cache.
530 This is a tradeoff between memory utilization (long intervals - say
531 2 days) and CPU (short intervals - say 1 minute). Only change if you
532 have good reason to.
533DOC_END
cccac0a2 534
41bd17a4 535NAME: authenticate_ttl
536TYPE: time_t
537DEFAULT: 1 hour
538LOC: Config.authenticateTTL
539DOC_START
540 The time a user & their credentials stay in the logged in
541 user cache since their last request. When the garbage
542 interval passes, all user credentials that have passed their
543 TTL are removed from memory.
544DOC_END
cccac0a2 545
41bd17a4 546NAME: authenticate_ip_ttl
547TYPE: time_t
548LOC: Config.authenticateIpTTL
549DEFAULT: 0 seconds
550DOC_START
551 If you use proxy authentication and the 'max_user_ip' ACL,
552 this directive controls how long Squid remembers the IP
553 addresses associated with each user. Use a small value
554 (e.g., 60 seconds) if your users might change addresses
555 quickly, as is the case with dialups. You might be safe
556 using a larger value (e.g., 2 hours) in a corporate LAN
557 environment with relatively static address assignments.
558DOC_END
cccac0a2 559
3d1e3e43 560COMMENT_START
561 ACCESS CONTROLS
562 -----------------------------------------------------------------------------
563COMMENT_END
564
41bd17a4 565NAME: external_acl_type
566TYPE: externalAclHelper
567LOC: Config.externalAclHelperList
cccac0a2 568DEFAULT: none
cccac0a2 569DOC_START
41bd17a4 570 This option defines external acl classes using a helper program
571 to look up the status
cccac0a2 572
41bd17a4 573 external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]
cccac0a2 574
41bd17a4 575 Options:
cccac0a2 576
41bd17a4 577 ttl=n TTL in seconds for cached results (defaults to 3600
578 for 1 hour)
579 negative_ttl=n
580 TTL for cached negative lookups (default same
581 as ttl)
48d54e4d
AJ
582 children-max=n
583 Maximum number of acl helper processes spawned to service
584 external acl lookups of this type. (default 20)
585 children-startup=n
586 Minimum number of acl helper processes to spawn during
587 startup and reconfigure to service external acl lookups
588 of this type. (default 0)
589 children-idle=n
590 Number of acl helper processes to keep ahead of traffic
591 loads. Squid will spawn this many at once whenever load
592 rises above the capabilities of existing processes.
593 Up to the value of children-max. (default 1)
41bd17a4 594 concurrency=n concurrency level per process. Only used with helpers
595 capable of processing more than one query at a time.
48d54e4d 596 cache=n limit the result cache size, default is unbounded.
41bd17a4 597 grace=n Percentage remaining of TTL where a refresh of a
598 cached entry should be initiated without needing to
48d54e4d 599 wait for a new reply. (default is for no grace period)
41bd17a4 600 protocol=2.5 Compatibility mode for Squid-2.5 external acl helpers
91e64de9
AJ
601 ipv4 / ipv6 IP protocol used to communicate with this helper.
602 The default is to auto-detect IPv6 and use it when available.
cccac0a2 603
41bd17a4 604 FORMAT specifications
cccac0a2 605
41bd17a4 606 %LOGIN Authenticated user login name
99e4ad67
JB
607 %EXT_USER Username from previous external acl
608 %EXT_LOG Log details from previous external acl
609 %EXT_TAG Tag from previous external acl
41bd17a4 610 %IDENT Ident user name
611 %SRC Client IP
612 %SRCPORT Client source port
613 %URI Requested URI
614 %DST Requested host
615 %PROTO Requested protocol
616 %PORT Requested port
617 %PATH Requested URL path
618 %METHOD Request method
619 %MYADDR Squid interface address
620 %MYPORT Squid http_port number
621 %PATH Requested URL-path (including query-string if any)
622 %USER_CERT SSL User certificate in PEM format
623 %USER_CERTCHAIN SSL User certificate chain in PEM format
624 %USER_CERT_xx SSL User certificate subject attribute xx
625 %USER_CA_xx SSL User certificate issuer attribute xx
7b0ca1e8 626
c68c9682 627 %>{Header} HTTP request header "Header"
7b0ca1e8 628 %>{Hdr:member}
c68c9682 629 HTTP request header "Hdr" list member "member"
7b0ca1e8 630 %>{Hdr:;member}
41bd17a4 631 HTTP request header list member using ; as
632 list separator. ; can be any non-alphanumeric
633 character.
cccac0a2 634
c68c9682 635 %<{Header} HTTP reply header "Header"
7b0ca1e8 636 %<{Hdr:member}
c68c9682 637 HTTP reply header "Hdr" list member "member"
7b0ca1e8
AJ
638 %<{Hdr:;member}
639 HTTP reply header list member using ; as
640 list separator. ; can be any non-alphanumeric
641 character.
642
0db8942f
AJ
643 %% The percent sign. Useful for helpers which need
644 an unchanging input format.
645
cccac0a2 646
5269ec0e
AJ
647 General request syntax:
648
649 [channel-ID] FORMAT-values [acl-values ...]
650
651
652 FORMAT-values consists of transaction details expanded with
653 whitespace separation per the config file FORMAT specification
654 using the FORMAT macros listed above.
655
656 acl-values consists of any string specified in the referencing
657 config 'acl ... external' line. see the "acl external" directive.
658
659 Request values sent to the helper are URL escaped to protect
660 each value in requests against whitespaces.
661
662 If using protocol=2.5 then the request sent to the helper is not
663 URL escaped to protect against whitespace.
664
665 NOTE: protocol=3.0 is deprecated as no longer necessary.
666
667 When using the concurrency= option the protocol is changed by
668 introducing a query channel tag in front of the request/response.
669 The query channel tag is a number between 0 and concurrency-1.
670 This value must be echoed back unchanged to Squid as the first part
671 of the response relating to its request.
672
673
674 The helper receives lines expanded per the above format specification
675 and for each input line returns 1 line starting with OK/ERR/BH result
676 code and optionally followed by additional keywords with more details.
677
cccac0a2 678
41bd17a4 679 General result syntax:
cccac0a2 680
5269ec0e
AJ
681 [channel-ID] result keyword=value ...
682
683 Result consists of one of the codes:
684
685 OK
686 the ACL test produced a match.
687
688 ERR
689 the ACL test does not produce a match.
690
691 BH
692 An internal error occured in the helper, preventing
693 a result being identified.
694
695 The meaning of 'a match' is determined by your squid.conf
696 access control configuration. See the Squid wiki for details.
cccac0a2 697
41bd17a4 698 Defined keywords:
cccac0a2 699
41bd17a4 700 user= The users name (login)
5269ec0e 701
41bd17a4 702 password= The users password (for login= cache_peer option)
5269ec0e 703
05e52854 704 message= Message describing the reason for this response.
5269ec0e
AJ
705 Available as %o in error pages.
706 Useful on (ERR and BH results).
707
05e52854
AJ
708 tag= Apply a tag to a request. Only sets a tag once,
709 does not alter existing tags.
5269ec0e 710
41bd17a4 711 log= String to be logged in access.log. Available as
5269ec0e 712 %ea in logformat specifications.
934b03fc 713
05e52854 714 Any keywords may be sent on any response whether OK, ERR or BH.
6a566b9c 715
05e52854
AJ
716 All response keyword values need to be a single token with URL
717 escaping, or enclosed in double quotes (") and escaped using \ on
24eac830
AJ
718 any double quotes or \ characters within the value. The wrapping
719 double quotes are removed before the value is interpreted by Squid.
720 \r and \n are also replace by CR and LF.
1e5562e3 721
24eac830
AJ
722 Some example key values:
723
5269ec0e 724 user=John%20Smith
24eac830
AJ
725 user="John Smith"
726 user="J. \"Bob\" Smith"
cccac0a2 727DOC_END
728
41bd17a4 729NAME: acl
730TYPE: acl
731LOC: Config.aclList
38450a50 732IF USE_SSL
cf1c09f6
CT
733DEFAULT: ssl::certHasExpired ssl_error X509_V_ERR_CERT_HAS_EXPIRED
734DEFAULT: ssl::certNotYetValid ssl_error X509_V_ERR_CERT_NOT_YET_VALID
735DEFAULT: ssl::certDomainMismatch ssl_error SQUID_X509_V_ERR_DOMAIN_MISMATCH
736DEFAULT: ssl::certUntrusted ssl_error X509_V_ERR_INVALID_CA X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY X509_V_ERR_CERT_UNTRUSTED
737DEFAULT: ssl::certSelfSigned ssl_error X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
738ENDIF
1f5bd0a4 739DEFAULT: all src all
b8a25eaa
AJ
740DEFAULT: manager url_regex -i ^cache_object:// +i ^https?://[^/]+/squid-internal-mgr/
741DEFAULT: localhost src 127.0.0.1/32 ::1
742DEFAULT: to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
743DEFAULT_DOC: ACLs all, manager, localhost, and to_localhost are predefined.
cccac0a2 744DOC_START
41bd17a4 745 Defining an Access List
cccac0a2 746
375eeb3b
AJ
747 Every access list definition must begin with an aclname and acltype,
748 followed by either type-specific arguments or a quoted filename that
749 they are read from.
cccac0a2 750
375eeb3b
AJ
751 acl aclname acltype argument ...
752 acl aclname acltype "file" ...
cccac0a2 753
375eeb3b 754 When using "file", the file should contain one item per line.
cccac0a2 755
ae315d9c
AJ
756 By default, regular expressions are CASE-SENSITIVE.
757 To make them case-insensitive, use the -i option. To return case-sensitive
758 use the +i option between patterns, or make a new ACL line without -i.
cccac0a2 759
b3567eb5
FC
760 Some acl types require suspending the current request in order
761 to access some external data source.
762 Those which do are marked with the tag [slow], those which
763 don't are marked as [fast].
764 See http://wiki.squid-cache.org/SquidFaq/SquidAcl
765 for further information
e988aa40
AJ
766
767 ***** ACL TYPES AVAILABLE *****
768
1e40905d
AJ
769 acl aclname src ip-address/mask ... # clients IP address [fast]
770 acl aclname src addr1-addr2/mask ... # range of addresses [fast]
771 acl aclname dst ip-address/mask ... # URL host's IP address [slow]
772 acl aclname localip ip-address/mask ... # IP address the client connected to [fast]
cccac0a2 773
41bd17a4 774 acl aclname arp mac-address ... (xx:xx:xx:xx:xx:xx notation)
775 # The arp ACL requires the special configure option --enable-arp-acl.
776 # Furthermore, the ARP ACL code is not portable to all operating systems.
b3567eb5
FC
777 # It works on Linux, Solaris, Windows, FreeBSD, and some
778 # other *BSD variants.
779 # [fast]
41bd17a4 780 #
781 # NOTE: Squid can only determine the MAC address for clients that are on
b3567eb5
FC
782 # the same subnet. If the client is on a different subnet,
783 # then Squid cannot find out its MAC address.
784
785 acl aclname srcdomain .foo.com ...
786 # reverse lookup, from client IP [slow]
787 acl aclname dstdomain .foo.com ...
e38c7724 788 # Destination server from URL [fast]
b3567eb5
FC
789 acl aclname srcdom_regex [-i] \.foo\.com ...
790 # regex matching client name [slow]
791 acl aclname dstdom_regex [-i] \.foo\.com ...
e38c7724 792 # regex matching server [fast]
b3567eb5 793 #
41bd17a4 794 # For dstdomain and dstdom_regex a reverse lookup is tried if a IP
795 # based URL is used and no match is found. The name "none" is used
796 # if the reverse lookup fails.
9bc73deb 797
375eeb3b
AJ
798 acl aclname src_as number ...
799 acl aclname dst_as number ...
b3567eb5 800 # [fast]
e988aa40
AJ
801 # Except for access control, AS numbers can be used for
802 # routing of requests to specific caches. Here's an
803 # example for routing all requests for AS#1241 and only
804 # those to mycache.mydomain.net:
805 # acl asexample dst_as 1241
806 # cache_peer_access mycache.mydomain.net allow asexample
807 # cache_peer_access mycache_mydomain.net deny all
7f7db318 808
6db78a1a 809 acl aclname peername myPeer ...
b3567eb5 810 # [fast]
6db78a1a
AJ
811 # match against a named cache_peer entry
812 # set unique name= on cache_peer lines for reliable use.
813
375eeb3b 814 acl aclname time [day-abbrevs] [h1:m1-h2:m2]
b3567eb5 815 # [fast]
375eeb3b
AJ
816 # day-abbrevs:
817 # S - Sunday
818 # M - Monday
819 # T - Tuesday
820 # W - Wednesday
821 # H - Thursday
822 # F - Friday
823 # A - Saturday
824 # h1:m1 must be less than h2:m2
825
b3567eb5
FC
826 acl aclname url_regex [-i] ^http:// ...
827 # regex matching on whole URL [fast]
9d35fe37
AJ
828 acl aclname urllogin [-i] [^a-zA-Z0-9] ...
829 # regex matching on URL login field
b3567eb5
FC
830 acl aclname urlpath_regex [-i] \.gif$ ...
831 # regex matching on URL path [fast]
e988aa40 832
b3567eb5
FC
833 acl aclname port 80 70 21 0-1024... # destination TCP port [fast]
834 # ranges are alloed
1e40905d
AJ
835 acl aclname localport 3128 ... # TCP port the client connected to [fast]
836 # NP: for interception mode this is usually '80'
837
b3567eb5 838 acl aclname myportname 3128 ... # http(s)_port name [fast]
e988aa40 839
b3567eb5
FC
840 acl aclname proto HTTP FTP ... # request protocol [fast]
841
842 acl aclname method GET POST ... # HTTP request method [fast]
e988aa40 843
b3567eb5
FC
844 acl aclname http_status 200 301 500- 400-403 ...
845 # status code in reply [fast]
e988aa40 846
375eeb3b 847 acl aclname browser [-i] regexp ...
b3567eb5 848 # pattern match on User-Agent header (see also req_header below) [fast]
e988aa40 849
375eeb3b 850 acl aclname referer_regex [-i] regexp ...
b3567eb5 851 # pattern match on Referer header [fast]
41bd17a4 852 # Referer is highly unreliable, so use with care
e988aa40 853
375eeb3b 854 acl aclname ident username ...
41bd17a4 855 acl aclname ident_regex [-i] pattern ...
b3567eb5 856 # string match on ident output [slow]
41bd17a4 857 # use REQUIRED to accept any non-null ident.
cf5cc17e 858
41bd17a4 859 acl aclname proxy_auth [-i] username ...
860 acl aclname proxy_auth_regex [-i] pattern ...
b3567eb5
FC
861 # perform http authentication challenge to the client and match against
862 # supplied credentials [slow]
863 #
864 # takes a list of allowed usernames.
41bd17a4 865 # use REQUIRED to accept any valid username.
866 #
b3567eb5
FC
867 # Will use proxy authentication in forward-proxy scenarios, and plain
868 # http authenticaiton in reverse-proxy scenarios
869 #
41bd17a4 870 # NOTE: when a Proxy-Authentication header is sent but it is not
871 # needed during ACL checking the username is NOT logged
872 # in access.log.
873 #
874 # NOTE: proxy_auth requires a EXTERNAL authentication program
875 # to check username/password combinations (see
876 # auth_param directive).
877 #
e988aa40
AJ
878 # NOTE: proxy_auth can't be used in a transparent/intercepting proxy
879 # as the browser needs to be configured for using a proxy in order
41bd17a4 880 # to respond to proxy authentication.
8e8d4f30 881
41bd17a4 882 acl aclname snmp_community string ...
b3567eb5 883 # A community string to limit access to your SNMP Agent [fast]
41bd17a4 884 # Example:
885 #
886 # acl snmppublic snmp_community public
934b03fc 887
41bd17a4 888 acl aclname maxconn number
889 # This will be matched when the client's IP address has
55d0fae8
AJ
890 # more than <number> TCP connections established. [fast]
891 # NOTE: This only measures direct TCP links so X-Forwarded-For
892 # indirect clients are not counted.
1e5562e3 893
41bd17a4 894 acl aclname max_user_ip [-s] number
895 # This will be matched when the user attempts to log in from more
896 # than <number> different ip addresses. The authenticate_ip_ttl
b3567eb5 897 # parameter controls the timeout on the ip entries. [fast]
41bd17a4 898 # If -s is specified the limit is strict, denying browsing
899 # from any further IP addresses until the ttl has expired. Without
900 # -s Squid will just annoy the user by "randomly" denying requests.
901 # (the counter is reset each time the limit is reached and a
902 # request is denied)
903 # NOTE: in acceleration mode or where there is mesh of child proxies,
904 # clients may appear to come from multiple addresses if they are
905 # going through proxy farms, so a limit of 1 may cause user problems.
cccac0a2 906
cb1b906f
AJ
907 acl aclname random probability
908 # Pseudo-randomly match requests. Based on the probability given.
909 # Probability may be written as a decimal (0.333), fraction (1/3)
910 # or ratio of matches:non-matches (3:5).
911
375eeb3b 912 acl aclname req_mime_type [-i] mime-type ...
41bd17a4 913 # regex match against the mime type of the request generated
914 # by the client. Can be used to detect file upload or some
b3567eb5 915 # types HTTP tunneling requests [fast]
41bd17a4 916 # NOTE: This does NOT match the reply. You cannot use this
917 # to match the returned file type.
cccac0a2 918
41bd17a4 919 acl aclname req_header header-name [-i] any\.regex\.here
920 # regex match against any of the known request headers. May be
921 # thought of as a superset of "browser", "referer" and "mime-type"
b3567eb5 922 # ACL [fast]
cccac0a2 923
375eeb3b 924 acl aclname rep_mime_type [-i] mime-type ...
41bd17a4 925 # regex match against the mime type of the reply received by
926 # squid. Can be used to detect file download or some
b3567eb5 927 # types HTTP tunneling requests. [fast]
41bd17a4 928 # NOTE: This has no effect in http_access rules. It only has
929 # effect in rules that affect the reply data stream such as
930 # http_reply_access.
cccac0a2 931
41bd17a4 932 acl aclname rep_header header-name [-i] any\.regex\.here
933 # regex match against any of the known reply headers. May be
934 # thought of as a superset of "browser", "referer" and "mime-type"
b3567eb5 935 # ACLs [fast]
cccac0a2 936
375eeb3b 937 acl aclname external class_name [arguments...]
41bd17a4 938 # external ACL lookup via a helper class defined by the
b3567eb5 939 # external_acl_type directive [slow]
cccac0a2 940
41bd17a4 941 acl aclname user_cert attribute values...
942 # match against attributes in a user SSL certificate
b3567eb5 943 # attribute is one of DN/C/O/CN/L/ST [fast]
cccac0a2 944
41bd17a4 945 acl aclname ca_cert attribute values...
946 # match against attributes a users issuing CA SSL certificate
b3567eb5 947 # attribute is one of DN/C/O/CN/L/ST [fast]
cccac0a2 948
41bd17a4 949 acl aclname ext_user username ...
950 acl aclname ext_user_regex [-i] pattern ...
b3567eb5 951 # string match on username returned by external acl helper [slow]
41bd17a4 952 # use REQUIRED to accept any non-null user name.
b3567eb5 953
0ab50441 954 acl aclname tag tagvalue ...
b3567eb5 955 # string match on tag returned by external acl helper [slow]
cccac0a2 956
bbaf2685
AJ
957 acl aclname hier_code codename ...
958 # string match against squid hierarchy code(s); [fast]
959 # e.g., DIRECT, PARENT_HIT, NONE, etc.
960 #
961 # NOTE: This has no effect in http_access rules. It only has
962 # effect in rules that affect the reply data stream such as
963 # http_reply_access.
964
38450a50 965IF USE_SSL
cf1c09f6
CT
966 acl aclname ssl_error errorname
967 # match against SSL certificate validation error [fast]
cf1c09f6 968 #
7a957a93
AR
969 # For valid error names see in @DEFAULT_ERROR_DIR@/templates/error-details.txt
970 # template file.
cf1c09f6 971 #
7a957a93
AR
972 # The following can be used as shortcuts for certificate properties:
973 # [ssl::]certHasExpired: the "not after" field is in the past
974 # [ssl::]certNotYetValid: the "not before" field is in the future
975 # [ssl::]certUntrusted: The certificate issuer is not to be trusted.
976 # [ssl::]certSelfSigned: The certificate is self signed.
977 # [ssl::]certDomainMismatch: The certificate CN domain does not
978 # match the name the name of the host we are connecting to.
979 #
980 # The ssl::certHasExpired, ssl::certNotYetValid, ssl::certDomainMismatch,
981 # ssl::certUntrusted, and ssl::certSelfSigned can also be used as
982 # predefined ACLs, just like the 'all' ACL.
983 #
984 # NOTE: The ssl_error ACL is only supported with sslproxy_cert_error,
985 # sslproxy_cert_sign, and sslproxy_cert_adapt options.
cf1c09f6
CT
986ENDIF
987
e0855596
AJ
988 Examples:
989 acl macaddress arp 09:00:2b:23:45:67
990 acl myexample dst_as 1241
991 acl password proxy_auth REQUIRED
992 acl fileupload req_mime_type -i ^multipart/form-data$
993 acl javascript rep_mime_type -i ^application/x-javascript$
cccac0a2 994
41bd17a4 995NOCOMMENT_START
e0855596
AJ
996#
997# Recommended minimum configuration:
998#
e0855596 999
ee776778 1000# Example rule allowing access from your local networks.
1001# Adapt to list your (internal) IP networks from where browsing
1002# should be allowed
1003acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
1004acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1005acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
055421ee
AJ
1006acl localnet src fc00::/7 # RFC 4193 local private network range
1007acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
e0855596 1008
41bd17a4 1009acl SSL_ports port 443
1010acl Safe_ports port 80 # http
1011acl Safe_ports port 21 # ftp
1012acl Safe_ports port 443 # https
1013acl Safe_ports port 70 # gopher
1014acl Safe_ports port 210 # wais
1015acl Safe_ports port 1025-65535 # unregistered ports
1016acl Safe_ports port 280 # http-mgmt
1017acl Safe_ports port 488 # gss-http
1018acl Safe_ports port 591 # filemaker
1019acl Safe_ports port 777 # multiling http
1020acl CONNECT method CONNECT
1021NOCOMMENT_END
1022DOC_END
cccac0a2 1023
3d674977
AJ
1024NAME: follow_x_forwarded_for
1025TYPE: acl_access
1026IFDEF: FOLLOW_X_FORWARDED_FOR
1027LOC: Config.accessList.followXFF
3d674977
AJ
1028DEFAULT_IF_NONE: deny all
1029DOC_START
1030 Allowing or Denying the X-Forwarded-For header to be followed to
1031 find the original source of a request.
1032
1033 Requests may pass through a chain of several other proxies
1034 before reaching us. The X-Forwarded-For header will contain a
1035 comma-separated list of the IP addresses in the chain, with the
1036 rightmost address being the most recent.
1037
1038 If a request reaches us from a source that is allowed by this
1039 configuration item, then we consult the X-Forwarded-For header
1040 to see where that host received the request from. If the
2bf4e8fa
AJ
1041 X-Forwarded-For header contains multiple addresses, we continue
1042 backtracking until we reach an address for which we are not allowed
1043 to follow the X-Forwarded-For header, or until we reach the first
1044 address in the list. For the purpose of ACL used in the
1045 follow_x_forwarded_for directive the src ACL type always matches
1046 the address we are testing and srcdomain matches its rDNS.
3d674977
AJ
1047
1048 The end result of this process is an IP address that we will
1049 refer to as the indirect client address. This address may
57d76dd4 1050 be treated as the client address for access control, ICAP, delay
3d674977 1051 pools and logging, depending on the acl_uses_indirect_client,
96d64448
AJ
1052 icap_uses_indirect_client, delay_pool_uses_indirect_client,
1053 log_uses_indirect_client and tproxy_uses_indirect_client options.
3d674977 1054
b3567eb5
FC
1055 This clause only supports fast acl types.
1056 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
1057
3d674977
AJ
1058 SECURITY CONSIDERATIONS:
1059
1060 Any host for which we follow the X-Forwarded-For header
1061 can place incorrect information in the header, and Squid
1062 will use the incorrect information as if it were the
1063 source address of the request. This may enable remote
1064 hosts to bypass any access control restrictions that are
1065 based on the client's source addresses.
1066
1067 For example:
1068
1069 acl localhost src 127.0.0.1
1070 acl my_other_proxy srcdomain .proxy.example.com
1071 follow_x_forwarded_for allow localhost
1072 follow_x_forwarded_for allow my_other_proxy
1073DOC_END
1074
1075NAME: acl_uses_indirect_client
1076COMMENT: on|off
1077TYPE: onoff
1078IFDEF: FOLLOW_X_FORWARDED_FOR
1079DEFAULT: on
1080LOC: Config.onoff.acl_uses_indirect_client
1081DOC_START
1082 Controls whether the indirect client address
1083 (see follow_x_forwarded_for) is used instead of the
1084 direct client address in acl matching.
55d0fae8
AJ
1085
1086 NOTE: maxconn ACL considers direct TCP links and indirect
1087 clients will always have zero. So no match.
3d674977
AJ
1088DOC_END
1089
1090NAME: delay_pool_uses_indirect_client
1091COMMENT: on|off
1092TYPE: onoff
9a0a18de 1093IFDEF: FOLLOW_X_FORWARDED_FOR&&USE_DELAY_POOLS
3d674977
AJ
1094DEFAULT: on
1095LOC: Config.onoff.delay_pool_uses_indirect_client
1096DOC_START
1097 Controls whether the indirect client address
1098 (see follow_x_forwarded_for) is used instead of the
1099 direct client address in delay pools.
1100DOC_END
1101
1102NAME: log_uses_indirect_client
1103COMMENT: on|off
1104TYPE: onoff
1105IFDEF: FOLLOW_X_FORWARDED_FOR
1106DEFAULT: on
1107LOC: Config.onoff.log_uses_indirect_client
1108DOC_START
1109 Controls whether the indirect client address
1110 (see follow_x_forwarded_for) is used instead of the
1111 direct client address in the access log.
1112DOC_END
1113
96d64448
AJ
1114NAME: tproxy_uses_indirect_client
1115COMMENT: on|off
1116TYPE: onoff
1117IFDEF: FOLLOW_X_FORWARDED_FOR&&LINUX_NETFILTER
4d7ab5a2 1118DEFAULT: off
96d64448
AJ
1119LOC: Config.onoff.tproxy_uses_indirect_client
1120DOC_START
1121 Controls whether the indirect client address
1122 (see follow_x_forwarded_for) is used instead of the
1123 direct client address when spoofing the outgoing client.
4d7ab5a2
AJ
1124
1125 This has no effect on requests arriving in non-tproxy
1126 mode ports.
1127
1128 SECURITY WARNING: Usage of this option is dangerous
1129 and should not be used trivially. Correct configuration
b01a2238 1130 of follow_x_forewarded_for with a limited set of trusted
4d7ab5a2 1131 sources is required to prevent abuse of your proxy.
96d64448
AJ
1132DOC_END
1133
41bd17a4 1134NAME: http_access
1135TYPE: acl_access
1136LOC: Config.accessList.http
41bd17a4 1137DEFAULT_IF_NONE: deny all
1138DOC_START
1139 Allowing or Denying access based on defined access lists
cccac0a2 1140
41bd17a4 1141 Access to the HTTP port:
1142 http_access allow|deny [!]aclname ...
cccac0a2 1143
41bd17a4 1144 NOTE on default values:
cccac0a2 1145
41bd17a4 1146 If there are no "access" lines present, the default is to deny
1147 the request.
cccac0a2 1148
41bd17a4 1149 If none of the "access" lines cause a match, the default is the
1150 opposite of the last line in the list. If the last line was
1151 deny, the default is allow. Conversely, if the last line
1152 is allow, the default will be deny. For these reasons, it is a
51ae86b2
HN
1153 good idea to have an "deny all" entry at the end of your access
1154 lists to avoid potential confusion.
cccac0a2 1155
b3567eb5
FC
1156 This clause supports both fast and slow acl types.
1157 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
1158
41bd17a4 1159NOCOMMENT_START
e0855596
AJ
1160
1161#
1162# Recommended minimum Access Permission configuration:
41bd17a4 1163#
1164# Only allow cachemgr access from localhost
3c722b3a 1165http_access allow localhost manager
41bd17a4 1166http_access deny manager
e0855596
AJ
1167
1168# Deny requests to certain unsafe ports
41bd17a4 1169http_access deny !Safe_ports
e0855596
AJ
1170
1171# Deny CONNECT to other than secure SSL ports
41bd17a4 1172http_access deny CONNECT !SSL_ports
e0855596 1173
41bd17a4 1174# We strongly recommend the following be uncommented to protect innocent
1175# web applications running on the proxy server who think the only
1176# one who can access services on "localhost" is a local user
1177#http_access deny to_localhost
e0855596 1178
41bd17a4 1179#
1180# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
e0855596 1181#
c8f4eac4 1182
ee776778 1183# Example rule allowing access from your local networks.
1184# Adapt localnet in the ACL section to list your (internal) IP networks
1185# from where browsing should be allowed
1186http_access allow localnet
afb33856 1187http_access allow localhost
7d90757b 1188
41bd17a4 1189# And finally deny all other access to this proxy
1190http_access deny all
1191NOCOMMENT_END
1192DOC_END
7d90757b 1193
533493da
AJ
1194NAME: adapted_http_access http_access2
1195TYPE: acl_access
1196LOC: Config.accessList.adapted_http
1197DEFAULT: none
1198DOC_START
1199 Allowing or Denying access based on defined access lists
1200
1201 Essentially identical to http_access, but runs after redirectors
1202 and ICAP/eCAP adaptation. Allowing access control based on their
1203 output.
1204
1205 If not set then only http_access is used.
1206DOC_END
1207
41bd17a4 1208NAME: http_reply_access
1209TYPE: acl_access
1210LOC: Config.accessList.reply
1211DEFAULT: none
1212DOC_START
1213 Allow replies to client requests. This is complementary to http_access.
cccac0a2 1214
41bd17a4 1215 http_reply_access allow|deny [!] aclname ...
cccac0a2 1216
41bd17a4 1217 NOTE: if there are no access lines present, the default is to allow
1218 all replies
1a224843 1219
41bd17a4 1220 If none of the access lines cause a match the opposite of the
1221 last line will apply. Thus it is good practice to end the rules
1222 with an "allow all" or "deny all" entry.
b3567eb5
FC
1223
1224 This clause supports both fast and slow acl types.
1225 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
cccac0a2 1226DOC_END
1227
41bd17a4 1228NAME: icp_access
1229TYPE: acl_access
1230LOC: Config.accessList.icp
41bd17a4 1231DEFAULT_IF_NONE: deny all
5473c134 1232DOC_START
41bd17a4 1233 Allowing or Denying access to the ICP port based on defined
1234 access lists
5473c134 1235
41bd17a4 1236 icp_access allow|deny [!]aclname ...
5473c134 1237
41bd17a4 1238 See http_access for details
1239
b3567eb5
FC
1240 This clause only supports fast acl types.
1241 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
e0855596
AJ
1242
1243# Allow ICP queries from local networks only
df2eec10
AJ
1244#icp_access allow localnet
1245#icp_access deny all
5473c134 1246DOC_END
1247
41bd17a4 1248NAME: htcp_access
1249IFDEF: USE_HTCP
1250TYPE: acl_access
1251LOC: Config.accessList.htcp
41bd17a4 1252DEFAULT_IF_NONE: deny all
5473c134 1253DOC_START
41bd17a4 1254 Allowing or Denying access to the HTCP port based on defined
1255 access lists
5473c134 1256
41bd17a4 1257 htcp_access allow|deny [!]aclname ...
5473c134 1258
41bd17a4 1259 See http_access for details
5473c134 1260
0b48417e 1261 NOTE: The default if no htcp_access lines are present is to
1262 deny all traffic. This default may cause problems with peers
18191440 1263 using the htcp option.
0b48417e 1264
b3567eb5
FC
1265 This clause only supports fast acl types.
1266 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
e0855596
AJ
1267
1268# Allow HTCP queries from local networks only
df2eec10
AJ
1269#htcp_access allow localnet
1270#htcp_access deny all
41bd17a4 1271DOC_END
5473c134 1272
41bd17a4 1273NAME: htcp_clr_access
1274IFDEF: USE_HTCP
1275TYPE: acl_access
1276LOC: Config.accessList.htcp_clr
41bd17a4 1277DEFAULT_IF_NONE: deny all
1278DOC_START
1279 Allowing or Denying access to purge content using HTCP based
1280 on defined access lists
5473c134 1281
41bd17a4 1282 htcp_clr_access allow|deny [!]aclname ...
5473c134 1283
41bd17a4 1284 See http_access for details
5473c134 1285
b3567eb5
FC
1286 This clause only supports fast acl types.
1287 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
e0855596
AJ
1288
1289# Allow HTCP CLR requests from trusted peers
41bd17a4 1290acl htcp_clr_peer src 172.16.1.2
1291htcp_clr_access allow htcp_clr_peer
5473c134 1292DOC_END
1293
41bd17a4 1294NAME: miss_access
1295TYPE: acl_access
1296LOC: Config.accessList.miss
b8a25eaa 1297DEFAULT: none
5473c134 1298DOC_START
0b4fb91a
AJ
1299 Determins whether network access is permitted when satisfying a request.
1300
1301 For example;
1302 to force your neighbors to use you as a sibling instead of
1303 a parent.
5473c134 1304
41bd17a4 1305 acl localclients src 172.16.0.0/16
1306 miss_access allow localclients
1307 miss_access deny !localclients
5473c134 1308
0b4fb91a
AJ
1309 This means only your local clients are allowed to fetch relayed/MISS
1310 replies from the network and all other clients can only fetch cached
1311 objects (HITs).
1312
5473c134 1313
0b4fb91a
AJ
1314 The default for this setting allows all clients who passed the
1315 http_access rules to relay via this proxy.
b3567eb5
FC
1316
1317 This clause only supports fast acl types.
1318 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
41bd17a4 1319DOC_END
1320
1321NAME: ident_lookup_access
1322TYPE: acl_access
1323IFDEF: USE_IDENT
41bd17a4 1324DEFAULT_IF_NONE: deny all
4daaf3cb 1325LOC: Ident::TheConfig.identLookup
5473c134 1326DOC_START
41bd17a4 1327 A list of ACL elements which, if matched, cause an ident
1328 (RFC 931) lookup to be performed for this request. For
1329 example, you might choose to always perform ident lookups
1330 for your main multi-user Unix boxes, but not for your Macs
1331 and PCs. By default, ident lookups are not performed for
1332 any requests.
5473c134 1333
41bd17a4 1334 To enable ident lookups for specific client addresses, you
1335 can follow this example:
5473c134 1336
4daaf3cb 1337 acl ident_aware_hosts src 198.168.1.0/24
41bd17a4 1338 ident_lookup_access allow ident_aware_hosts
1339 ident_lookup_access deny all
5473c134 1340
4daaf3cb 1341 Only src type ACL checks are fully supported. A srcdomain
41bd17a4 1342 ACL might work at times, but it will not always provide
1343 the correct result.
b3567eb5
FC
1344
1345 This clause only supports fast acl types.
1346 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
41bd17a4 1347DOC_END
5473c134 1348
5b0f5383 1349NAME: reply_body_max_size
1350COMMENT: size [acl acl...]
1351TYPE: acl_b_size_t
1352DEFAULT: none
1353LOC: Config.ReplyBodySize
1354DOC_START
1355 This option specifies the maximum size of a reply body. It can be
1356 used to prevent users from downloading very large files, such as
1357 MP3's and movies. When the reply headers are received, the
1358 reply_body_max_size lines are processed, and the first line where
1359 all (if any) listed ACLs are true is used as the maximum body size
1360 for this reply.
1361
1362 This size is checked twice. First when we get the reply headers,
1363 we check the content-length value. If the content length value exists
1364 and is larger than the allowed size, the request is denied and the
1365 user receives an error message that says "the request or reply
1366 is too large." If there is no content-length, and the reply
1367 size exceeds this limit, the client's connection is just closed
1368 and they will receive a partial reply.
1369
1370 WARNING: downstream caches probably can not detect a partial reply
1371 if there is no content-length header, so they will cache
1372 partial responses and give them out as hits. You should NOT
1373 use this option if you have downstream caches.
1374
1375 WARNING: A maximum size smaller than the size of squid's error messages
1376 will cause an infinite loop and crash squid. Ensure that the smallest
1377 non-zero value you use is greater that the maximum header size plus
1378 the size of your largest error page.
1379
1380 If you set this parameter none (the default), there will be
1381 no limit imposed.
3bc32f2f
AJ
1382
1383 Configuration Format is:
1384 reply_body_max_size SIZE UNITS [acl ...]
1385 ie.
1386 reply_body_max_size 10 MB
1387
5b0f5383 1388DOC_END
1389
1390COMMENT_START
1391 NETWORK OPTIONS
1392 -----------------------------------------------------------------------------
1393COMMENT_END
1394
1395NAME: http_port ascii_port
65d448bc 1396TYPE: PortCfg
5b0f5383 1397DEFAULT: none
1398LOC: Config.Sockaddr.http
1399DOC_START
c7b1dd5d
AJ
1400 Usage: port [mode] [options]
1401 hostname:port [mode] [options]
1402 1.2.3.4:port [mode] [options]
5b0f5383 1403
1404 The socket addresses where Squid will listen for HTTP client
1405 requests. You may specify multiple socket addresses.
1406 There are three forms: port alone, hostname with port, and
1407 IP address with port. If you specify a hostname or IP
1408 address, Squid binds the socket to that specific
c7b1dd5d 1409 address. Most likely, you do not need to bind to a specific
5b0f5383 1410 address, so you can use the port number alone.
1411
1412 If you are running Squid in accelerator mode, you
1413 probably want to listen on port 80 also, or instead.
1414
1415 The -a command line option may be used to specify additional
1416 port(s) where Squid listens for proxy request. Such ports will
1417 be plain proxy ports with no options.
1418
1419 You may specify multiple socket addresses on multiple lines.
1420
c7b1dd5d 1421 Modes:
5b0f5383 1422
e77bdb4e 1423 intercept Support for IP-Layer interception of
5b0f5383 1424 outgoing requests without browser settings.
13b5cd0c 1425 NP: disables authentication and IPv6 on the port.
5b0f5383 1426
1427 tproxy Support Linux TPROXY for spoofing outgoing
1428 connections using the client IP address.
6f05d9c8 1429 NP: disables authentication and maybe IPv6 on the port.
5b0f5383 1430
7f45065d 1431 accel Accelerator / reverse proxy mode
5b0f5383 1432
caf3666d 1433 ssl-bump For each CONNECT request allowed by ssl_bump ACLs,
c7b1dd5d 1434 establish secure connection with the client and with
caf3666d 1435 the server, decrypt HTTPS messages as they pass through
c7b1dd5d
AJ
1436 Squid, and treat them as unencrypted HTTP messages,
1437 becoming the man-in-the-middle.
1438
7a957a93 1439 The ssl_bump option is required to fully enable
caf3666d 1440 bumping of CONNECT requests.
c7b1dd5d
AJ
1441
1442 Omitting the mode flag causes default forward proxy mode to be used.
1443
1444
1445 Accelerator Mode Options:
1446
5b0f5383 1447 defaultsite=domainname
1448 What to use for the Host: header if it is not present
1449 in a request. Determines what site (not origin server)
1450 accelerators should consider the default.
5b0f5383 1451
cf673853 1452 no-vhost Disable using HTTP/1.1 Host header for virtual domain support.
5b0f5383 1453
1454 protocol= Protocol to reconstruct accelerated requests with.
7f45065d
HN
1455 Defaults to http for http_port and https for
1456 https_port
5b0f5383 1457
cf673853
AJ
1458 vport Virtual host port support. Using the http_port number
1459 instead of the port passed on Host: headers.
5b0f5383 1460
cf673853
AJ
1461 vport=NN Virtual host port support. Using the specified port
1462 number instead of the port passed on Host: headers.
5b0f5383 1463
7f45065d
HN
1464 act-as-origin
1465 Act as if this Squid is the origin server.
1466 This currently means generate new Date: and Expires:
1467 headers on HIT instead of adding Age:.
5b0f5383 1468
432bc83c
HN
1469 ignore-cc Ignore request Cache-Control headers.
1470
7f45065d 1471 WARNING: This option violates HTTP specifications if
432bc83c
HN
1472 used in non-accelerator setups.
1473
7f45065d
HN
1474 allow-direct Allow direct forwarding in accelerator mode. Normally
1475 accelerated requests are denied direct forwarding as if
1476 never_direct was used.
1477
1478 WARNING: this option opens accelerator mode to security
1479 vulnerabilities usually only affecting in interception
1480 mode. Make sure to protect forwarding with suitable
1481 http_access rules when using this.
1482
c7b1dd5d
AJ
1483
1484 SSL Bump Mode Options:
859741ed
AJ
1485 In addition to these options ssl-bump requires TLS/SSL options.
1486
1487 generate-host-certificates[=<on|off>]
1488 Dynamically create SSL server certificates for the
1489 destination hosts of bumped CONNECT requests.When
1490 enabled, the cert and key options are used to sign
1491 generated certificates. Otherwise generated
1492 certificate will be selfsigned.
1493 If there is a CA certificate lifetime of the generated
1494 certificate equals lifetime of the CA certificate. If
1495 generated certificate is selfsigned lifetime is three
1496 years.
1497 This option is enabled by default when ssl-bump is used.
1498 See the ssl-bump option above for more information.
1499
1500 dynamic_cert_mem_cache_size=SIZE
1501 Approximate total RAM size spent on cached generated
1502 certificates. If set to zero, caching is disabled. The
23bb0ebf 1503 default value is 4MB.
859741ed
AJ
1504
1505 TLS / SSL Options:
c7b1dd5d
AJ
1506
1507 cert= Path to SSL certificate (PEM format).
1508
1509 key= Path to SSL private key file (PEM format)
1510 if not specified, the certificate file is
1511 assumed to be a combined certificate and
1512 key file.
1513
1514 version= The version of SSL/TLS supported
1515 1 automatic (default)
1516 2 SSLv2 only
1517 3 SSLv3 only
3d96b0e8
AJ
1518 4 TLSv1.0 only
1519 5 TLSv1.1 only
1520 6 TLSv1.2 only
c7b1dd5d
AJ
1521
1522 cipher= Colon separated list of supported ciphers.
bebdc6fb
AJ
1523 NOTE: some ciphers such as EDH ciphers depend on
1524 additional settings. If those settings are
1525 omitted the ciphers may be silently ignored
1526 by the OpenSSL library.
c7b1dd5d 1527
943c5f16 1528 options= Various SSL implementation options. The most important
c7b1dd5d 1529 being:
3d96b0e8
AJ
1530 NO_SSLv2 Disallow the use of SSLv2
1531 NO_SSLv3 Disallow the use of SSLv3
1532 NO_TLSv1 Disallow the use of TLSv1.0
1533 NO_TLSv1_1 Disallow the use of TLSv1.1
1534 NO_TLSv1_2 Disallow the use of TLSv1.2
c7b1dd5d
AJ
1535 SINGLE_DH_USE Always create a new key when using
1536 temporary/ephemeral DH key exchanges
943c5f16
HN
1537 ALL Enable various bug workarounds
1538 suggested as "harmless" by OpenSSL
1539 Be warned that this reduces SSL/TLS
1540 strength to some attacks.
bebdc6fb
AJ
1541 See OpenSSL SSL_CTX_set_options documentation for a
1542 complete list of options.
c7b1dd5d
AJ
1543
1544 clientca= File containing the list of CAs to use when
1545 requesting a client certificate.
1546
1547 cafile= File containing additional CA certificates to
1548 use when verifying client certificates. If unset
1549 clientca will be used.
1550
1551 capath= Directory containing additional CA certificates
1552 and CRL lists to use when verifying client certificates.
1553
1554 crlfile= File of additional CRL lists to use when verifying
1555 the client certificate, in addition to CRLs stored in
1556 the capath. Implies VERIFY_CRL flag below.
1557
1558 dhparams= File containing DH parameters for temporary/ephemeral
bebdc6fb
AJ
1559 DH key exchanges. See OpenSSL documentation for details
1560 on how to create this file.
1561 WARNING: EDH ciphers will be silently disabled if this
1562 option is not set.
c7b1dd5d
AJ
1563
1564 sslflags= Various flags modifying the use of SSL:
1565 DELAYED_AUTH
1566 Don't request client certificates
1567 immediately, but wait until acl processing
1568 requires a certificate (not yet implemented).
1569 NO_DEFAULT_CA
1570 Don't use the default CA lists built in
1571 to OpenSSL.
1572 NO_SESSION_REUSE
1573 Don't allow for session reuse. Each connection
1574 will result in a new SSL session.
1575 VERIFY_CRL
1576 Verify CRL lists when accepting client
1577 certificates.
1578 VERIFY_CRL_ALL
1579 Verify CRL lists for all certificates in the
1580 client certificate chain.
1581
1582 sslcontext= SSL session ID context identifier.
1583
c7b1dd5d
AJ
1584 Other Options:
1585
6b185b50
AJ
1586 connection-auth[=on|off]
1587 use connection-auth=off to tell Squid to prevent
1588 forwarding Microsoft connection oriented authentication
d67acb4e
AJ
1589 (NTLM, Negotiate and Kerberos)
1590
5b0f5383 1591 disable-pmtu-discovery=
1592 Control Path-MTU discovery usage:
1593 off lets OS decide on what to do (default).
1594 transparent disable PMTU discovery when transparent
1595 support is enabled.
1596 always disable always PMTU discovery.
1597
1598 In many setups of transparently intercepting proxies
1599 Path-MTU discovery can not work on traffic towards the
1600 clients. This is the case when the intercepting device
1601 does not fully track connections and fails to forward
1602 ICMP must fragment messages to the cache server. If you
1603 have such setup and experience that certain clients
1604 sporadically hang or never complete requests set
1605 disable-pmtu-discovery option to 'transparent'.
1606
81b6e9a7 1607 name= Specifies a internal name for the port. Defaults to
1608 the port specification (port or addr:port)
1609
68924b6d 1610 tcpkeepalive[=idle,interval,timeout]
fb6c6dbe
AJ
1611 Enable TCP keepalive probes of idle connections.
1612 In seconds; idle is the initial time before TCP starts
1613 probing the connection, interval how often to probe, and
b2130d58 1614 timeout the time before giving up.
1615
5b0f5383 1616 If you run Squid on a dual-homed machine with an internal
1617 and an external interface we recommend you to specify the
1618 internal address:port in http_port. This way Squid will only be
1619 visible on the internal address.
1620
1621NOCOMMENT_START
e0855596 1622
5b0f5383 1623# Squid normally listens to port 3128
1624http_port @DEFAULT_HTTP_PORT@
1625NOCOMMENT_END
1626DOC_END
1627
1628NAME: https_port
1629IFDEF: USE_SSL
65d448bc 1630TYPE: PortCfg
5b0f5383 1631DEFAULT: none
1632LOC: Config.Sockaddr.https
1633DOC_START
7f45065d 1634 Usage: [ip:]port cert=certificate.pem [key=key.pem] [mode] [options...]
5b0f5383 1635
859741ed
AJ
1636 The socket address where Squid will listen for client requests made
1637 over TLS or SSL connections. Commonly referred to as HTTPS.
5b0f5383 1638
859741ed
AJ
1639 This is most useful for situations where you are running squid in
1640 accelerator mode and you want to do the SSL work at the accelerator level.
5b0f5383 1641
1642 You may specify multiple socket addresses on multiple lines,
1643 each with their own SSL certificate and/or options.
1644
7f45065d 1645 Modes:
5b0f5383 1646
7f45065d 1647 accel Accelerator / reverse proxy mode
5b0f5383 1648
38450a50
CT
1649 intercept Support for IP-Layer interception of
1650 outgoing requests without browser settings.
1651 NP: disables authentication and IPv6 on the port.
1652
379e8c1c
AR
1653 tproxy Support Linux TPROXY for spoofing outgoing
1654 connections using the client IP address.
1655 NP: disables authentication and maybe IPv6 on the port.
1656
caf3666d 1657 ssl-bump For each intercepted connection allowed by ssl_bump
7a957a93 1658 ACLs, establish a secure connection with the client and with
caf3666d 1659 the server, decrypt HTTPS messages as they pass through
379e8c1c
AR
1660 Squid, and treat them as unencrypted HTTP messages,
1661 becoming the man-in-the-middle.
1662
caf3666d
AR
1663 An "ssl_bump server-first" match is required to
1664 fully enable bumping of intercepted SSL connections.
379e8c1c 1665
38450a50 1666 Requires tproxy or intercept.
379e8c1c 1667
7f45065d 1668 Omitting the mode flag causes default forward proxy mode to be used.
5b0f5383 1669
5b0f5383 1670
7f45065d
HN
1671 See http_port for a list of generic options
1672
1673
1674 SSL Options:
5b0f5383 1675
1676 cert= Path to SSL certificate (PEM format).
1677
1678 key= Path to SSL private key file (PEM format)
1679 if not specified, the certificate file is
1680 assumed to be a combined certificate and
1681 key file.
1682
1683 version= The version of SSL/TLS supported
1684 1 automatic (default)
1685 2 SSLv2 only
1686 3 SSLv3 only
1687 4 TLSv1 only
1688
1689 cipher= Colon separated list of supported ciphers.
1690
1691 options= Various SSL engine options. The most important
1692 being:
1693 NO_SSLv2 Disallow the use of SSLv2
1694 NO_SSLv3 Disallow the use of SSLv3
1695 NO_TLSv1 Disallow the use of TLSv1
1696 SINGLE_DH_USE Always create a new key when using
1697 temporary/ephemeral DH key exchanges
1698 See src/ssl_support.c or OpenSSL SSL_CTX_set_options
1699 documentation for a complete list of options.
1700
1701 clientca= File containing the list of CAs to use when
1702 requesting a client certificate.
1703
1704 cafile= File containing additional CA certificates to
1705 use when verifying client certificates. If unset
1706 clientca will be used.
1707
1708 capath= Directory containing additional CA certificates
1709 and CRL lists to use when verifying client certificates.
1710
1711 crlfile= File of additional CRL lists to use when verifying
1712 the client certificate, in addition to CRLs stored in
1713 the capath. Implies VERIFY_CRL flag below.
1714
1715 dhparams= File containing DH parameters for temporary/ephemeral
1716 DH key exchanges.
1717
1718 sslflags= Various flags modifying the use of SSL:
1719 DELAYED_AUTH
1720 Don't request client certificates
1721 immediately, but wait until acl processing
1722 requires a certificate (not yet implemented).
1723 NO_DEFAULT_CA
1724 Don't use the default CA lists built in
1725 to OpenSSL.
1726 NO_SESSION_REUSE
1727 Don't allow for session reuse. Each connection
1728 will result in a new SSL session.
1729 VERIFY_CRL
1730 Verify CRL lists when accepting client
1731 certificates.
1732 VERIFY_CRL_ALL
1733 Verify CRL lists for all certificates in the
1734 client certificate chain.
1735
1736 sslcontext= SSL session ID context identifier.
1737
379e8c1c
AR
1738 generate-host-certificates[=<on|off>]
1739 Dynamically create SSL server certificates for the
1740 destination hosts of bumped SSL requests.When
1741 enabled, the cert and key options are used to sign
1742 generated certificates. Otherwise generated
1743 certificate will be selfsigned.
1744 If there is CA certificate life time of generated
1745 certificate equals lifetime of CA certificate. If
1746 generated certificate is selfsigned lifetime is three
1747 years.
1748 This option is enabled by default when SslBump is used.
1749 See the sslBump option above for more information.
1750
1751 dynamic_cert_mem_cache_size=SIZE
1752 Approximate total RAM size spent on cached generated
1753 certificates. If set to zero, caching is disabled. The
23bb0ebf 1754 default value is 4MB.
379e8c1c 1755
859741ed 1756 See http_port for a list of available options.
5b0f5383 1757DOC_END
1758
41bd17a4 1759NAME: tcp_outgoing_tos tcp_outgoing_ds tcp_outgoing_dscp
1760TYPE: acl_tos
5473c134 1761DEFAULT: none
425de4c8 1762LOC: Ip::Qos::TheConfig.tosToServer
5473c134 1763DOC_START
425de4c8
AJ
1764 Allows you to select a TOS/Diffserv value for packets outgoing
1765 on the server side, based on an ACL.
5473c134 1766
41bd17a4 1767 tcp_outgoing_tos ds-field [!]aclname ...
cccac0a2 1768
41bd17a4 1769 Example where normal_service_net uses the TOS value 0x00
7def7206 1770 and good_service_net uses 0x20
cccac0a2 1771
864a62b5
AJ
1772 acl normal_service_net src 10.0.0.0/24
1773 acl good_service_net src 10.0.1.0/24
2c73de90 1774 tcp_outgoing_tos 0x00 normal_service_net
41bd17a4 1775 tcp_outgoing_tos 0x20 good_service_net
fa38076e 1776
41bd17a4 1777 TOS/DSCP values really only have local significance - so you should
575cb927
AJ
1778 know what you're specifying. For more information, see RFC2474,
1779 RFC2475, and RFC3260.
cccac0a2 1780
41bd17a4 1781 The TOS/DSCP byte must be exactly that - a octet value 0 - 255, or
1782 "default" to use whatever default your host has. Note that in
864a62b5
AJ
1783 practice often only multiples of 4 is usable as the two rightmost bits
1784 have been redefined for use by ECN (RFC 3168 section 23.1).
cccac0a2 1785
41bd17a4 1786 Processing proceeds in the order specified, and stops at first fully
1787 matching line.
cccac0a2 1788DOC_END
1789
41bd17a4 1790NAME: clientside_tos
1791TYPE: acl_tos
cccac0a2 1792DEFAULT: none
425de4c8
AJ
1793LOC: Ip::Qos::TheConfig.tosToClient
1794DOC_START
1795 Allows you to select a TOS/Diffserv value for packets being transmitted
1796 on the client-side, based on an ACL.
1797
1798 clientside_tos ds-field [!]aclname ...
1799
1800 Example where normal_service_net uses the TOS value 0x00
1801 and good_service_net uses 0x20
1802
1803 acl normal_service_net src 10.0.0.0/24
1804 acl good_service_net src 10.0.1.0/24
1805 clientside_tos 0x00 normal_service_net
1806 clientside_tos 0x20 good_service_net
1807
1808 Note: This feature is incompatible with qos_flows. Any TOS values set here
1809 will be overwritten by TOS values in qos_flows.
1810DOC_END
1811
1812NAME: tcp_outgoing_mark
1813TYPE: acl_nfmark
11e8cfe3 1814IFDEF: SO_MARK&&USE_LIBCAP
425de4c8
AJ
1815DEFAULT: none
1816LOC: Ip::Qos::TheConfig.nfmarkToServer
1817DOC_START
1818 Allows you to apply a Netfilter mark value to outgoing packets
1819 on the server side, based on an ACL.
1820
1821 tcp_outgoing_mark mark-value [!]aclname ...
1822
1823 Example where normal_service_net uses the mark value 0x00
1824 and good_service_net uses 0x20
1825
1826 acl normal_service_net src 10.0.0.0/24
1827 acl good_service_net src 10.0.1.0/24
1828 tcp_outgoing_mark 0x00 normal_service_net
1829 tcp_outgoing_mark 0x20 good_service_net
1830DOC_END
1831
1832NAME: clientside_mark
1833TYPE: acl_nfmark
11e8cfe3 1834IFDEF: SO_MARK&&USE_LIBCAP
425de4c8
AJ
1835DEFAULT: none
1836LOC: Ip::Qos::TheConfig.nfmarkToClient
cccac0a2 1837DOC_START
425de4c8
AJ
1838 Allows you to apply a Netfilter mark value to packets being transmitted
1839 on the client-side, based on an ACL.
1840
1841 clientside_mark mark-value [!]aclname ...
1842
1843 Example where normal_service_net uses the mark value 0x00
1844 and good_service_net uses 0x20
1845
1846 acl normal_service_net src 10.0.0.0/24
1847 acl good_service_net src 10.0.1.0/24
1848 clientside_mark 0x00 normal_service_net
1849 clientside_mark 0x20 good_service_net
1850
1851 Note: This feature is incompatible with qos_flows. Any mark values set here
1852 will be overwritten by mark values in qos_flows.
41bd17a4 1853DOC_END
cccac0a2 1854
575cb927
AJ
1855NAME: qos_flows
1856TYPE: QosConfig
425de4c8 1857IFDEF: USE_QOS_TOS
575cb927 1858DEFAULT: none
b7ac5457 1859LOC: Ip::Qos::TheConfig
7172612f 1860DOC_START
575cb927 1861 Allows you to select a TOS/DSCP value to mark outgoing
425de4c8
AJ
1862 connections with, based on where the reply was sourced. For
1863 platforms using netfilter, allows you to set a netfilter mark
1864 value instead of, or in addition to, a TOS value.
7172612f 1865
575cb927
AJ
1866 TOS values really only have local significance - so you should
1867 know what you're specifying. For more information, see RFC2474,
1868 RFC2475, and RFC3260.
7172612f 1869
425de4c8
AJ
1870 The TOS/DSCP byte must be exactly that - a octet value 0 - 255. Note that
1871 in practice often only multiples of 4 is usable as the two rightmost bits
1872 have been redefined for use by ECN (RFC 3168 section 23.1).
1873
1874 Mark values can be any unsigned 32-bit integer value.
7172612f 1875
425de4c8
AJ
1876 This setting is configured by setting the following values:
1877
1878 tos|mark Whether to set TOS or netfilter mark values
575cb927
AJ
1879
1880 local-hit=0xFF Value to mark local cache hits.
1881
1882 sibling-hit=0xFF Value to mark hits from sibling peers.
1883
1884 parent-hit=0xFF Value to mark hits from parent peers.
1885
a29d2a95
AB
1886 miss=0xFF[/mask] Value to mark cache misses. Takes precedence
1887 over the preserve-miss feature (see below), unless
1888 mask is specified, in which case only the bits
1889 specified in the mask are written.
575cb927 1890
425de4c8
AJ
1891 The TOS variant of the following features are only possible on Linux
1892 and require your kernel to be patched with the TOS preserving ZPH
1893 patch, available from http://zph.bratcheda.org
1894 No patch is needed to preserve the netfilter mark, which will work
1895 with all variants of netfilter.
575cb927 1896
575cb927 1897 disable-preserve-miss
425de4c8
AJ
1898 This option disables the preservation of the TOS or netfilter
1899 mark. By default, the existing TOS or netfilter mark value of
1900 the response coming from the remote server will be retained
1901 and masked with miss-mark.
1902 NOTE: in the case of a netfilter mark, the mark must be set on
1903 the connection (using the CONNMARK target) not on the packet
1904 (MARK target).
575cb927
AJ
1905
1906 miss-mask=0xFF
425de4c8
AJ
1907 Allows you to mask certain bits in the TOS or mark value
1908 received from the remote server, before copying the value to
1909 the TOS sent towards clients.
1910 Default for tos: 0xFF (TOS from server is not changed).
1911 Default for mark: 0xFFFFFFFF (mark from server is not changed).
1912
1913 All of these features require the --enable-zph-qos compilation flag
1914 (enabled by default). Netfilter marking also requires the
1915 libnetfilter_conntrack libraries (--with-netfilter-conntrack) and
1916 libcap 2.09+ (--with-libcap).
7172612f 1917
7172612f
AJ
1918DOC_END
1919
41bd17a4 1920NAME: tcp_outgoing_address
1921TYPE: acl_address
1922DEFAULT: none
1923LOC: Config.accessList.outgoing_address
1924DOC_START
1925 Allows you to map requests to different outgoing IP addresses
1926 based on the username or source address of the user making
1927 the request.
7f7db318 1928
41bd17a4 1929 tcp_outgoing_address ipaddr [[!]aclname] ...
c33aa074 1930
2dd51400
AJ
1931 For example;
1932 Forwarding clients with dedicated IPs for certain subnets.
9197cd13 1933
2dd51400
AJ
1934 acl normal_service_net src 10.0.0.0/24
1935 acl good_service_net src 10.0.2.0/24
1936
1937 tcp_outgoing_address 2001:db8::c001 good_service_net
1938 tcp_outgoing_address 10.1.0.2 good_service_net
1939
1940 tcp_outgoing_address 2001:db8::beef normal_service_net
1941 tcp_outgoing_address 10.1.0.1 normal_service_net
1942
1943 tcp_outgoing_address 2001:db8::1
1944 tcp_outgoing_address 10.1.0.3
9197cd13 1945
41bd17a4 1946 Processing proceeds in the order specified, and stops at first fully
1947 matching line.
cccac0a2 1948
2dd51400
AJ
1949 Squid will add an implicit IP version test to each line.
1950 Requests going to IPv4 websites will use the outgoing 10.1.0.* addresses.
1951 Requests going to IPv6 websites will use the outgoing 2001:db8:* addresses.
1952
1953
1954 NOTE: The use of this directive using client dependent ACLs is
41bd17a4 1955 incompatible with the use of server side persistent connections. To
1956 ensure correct results it is best to set server_persistent_connections
1957 to off when using this directive in such configurations.
cc192b50 1958
2dd51400 1959 NOTE: The use of this directive to set a local IP on outgoing TCP links
4ed968be 1960 is incompatible with using TPROXY to set client IP out outbound TCP links.
2dd51400
AJ
1961 When needing to contact peers use the no-tproxy cache_peer option and the
1962 client_dst_passthru directive re-enable normal forwarding such as this.
cc192b50 1963
cccac0a2 1964DOC_END
6db78a1a 1965
90529125
AJ
1966NAME: host_verify_strict
1967TYPE: onoff
1968DEFAULT: off
1969LOC: Config.onoff.hostStrictVerify
1970DOC_START
d8821934
AR
1971 Regardless of this option setting, when dealing with intercepted
1972 traffic, Squid always verifies that the destination IP address matches
2962f8b8 1973 the Host header domain or IP (called 'authority form URL').
d8821934
AR
1974
1975 This enforcement is performed to satisfy a MUST-level requirement in
1976 RFC 2616 section 14.23: "The Host field value MUST represent the naming
1977 authority of the origin server or gateway given by the original URL".
2962f8b8
AJ
1978
1979 When set to ON:
1980 Squid always responds with an HTTP 409 (Conflict) error
1981 page and logs a security warning if there is no match.
1982
1983 Squid verifies that the destination IP address matches
1984 the Host header for forward-proxy and reverse-proxy traffic
1985 as well. For those traffic types, Squid also enables the
1986 following checks, comparing the corresponding Host header
1987 and Request-URI components:
1988
1989 * The host names (domain or IP) must be identical,
1990 but valueless or missing Host header disables all checks.
1991 For the two host names to match, both must be either IP
1992 or FQDN.
1993
1994 * Port numbers must be identical, but if a port is missing
1995 the scheme-default port is assumed.
1996
1997
1998 When set to OFF (the default):
1999 Squid allows suspicious requests to continue but logs a
2000 security warning and blocks caching of the response.
2001
2002 * Forward-proxy traffic is not checked at all.
2003
2004 * Reverse-proxy traffic is not checked at all.
2005
2006 * Intercepted traffic which passes verification is handled
32c32865 2007 according to client_dst_passthru.
2962f8b8 2008
7177edfb
AJ
2009 * Intercepted requests which fail verification are sent
2010 to the client original destination instead of DIRECT.
2011 This overrides 'client_dst_passthru off'.
2962f8b8
AJ
2012
2013 For now suspicious intercepted CONNECT requests are always
2014 responded to with an HTTP 409 (Conflict) error page.
bfe4e2fe 2015
bfe4e2fe 2016
7177edfb 2017 SECURITY NOTE:
bfe4e2fe
AJ
2018
2019 As described in CVE-2009-0801 when the Host: header alone is used
2020 to determine the destination of a request it becomes trivial for
2021 malicious scripts on remote websites to bypass browser same-origin
2022 security policy and sandboxing protections.
2023
2024 The cause of this is that such applets are allowed to perform their
2025 own HTTP stack, in which case the same-origin policy of the browser
2026 sandbox only verifies that the applet tries to contact the same IP
2027 as from where it was loaded at the IP level. The Host: header may
2028 be different from the connected IP and approved origin.
7177edfb
AJ
2029
2030DOC_END
6b185b50 2031
7177edfb
AJ
2032NAME: client_dst_passthru
2033TYPE: onoff
2034DEFAULT: on
2035LOC: Config.onoff.client_dst_passthru
2036DOC_START
2037 With NAT or TPROXY intercepted traffic Squid may pass the request
2038 directly to the original client destination IP or seek a faster
2039 source using the HTTP Host header.
2040
2041 Using Host to locate alternative servers can provide faster
2042 connectivity with a range of failure recovery options.
2043 But can also lead to connectivity trouble when the client and
2044 server are attempting stateful interactions unaware of the proxy.
2045
2046 This option (on by default) prevents alternative DNS entries being
2047 located to send intercepted traffic DIRECT to an origin server.
2048 The clients original destination IP and port will be used instead.
2049
2050 Regardless of this option setting, when dealing with intercepted
2051 traffic Squid will verify the Host: header and any traffic which
2052 fails Host verification will be treated as if this option were ON.
2053
2054 see host_verify_strict for details on the verification process.
cccac0a2 2055DOC_END
2056
41bd17a4 2057COMMENT_START
2058 SSL OPTIONS
2059 -----------------------------------------------------------------------------
2060COMMENT_END
2061
2062NAME: ssl_unclean_shutdown
2063IFDEF: USE_SSL
cccac0a2 2064TYPE: onoff
2065DEFAULT: off
41bd17a4 2066LOC: Config.SSL.unclean_shutdown
cccac0a2 2067DOC_START
41bd17a4 2068 Some browsers (especially MSIE) bugs out on SSL shutdown
2069 messages.
cccac0a2 2070DOC_END
2071
41bd17a4 2072NAME: ssl_engine
2073IFDEF: USE_SSL
cccac0a2 2074TYPE: string
41bd17a4 2075LOC: Config.SSL.ssl_engine
2076DEFAULT: none
cccac0a2 2077DOC_START
41bd17a4 2078 The OpenSSL engine to use. You will need to set this if you
2079 would like to use hardware SSL acceleration for example.
cccac0a2 2080DOC_END
2081
41bd17a4 2082NAME: sslproxy_client_certificate
2083IFDEF: USE_SSL
cccac0a2 2084DEFAULT: none
41bd17a4 2085LOC: Config.ssl_client.cert
2086TYPE: string
cccac0a2 2087DOC_START
41bd17a4 2088 Client SSL Certificate to use when proxying https:// URLs
cccac0a2 2089DOC_END
2090
41bd17a4 2091NAME: sslproxy_client_key
2092IFDEF: USE_SSL
cccac0a2 2093DEFAULT: none
41bd17a4 2094LOC: Config.ssl_client.key
2095TYPE: string
cccac0a2 2096DOC_START
41bd17a4 2097 Client SSL Key to use when proxying https:// URLs
cccac0a2 2098DOC_END
2099
41bd17a4 2100NAME: sslproxy_version
2101IFDEF: USE_SSL
2102DEFAULT: 1
2103LOC: Config.ssl_client.version
2104TYPE: int
cccac0a2 2105DOC_START
41bd17a4 2106 SSL version level to use when proxying https:// URLs
3d96b0e8
AJ
2107
2108 The versions of SSL/TLS supported:
2109
2110 1 automatic (default)
2111 2 SSLv2 only
2112 3 SSLv3 only
2113 4 TLSv1.0 only
2114 5 TLSv1.1 only
2115 6 TLSv1.2 only
cccac0a2 2116DOC_END
2117
41bd17a4 2118NAME: sslproxy_options
2119IFDEF: USE_SSL
2120DEFAULT: none
2121LOC: Config.ssl_client.options
2122TYPE: string
cccac0a2 2123DOC_START
943c5f16 2124 SSL implementation options to use when proxying https:// URLs
ab202e4c
AJ
2125
2126 The most important being:
2127
3d96b0e8
AJ
2128 NO_SSLv2 Disallow the use of SSLv2
2129 NO_SSLv3 Disallow the use of SSLv3
2130 NO_TLSv1 Disallow the use of TLSv1.0
2131 NO_TLSv1_1 Disallow the use of TLSv1.1
2132 NO_TLSv1_2 Disallow the use of TLSv1.2
943c5f16
HN
2133 SINGLE_DH_USE
2134 Always create a new key when using temporary/ephemeral
2135 DH key exchanges
2136 SSL_OP_NO_TICKET
2137 Disable use of RFC5077 session tickets. Some servers
2138 may have problems understanding the TLS extension due
2139 to ambiguous specification in RFC4507.
2140 ALL Enable various bug workarounds suggested as "harmless"
2141 by OpenSSL. Be warned that this may reduce SSL/TLS
2142 strength to some attacks.
ab202e4c 2143
ab202e4c
AJ
2144 See the OpenSSL SSL_CTX_set_options documentation for a
2145 complete list of possible options.
cccac0a2 2146DOC_END
2147
41bd17a4 2148NAME: sslproxy_cipher
2149IFDEF: USE_SSL
2150DEFAULT: none
2151LOC: Config.ssl_client.cipher
2152TYPE: string
cccac0a2 2153DOC_START
41bd17a4 2154 SSL cipher list to use when proxying https:// URLs
ab202e4c
AJ
2155
2156 Colon separated list of supported ciphers.
cccac0a2 2157DOC_END
2158
41bd17a4 2159NAME: sslproxy_cafile
2160IFDEF: USE_SSL
2161DEFAULT: none
2162LOC: Config.ssl_client.cafile
2163TYPE: string
cccac0a2 2164DOC_START
41bd17a4 2165 file containing CA certificates to use when verifying server
2166 certificates while proxying https:// URLs
cccac0a2 2167DOC_END
0976f8db 2168
41bd17a4 2169NAME: sslproxy_capath
2170IFDEF: USE_SSL
5473c134 2171DEFAULT: none
41bd17a4 2172LOC: Config.ssl_client.capath
2173TYPE: string
5473c134 2174DOC_START
41bd17a4 2175 directory containing CA certificates to use when verifying
2176 server certificates while proxying https:// URLs
5473c134 2177DOC_END
2178
4c9da963 2179NAME: ssl_bump
2180IFDEF: USE_SSL
caf3666d 2181TYPE: sslproxy_ssl_bump
4c9da963 2182LOC: Config.accessList.ssl_bump
2183DEFAULT: none
2184DOC_START
caf3666d
AR
2185 This option is consulted when a CONNECT request is received on
2186 an http_port (or a new connection is intercepted at an
2187 https_port), provided that port was configured with an ssl-bump
2188 flag. The subsequent data on the connection is either treated as
2189 HTTPS and decrypted OR tunneled at TCP level without decryption,
2190 depending on the first bumping "mode" which ACLs match.
2191
2192 ssl_bump <mode> [!]acl ...
2193
2194 The following bumping modes are supported:
2195
2196 client-first
2197 Allow bumping of the connection. Establish a secure connection
2198 with the client first, then connect to the server. This old mode
2199 does not allow Squid to mimic server SSL certificate and does
2200 not work with intercepted SSL connections.
2201
2202 server-first
2203 Allow bumping of the connection. Establish a secure connection
2204 with the server first, then establish a secure connection with
2205 the client, using a mimicked server certificate. Works with both
2206 CONNECT requests and intercepted SSL connections.
2207
2208 none
2209 Become a TCP tunnel without decoding the connection.
2210 Works with both CONNECT requests and intercepted SSL
2211 connections. This is the default behavior when no
2212 ssl_bump option is given or no ssl_bump ACLs match.
2213
2214 By default, no connections are bumped.
2215
2216 The first matching ssl_bump option wins. If no ACLs match, the
2217 connection is not bumped. Unlike most allow/deny ACL lists, ssl_bump
2218 does not have an implicit "negate the last given option" rule. You
2219 must make that rule explicit if you convert old ssl_bump allow/deny
2220 rules that rely on such an implicit rule.
4c9da963 2221
e0c0d54c 2222 This clause supports both fast and slow acl types.
b3567eb5 2223 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
e0855596 2224
caf3666d
AR
2225 See also: http_port ssl-bump, https_port ssl-bump
2226
e0855596 2227
caf3666d
AR
2228 # Example: Bump all requests except those originating from
2229 # localhost and those going to example.com.
e0855596 2230
e0855596 2231 acl broken_sites dstdomain .example.com
caf3666d
AR
2232 ssl_bump none localhost
2233 ssl_bump none broken_sites
2234 ssl_bump server-first all
4c9da963 2235DOC_END
2236
41bd17a4 2237NAME: sslproxy_flags
2238IFDEF: USE_SSL
2239DEFAULT: none
2240LOC: Config.ssl_client.flags
2241TYPE: string
5473c134 2242DOC_START
41bd17a4 2243 Various flags modifying the use of SSL while proxying https:// URLs:
4c9da963 2244 DONT_VERIFY_PEER Accept certificates that fail verification.
2245 For refined control, see sslproxy_cert_error.
41bd17a4 2246 NO_DEFAULT_CA Don't use the default CA list built in
2247 to OpenSSL.
5473c134 2248DOC_END
2249
4c9da963 2250NAME: sslproxy_cert_error
2251IFDEF: USE_SSL
2252DEFAULT: none
2253LOC: Config.ssl_client.cert_error
2254TYPE: acl_access
2255DOC_START
2256 Use this ACL to bypass server certificate validation errors.
2257
2258 For example, the following lines will bypass all validation errors
3b8f558c 2259 when talking to servers for example.com. All other
4c9da963 2260 validation errors will result in ERR_SECURE_CONNECT_FAIL error.
2261
a87bfd3b
AR
2262 acl BrokenButTrustedServers dstdomain example.com
2263 sslproxy_cert_error allow BrokenButTrustedServers
4c9da963 2264 sslproxy_cert_error deny all
2265
b3567eb5
FC
2266 This clause only supports fast acl types.
2267 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
2268 Using slow acl types may result in server crashes
4c9da963 2269
2270 Without this option, all server certificate validation errors
2271 terminate the transaction. Bypassing validation errors is dangerous
2272 because an error usually implies that the server cannot be trusted and
2273 the connection may be insecure.
2274
2275 See also: sslproxy_flags and DONT_VERIFY_PEER.
2276
e0855596 2277 Default setting: sslproxy_cert_error deny all
4c9da963 2278DOC_END
2279
aebe6888
CT
2280NAME: sslproxy_cert_sign
2281IFDEF: USE_SSL
2282DEFAULT: none
10d914f6
CT
2283POSTSCRIPTUM: signUntrusted ssl::certUntrusted
2284POSTSCRIPTUM: signSelf ssl::certSelfSigned
2285POSTSCRIPTUM: signTrusted all
aebe6888
CT
2286TYPE: sslproxy_cert_sign
2287LOC: Config.ssl_client.cert_sign
2288DOC_START
2289
69742b76 2290 sslproxy_cert_sign <signing algorithm> acl ...
aebe6888 2291
69742b76 2292 The following certificate signing algorithms are supported:
aebe6888 2293 signTrusted
69742b76
AR
2294 Sign using the configured CA certificate which is usually
2295 placed in and trusted by end-user browsers. This is the
2296 default for trusted origin server certificates.
aebe6888 2297 signUntrusted
69742b76
AR
2298 Sign to guarantee an X509_V_ERR_CERT_UNTRUSTED browser error.
2299 This is the default for untrusted origin server certificates
2300 that are not self-signed (see ssl::certUntrusted).
aebe6888 2301 signSelf
69742b76 2302 Sign using a self-signed certificate with the right CN to
aebe6888 2303 generate a X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT error in the
69742b76
AR
2304 browser. This is the default for self-signed origin server
2305 certificates (see ssl::certSelfSigned).
aebe6888 2306
cf1c09f6
CT
2307 This clause only supports fast acl types.
2308
69742b76
AR
2309 When sslproxy_cert_sign acl(s) match, Squid uses the corresponding
2310 signing algorithm to generate the certificate and ignores all
2311 subsequent sslproxy_cert_sign options (the first match wins). If no
2312 acl(s) match, the default signing algorithm is determined by errors
2313 detected when obtaining and validating the origin server certificate.
cf1c09f6 2314
4b0d23b7
CT
2315 WARNING: SQUID_X509_V_ERR_DOMAIN_MISMATCH and ssl:certDomainMismatch can
2316 be used with sslproxy_cert_adapt, but if and only if Squid is bumping a
2317 CONNECT request that carries a domain name. In all other cases (CONNECT
2318 to an IP address or an intercepted SSL connection), Squid cannot detect
2319 the domain mismatch at certificate generation time when
2320 bump-server-first is used.
aebe6888
CT
2321DOC_END
2322
fb2178bb
CT
2323NAME: sslproxy_cert_adapt
2324IFDEF: USE_SSL
2325DEFAULT: none
2326TYPE: sslproxy_cert_adapt
2327LOC: Config.ssl_client.cert_adapt
2328DOC_START
2329
2330 sslproxy_cert_adapt <adaptation algorithm> acl ...
2331
69742b76 2332 The following certificate adaptation algorithms are supported:
fb2178bb 2333 setValidAfter
69742b76
AR
2334 Sets the "Not After" property to the "Not After" property of
2335 the CA certificate used to sign generated certificates.
fb2178bb 2336 setValidBefore
69742b76
AR
2337 Sets the "Not Before" property to the "Not Before" property of
2338 the CA certificate used to sign generated certificates.
2339 setCommonName or setCommonName{CN}
2340 Sets Subject.CN property to the host name specified as a
2341 CN parameter or, if no explicit CN parameter was specified,
2342 extracted from the CONNECT request. It is a misconfiguration
2343 to use setCommonName without an explicit parameter for
2344 intercepted or tproxied SSL connections.
fb2178bb 2345
cf1c09f6
CT
2346 This clause only supports fast acl types.
2347
69742b76
AR
2348 Squid first groups sslproxy_cert_adapt options by adaptation algorithm.
2349 Within a group, when sslproxy_cert_adapt acl(s) match, Squid uses the
2350 corresponding adaptation algorithm to generate the certificate and
2351 ignores all subsequent sslproxy_cert_adapt options in that algorithm's
2352 group (i.e., the first match wins within each algorithm group). If no
2353 acl(s) match, the default mimicking action takes place.
cf1c09f6 2354
4b0d23b7
CT
2355 WARNING: SQUID_X509_V_ERR_DOMAIN_MISMATCH and ssl:certDomainMismatch can
2356 be used with sslproxy_cert_adapt, but if and only if Squid is bumping a
2357 CONNECT request that carries a domain name. In all other cases (CONNECT
2358 to an IP address or an intercepted SSL connection), Squid cannot detect
2359 the domain mismatch at certificate generation time when
2360 bump-server-first is used.
fb2178bb
CT
2361DOC_END
2362
41bd17a4 2363NAME: sslpassword_program
2364IFDEF: USE_SSL
2365DEFAULT: none
2366LOC: Config.Program.ssl_password
2367TYPE: string
5473c134 2368DOC_START
41bd17a4 2369 Specify a program used for entering SSL key passphrases
2370 when using encrypted SSL certificate keys. If not specified
2371 keys must either be unencrypted, or Squid started with the -N
2372 option to allow it to query interactively for the passphrase.
7acb9ddd
HN
2373
2374 The key file name is given as argument to the program allowing
2375 selection of the right password if you have multiple encrypted
2376 keys.
5473c134 2377DOC_END
2378
95d2589c
CT
2379COMMENT_START
2380 OPTIONS RELATING TO EXTERNAL SSL_CRTD
2381 -----------------------------------------------------------------------------
2382COMMENT_END
2383
2384NAME: sslcrtd_program
2385TYPE: eol
2386IFDEF: USE_SSL_CRTD
2387DEFAULT: @DEFAULT_SSL_CRTD@ -s @DEFAULT_SSL_DB_DIR@ -M 4MB
2388LOC: Ssl::TheConfig.ssl_crtd
2389DOC_START
2390 Specify the location and options of the executable for ssl_crtd process.
2391 @DEFAULT_SSL_CRTD@ program requires -s and -M parameters
2392 For more information use:
2393 @DEFAULT_SSL_CRTD@ -h
2394DOC_END
2395
2396NAME: sslcrtd_children
2397TYPE: HelperChildConfig
2398IFDEF: USE_SSL_CRTD
2399DEFAULT: 32 startup=5 idle=1
2400LOC: Ssl::TheConfig.ssl_crtdChildren
2401DOC_START
2402 The maximum number of processes spawn to service ssl server.
2403 The maximum this may be safely set to is 32.
2404
2405 The startup= and idle= options allow some measure of skew in your
2406 tuning.
2407
2408 startup=N
2409
2410 Sets the minimum number of processes to spawn when Squid
2411 starts or reconfigures. When set to zero the first request will
2412 cause spawning of the first child process to handle it.
2413
2414 Starting too few children temporary slows Squid under load while it
2415 tries to spawn enough additional processes to cope with traffic.
2416
2417 idle=N
2418
2419 Sets a minimum of how many processes Squid is to try and keep available
2420 at all times. When traffic begins to rise above what the existing
2421 processes can handle this many more will be spawned up to the maximum
2422 configured. A minimum setting of 1 is required.
2423
2424 You must have at least one ssl_crtd process.
2425DOC_END
2426
2cef0ca6
AR
2427NAME: sslcrtvalidator_program
2428TYPE: eol
2429IFDEF: USE_SSL
2430DEFAULT: none
2431LOC: Ssl::TheConfig.ssl_crt_validator
2432DOC_START
2433 Specify the location and options of the executable for ssl_crt_validator
2434 process.
2435DOC_END
2436
2437NAME: sslcrtvalidator_children
2438TYPE: HelperChildConfig
2439IFDEF: USE_SSL
413bb969 2440DEFAULT: 32 startup=5 idle=1 concurrency=1
2cef0ca6
AR
2441LOC: Ssl::TheConfig.ssl_crt_validator_Children
2442DOC_START
2443 The maximum number of processes spawn to service ssl server.
2444 The maximum this may be safely set to is 32.
2445
2446 The startup= and idle= options allow some measure of skew in your
2447 tuning.
2448
2449 startup=N
2450
2451 Sets the minimum number of processes to spawn when Squid
2452 starts or reconfigures. When set to zero the first request will
2453 cause spawning of the first child process to handle it.
2454
2455 Starting too few children temporary slows Squid under load while it
2456 tries to spawn enough additional processes to cope with traffic.
2457
2458 idle=N
2459
2460 Sets a minimum of how many processes Squid is to try and keep available
2461 at all times. When traffic begins to rise above what the existing
2462 processes can handle this many more will be spawned up to the maximum
2463 configured. A minimum setting of 1 is required.
4a77bb4e
CT
2464
2465 concurrency=
2466
2467 The number of requests each certificate validator helper can handle in
2468 parallel. Defaults to 0 which indicates the certficate validator
2469 is a old-style single threaded redirector.
2470
2471 When this directive is set to a value >= 1 then the protocol
2472 used to communicate with the helper is modified to include
2473 a request ID in front of the request/response. The request
2474 ID from the request must be echoed back with the response
2475 to that request.
2cef0ca6
AR
2476
2477 You must have at least one ssl_crt_validator process.
2478DOC_END
2479
cccac0a2 2480COMMENT_START
41bd17a4 2481 OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
cccac0a2 2482 -----------------------------------------------------------------------------
2483COMMENT_END
2484
41bd17a4 2485NAME: cache_peer
2486TYPE: peer
2487DEFAULT: none
2488LOC: Config.peers
cccac0a2 2489DOC_START
41bd17a4 2490 To specify other caches in a hierarchy, use the format:
2b94f655 2491
41bd17a4 2492 cache_peer hostname type http-port icp-port [options]
2b94f655 2493
41bd17a4 2494 For example,
2b94f655 2495
41bd17a4 2496 # proxy icp
2497 # hostname type port port options
2498 # -------------------- -------- ----- ----- -----------
2b94f655 2499 cache_peer parent.foo.net parent 3128 3130 default
41bd17a4 2500 cache_peer sib1.foo.net sibling 3128 3130 proxy-only
2501 cache_peer sib2.foo.net sibling 3128 3130 proxy-only
2e9993e1 2502 cache_peer example.com parent 80 0 default
2b94f655
AJ
2503 cache_peer cdn.example.com sibling 3128 0
2504
2505 type: either 'parent', 'sibling', or 'multicast'.
2506
2507 proxy-port: The port number where the peer accept HTTP requests.
2508 For other Squid proxies this is usually 3128
2509 For web servers this is usually 80
2510
2511 icp-port: Used for querying neighbor caches about objects.
2512 Set to 0 if the peer does not support ICP or HTCP.
2513 See ICP and HTCP options below for additional details.
2514
2515
2516 ==== ICP OPTIONS ====
2517
2518 You MUST also set icp_port and icp_access explicitly when using these options.
2519 The defaults will prevent peer traffic using ICP.
2520
2521
2522 no-query Disable ICP queries to this neighbor.
2523
2524 multicast-responder
2525 Indicates the named peer is a member of a multicast group.
2526 ICP queries will not be sent directly to the peer, but ICP
2527 replies will be accepted from it.
2528
2529 closest-only Indicates that, for ICP_OP_MISS replies, we'll only forward
2530 CLOSEST_PARENT_MISSes and never FIRST_PARENT_MISSes.
2531
2532 background-ping
2533 To only send ICP queries to this neighbor infrequently.
2534 This is used to keep the neighbor round trip time updated
2535 and is usually used in conjunction with weighted-round-robin.
2536
2537
2538 ==== HTCP OPTIONS ====
2539
2540 You MUST also set htcp_port and htcp_access explicitly when using these options.
2541 The defaults will prevent peer traffic using HTCP.
2542
2543
2544 htcp Send HTCP, instead of ICP, queries to the neighbor.
2545 You probably also want to set the "icp-port" to 4827
18191440
AJ
2546 instead of 3130. This directive accepts a comma separated
2547 list of options described below.
2b94f655 2548
18191440 2549 htcp=oldsquid Send HTCP to old Squid versions (2.5 or earlier).
2b94f655 2550
18191440 2551 htcp=no-clr Send HTCP to the neighbor but without
2b94f655 2552 sending any CLR requests. This cannot be used with
18191440 2553 only-clr.
2b94f655 2554
18191440
AJ
2555 htcp=only-clr Send HTCP to the neighbor but ONLY CLR requests.
2556 This cannot be used with no-clr.
2b94f655 2557
18191440 2558 htcp=no-purge-clr
2b94f655
AJ
2559 Send HTCP to the neighbor including CLRs but only when
2560 they do not result from PURGE requests.
2561
18191440 2562 htcp=forward-clr
2b94f655
AJ
2563 Forward any HTCP CLR requests this proxy receives to the peer.
2564
2565
2566 ==== PEER SELECTION METHODS ====
2567
2568 The default peer selection method is ICP, with the first responding peer
2569 being used as source. These options can be used for better load balancing.
2570
2571
2572 default This is a parent cache which can be used as a "last-resort"
2573 if a peer cannot be located by any of the peer-selection methods.
2574 If specified more than once, only the first is used.
2575
2576 round-robin Load-Balance parents which should be used in a round-robin
2577 fashion in the absence of any ICP queries.
2578 weight=N can be used to add bias.
2579
2580 weighted-round-robin
2581 Load-Balance parents which should be used in a round-robin
2582 fashion with the frequency of each parent being based on the
2583 round trip time. Closer parents are used more often.
2584 Usually used for background-ping parents.
2585 weight=N can be used to add bias.
2586
2587 carp Load-Balance parents which should be used as a CARP array.
2588 The requests will be distributed among the parents based on the
2589 CARP load balancing hash function based on their weight.
2590
2591 userhash Load-balance parents based on the client proxy_auth or ident username.
2592
2593 sourcehash Load-balance parents based on the client source IP.
8a368316
AJ
2594
2595 multicast-siblings
2596 To be used only for cache peers of type "multicast".
2597 ALL members of this multicast group have "sibling"
2e9993e1 2598 relationship with it, not "parent". This is to a multicast
8a368316
AJ
2599 group when the requested object would be fetched only from
2600 a "parent" cache, anyway. It's useful, e.g., when
2601 configuring a pool of redundant Squid proxies, being
2602 members of the same multicast group.
2b94f655
AJ
2603
2604
2605 ==== PEER SELECTION OPTIONS ====
2606
2607 weight=N use to affect the selection of a peer during any weighted
2608 peer-selection mechanisms.
2609 The weight must be an integer; default is 1,
2610 larger weights are favored more.
2611 This option does not affect parent selection if a peering
2612 protocol is not in use.
2613
2614 basetime=N Specify a base amount to be subtracted from round trip
2615 times of parents.
2616 It is subtracted before division by weight in calculating
2617 which parent to fectch from. If the rtt is less than the
2618 base time the rtt is set to a minimal value.
2619
3c72389f
AJ
2620 ttl=N Specify a TTL to use when sending multicast ICP queries
2621 to this address.
2b94f655
AJ
2622 Only useful when sending to a multicast group.
2623 Because we don't accept ICP replies from random
2624 hosts, you must configure other group members as
2625 peers with the 'multicast-responder' option.
2626
2627 no-delay To prevent access to this neighbor from influencing the
2628 delay pools.
2629
2630 digest-url=URL Tell Squid to fetch the cache digest (if digests are
2631 enabled) for this host from the specified URL rather
2632 than the Squid default location.
2633
2634
de03b596
FC
2635 ==== CARP OPTIONS ====
2636
2637 carp-key=key-specification
2638 use a different key than the full URL to hash against the peer.
2639 the key-specification is a comma-separated list of the keywords
2640 scheme, host, port, path, params
2641 Order is not important.
2642
2b94f655
AJ
2643 ==== ACCELERATOR / REVERSE-PROXY OPTIONS ====
2644
2645 originserver Causes this parent to be contacted as an origin server.
2646 Meant to be used in accelerator setups when the peer
2647 is a web server.
2648
2649 forceddomain=name
2650 Set the Host header of requests forwarded to this peer.
2651 Useful in accelerator setups where the server (peer)
2652 expects a certain domain name but clients may request
2653 others. ie example.com or www.example.com
2654
2655 no-digest Disable request of cache digests.
2656
2657 no-netdb-exchange
2658 Disables requesting ICMP RTT database (NetDB).
2659
2660
2661 ==== AUTHENTICATION OPTIONS ====
2662
2663 login=user:password
2664 If this is a personal/workgroup proxy and your parent
2665 requires proxy authentication.
2666
2667 Note: The string can include URL escapes (i.e. %20 for
2668 spaces). This also means % must be written as %%.
2669
11e4c5e5
AJ
2670 login=PASSTHRU
2671 Send login details received from client to this peer.
2672 Both Proxy- and WWW-Authorization headers are passed
2673 without alteration to the peer.
2674 Authentication is not required by Squid for this to work.
2675
2676 Note: This will pass any form of authentication but
2677 only Basic auth will work through a proxy unless the
2678 connection-auth options are also used.
ee0b94f4 2679
2b94f655
AJ
2680 login=PASS Send login details received from client to this peer.
2681 Authentication is not required by this option.
11e4c5e5 2682
2b94f655
AJ
2683 If there are no client-provided authentication headers
2684 to pass on, but username and password are available
ee0b94f4
HN
2685 from an external ACL user= and password= result tags
2686 they may be sent instead.
2b94f655
AJ
2687
2688 Note: To combine this with proxy_auth both proxies must
2689 share the same user database as HTTP only allows for
2690 a single login (one for proxy, one for origin server).
2691 Also be warned this will expose your users proxy
2692 password to the peer. USE WITH CAUTION
2693
2694 login=*:password
2695 Send the username to the upstream cache, but with a
2696 fixed password. This is meant to be used when the peer
2697 is in another administrative domain, but it is still
2698 needed to identify each user.
2699 The star can optionally be followed by some extra
2700 information which is added to the username. This can
2701 be used to identify this proxy to the peer, similar to
2702 the login=username:password option above.
2703
9ca29d23
AJ
2704 login=NEGOTIATE
2705 If this is a personal/workgroup proxy and your parent
2706 requires a secure proxy authentication.
2707 The first principal from the default keytab or defined by
2708 the environment variable KRB5_KTNAME will be used.
2709
63f03f79
PL
2710 WARNING: The connection may transmit requests from multiple
2711 clients. Negotiate often assumes end-to-end authentication
2712 and a single-client. Which is not strictly true here.
2713
9ca29d23
AJ
2714 login=NEGOTIATE:principal_name
2715 If this is a personal/workgroup proxy and your parent
2716 requires a secure proxy authentication.
2717 The principal principal_name from the default keytab or
2718 defined by the environment variable KRB5_KTNAME will be
2719 used.
2720
63f03f79
PL
2721 WARNING: The connection may transmit requests from multiple
2722 clients. Negotiate often assumes end-to-end authentication
2723 and a single-client. Which is not strictly true here.
2724
2b94f655
AJ
2725 connection-auth=on|off
2726 Tell Squid that this peer does or not support Microsoft
2727 connection oriented authentication, and any such
2728 challenges received from there should be ignored.
2729 Default is auto to automatically determine the status
2730 of the peer.
2731
2732
2733 ==== SSL / HTTPS / TLS OPTIONS ====
2734
2735 ssl Encrypt connections to this peer with SSL/TLS.
2736
2737 sslcert=/path/to/ssl/certificate
2738 A client SSL certificate to use when connecting to
2739 this peer.
2740
2741 sslkey=/path/to/ssl/key
2742 The private SSL key corresponding to sslcert above.
2743 If 'sslkey' is not specified 'sslcert' is assumed to
2744 reference a combined file containing both the
2745 certificate and the key.
2746
3d96b0e8 2747 sslversion=1|2|3|4|5|6
2b94f655
AJ
2748 The SSL version to use when connecting to this peer
2749 1 = automatic (default)
2750 2 = SSL v2 only
2751 3 = SSL v3 only
3d96b0e8
AJ
2752 4 = TLS v1.0 only
2753 5 = TLS v1.1 only
2754 6 = TLS v1.2 only
2b94f655
AJ
2755
2756 sslcipher=... The list of valid SSL ciphers to use when connecting
2757 to this peer.
2758
943c5f16
HN
2759 ssloptions=... Specify various SSL implementation options:
2760
3d96b0e8
AJ
2761 NO_SSLv2 Disallow the use of SSLv2
2762 NO_SSLv3 Disallow the use of SSLv3
2763 NO_TLSv1 Disallow the use of TLSv1.0
2764 NO_TLSv1_1 Disallow the use of TLSv1.1
2765 NO_TLSv1_2 Disallow the use of TLSv1.2
943c5f16
HN
2766 SINGLE_DH_USE
2767 Always create a new key when using
2768 temporary/ephemeral DH key exchanges
2769 ALL Enable various bug workarounds
2770 suggested as "harmless" by OpenSSL
2771 Be warned that this reduces SSL/TLS
2772 strength to some attacks.
2773
2774 See the OpenSSL SSL_CTX_set_options documentation for a
2775 more complete list.
2b94f655
AJ
2776
2777 sslcafile=... A file containing additional CA certificates to use
2778 when verifying the peer certificate.
2779
2780 sslcapath=... A directory containing additional CA certificates to
2781 use when verifying the peer certificate.
2782
2783 sslcrlfile=... A certificate revocation list file to use when
2784 verifying the peer certificate.
2785
2786 sslflags=... Specify various flags modifying the SSL implementation:
2787
41bd17a4 2788 DONT_VERIFY_PEER
2789 Accept certificates even if they fail to
2790 verify.
2791 NO_DEFAULT_CA
2792 Don't use the default CA list built in
2793 to OpenSSL.
2794 DONT_VERIFY_DOMAIN
2795 Don't verify the peer certificate
2796 matches the server name
2b94f655
AJ
2797
2798 ssldomain= The peer name as advertised in it's certificate.
2799 Used for verifying the correctness of the received peer
2800 certificate. If not specified the peer hostname will be
2801 used.
2802
2803 front-end-https
2804 Enable the "Front-End-Https: On" header needed when
2805 using Squid as a SSL frontend in front of Microsoft OWA.
2806 See MS KB document Q307347 for details on this header.
2807 If set to auto the header will only be added if the
2808 request is forwarded as a https:// URL.
2809
2810
2811 ==== GENERAL OPTIONS ====
2812
2813 connect-timeout=N
2814 A peer-specific connect timeout.
2815 Also see the peer_connect_timeout directive.
2816
2817 connect-fail-limit=N
2818 How many times connecting to a peer must fail before
2819 it is marked as down. Default is 10.
2820
2821 allow-miss Disable Squid's use of only-if-cached when forwarding
2822 requests to siblings. This is primarily useful when
2823 icp_hit_stale is used by the sibling. To extensive use
2824 of this option may result in forwarding loops, and you
2825 should avoid having two-way peerings with this option.
2826 For example to deny peer usage on requests from peer
2827 by denying cache_peer_access if the source is a peer.
2828
2829 max-conn=N Limit the amount of connections Squid may open to this
2830 peer. see also
2831
2832 name=xxx Unique name for the peer.
2833 Required if you have multiple peers on the same host
2834 but different ports.
2835 This name can be used in cache_peer_access and similar
2836 directives to dentify the peer.
2837 Can be used by outgoing access controls through the
2838 peername ACL type.
2839
b0758e04
AJ
2840 no-tproxy Do not use the client-spoof TPROXY support when forwarding
2841 requests to this peer. Use normal address selection instead.
2842
2b94f655
AJ
2843 proxy-only objects fetched from the peer will not be stored locally.
2844
41bd17a4 2845DOC_END
cccac0a2 2846
41bd17a4 2847NAME: cache_peer_domain cache_host_domain
2848TYPE: hostdomain
2849DEFAULT: none
2850LOC: none
2851DOC_START
2852 Use to limit the domains for which a neighbor cache will be
2853 queried. Usage:
cccac0a2 2854
41bd17a4 2855 cache_peer_domain cache-host domain [domain ...]
2856 cache_peer_domain cache-host !domain
cccac0a2 2857
41bd17a4 2858 For example, specifying
cccac0a2 2859
41bd17a4 2860 cache_peer_domain parent.foo.net .edu
cccac0a2 2861
41bd17a4 2862 has the effect such that UDP query packets are sent to
2863 'bigserver' only when the requested object exists on a
2864 server in the .edu domain. Prefixing the domainname
2865 with '!' means the cache will be queried for objects
2866 NOT in that domain.
cccac0a2 2867
41bd17a4 2868 NOTE: * Any number of domains may be given for a cache-host,
2869 either on the same or separate lines.
2870 * When multiple domains are given for a particular
2871 cache-host, the first matched domain is applied.
2872 * Cache hosts with no domain restrictions are queried
2873 for all requests.
2874 * There are no defaults.
2875 * There is also a 'cache_peer_access' tag in the ACL
2876 section.
2877DOC_END
dd9b1776 2878
41bd17a4 2879NAME: cache_peer_access
2880TYPE: peer_access
2881DEFAULT: none
2882LOC: none
2883DOC_START
2884 Similar to 'cache_peer_domain' but provides more flexibility by
2885 using ACL elements.
cccac0a2 2886
41bd17a4 2887 cache_peer_access cache-host allow|deny [!]aclname ...
dd9b1776 2888
41bd17a4 2889 The syntax is identical to 'http_access' and the other lists of
2890 ACL elements. See the comments for 'http_access' below, or
e314b7b9 2891 the Squid FAQ (http://wiki.squid-cache.org/SquidFaq/SquidAcl).
41bd17a4 2892DOC_END
dd9b1776 2893
41bd17a4 2894NAME: neighbor_type_domain
2895TYPE: hostdomaintype
2896DEFAULT: none
2897LOC: none
2898DOC_START
2899 usage: neighbor_type_domain neighbor parent|sibling domain domain ...
cccac0a2 2900
41bd17a4 2901 Modifying the neighbor type for specific domains is now
11e3fa1c 2902 possible. You can treat some domains differently than the
41bd17a4 2903 default neighbor type specified on the 'cache_peer' line.
2904 Normally it should only be necessary to list domains which
2905 should be treated differently because the default neighbor type
2906 applies for hostnames which do not match domains listed here.
6bf4f823 2907
41bd17a4 2908EXAMPLE:
dbe3992d 2909 cache_peer cache.foo.org parent 3128 3130
41bd17a4 2910 neighbor_type_domain cache.foo.org sibling .com .net
2911 neighbor_type_domain cache.foo.org sibling .au .de
2912DOC_END
6bf4f823 2913
41bd17a4 2914NAME: dead_peer_timeout
2915COMMENT: (seconds)
2916DEFAULT: 10 seconds
2917TYPE: time_t
2918LOC: Config.Timeout.deadPeer
2919DOC_START
2920 This controls how long Squid waits to declare a peer cache
2921 as "dead." If there are no ICP replies received in this
2922 amount of time, Squid will declare the peer dead and not
2923 expect to receive any further ICP replies. However, it
2924 continues to send ICP queries, and will mark the peer as
2925 alive upon receipt of the first subsequent ICP reply.
699acd19 2926
41bd17a4 2927 This timeout also affects when Squid expects to receive ICP
2928 replies from peers. If more than 'dead_peer' seconds have
2929 passed since the last ICP reply was received, Squid will not
2930 expect to receive an ICP reply on the next query. Thus, if
2931 your time between requests is greater than this timeout, you
2932 will see a lot of requests sent DIRECT to origin servers
2933 instead of to your parents.
2934DOC_END
cccac0a2 2935
437823b4
AJ
2936NAME: forward_max_tries
2937DEFAULT: 10
2938TYPE: int
2939LOC: Config.forward_max_tries
2940DOC_START
2941 Controls how many different forward paths Squid will try
2942 before giving up. See also forward_timeout.
31ef19cd
AJ
2943
2944 NOTE: connect_retries (default: none) can make each of these
2945 possible forwarding paths be tried multiple times.
437823b4
AJ
2946DOC_END
2947
41bd17a4 2948NAME: hierarchy_stoplist
2949TYPE: wordlist
2950DEFAULT: none
2951LOC: Config.hierarchy_stoplist
2952DOC_START
2953 A list of words which, if found in a URL, cause the object to
2954 be handled directly by this cache. In other words, use this
2955 to not query neighbor caches for certain objects. You may
2956 list this option multiple times.
e0855596 2957
3387b5a4
AJ
2958 Example:
2959 hierarchy_stoplist cgi-bin ?
2960
2961 Note: never_direct overrides this option.
6b698a21 2962DOC_END
0976f8db 2963
41bd17a4 2964COMMENT_START
2965 MEMORY CACHE OPTIONS
2966 -----------------------------------------------------------------------------
2967COMMENT_END
2968
2969NAME: cache_mem
2970COMMENT: (bytes)
2971TYPE: b_size_t
df2eec10 2972DEFAULT: 256 MB
41bd17a4 2973LOC: Config.memMaxSize
6b698a21 2974DOC_START
41bd17a4 2975 NOTE: THIS PARAMETER DOES NOT SPECIFY THE MAXIMUM PROCESS SIZE.
2976 IT ONLY PLACES A LIMIT ON HOW MUCH ADDITIONAL MEMORY SQUID WILL
2977 USE AS A MEMORY CACHE OF OBJECTS. SQUID USES MEMORY FOR OTHER
2978 THINGS AS WELL. SEE THE SQUID FAQ SECTION 8 FOR DETAILS.
2979
2980 'cache_mem' specifies the ideal amount of memory to be used
2981 for:
2982 * In-Transit objects
2983 * Hot Objects
2984 * Negative-Cached objects
2985
2986 Data for these objects are stored in 4 KB blocks. This
2987 parameter specifies the ideal upper limit on the total size of
2988 4 KB blocks allocated. In-Transit objects take the highest
2989 priority.
2990
2991 In-transit objects have priority over the others. When
2992 additional space is needed for incoming data, negative-cached
2993 and hot objects will be released. In other words, the
2994 negative-cached and hot objects will fill up any unused space
2995 not needed for in-transit objects.
2996
2997 If circumstances require, this limit will be exceeded.
2998 Specifically, if your incoming request rate requires more than
2999 'cache_mem' of memory to hold in-transit objects, Squid will
3000 exceed this limit to satisfy the new requests. When the load
3001 decreases, blocks will be freed until the high-water mark is
3002 reached. Thereafter, blocks will be used to store hot
3003 objects.
29f35ca5
AR
3004
3005 If shared memory caching is enabled, Squid does not use the shared
3006 cache space for in-transit objects, but they still consume as much
3007 local memory as they need. For more details about the shared memory
3008 cache, see memory_cache_shared.
6b698a21 3009DOC_END
0976f8db 3010
41bd17a4 3011NAME: maximum_object_size_in_memory
3012COMMENT: (bytes)
3013TYPE: b_size_t
df2eec10 3014DEFAULT: 512 KB
41bd17a4 3015LOC: Config.Store.maxInMemObjSize
6b698a21 3016DOC_START
41bd17a4 3017 Objects greater than this size will not be attempted to kept in
3018 the memory cache. This should be set high enough to keep objects
3019 accessed frequently in memory to improve performance whilst low
3020 enough to keep larger objects from hoarding cache_mem.
6b698a21 3021DOC_END
0976f8db 3022
57af1e3f
AR
3023NAME: memory_cache_shared
3024COMMENT: on|off
3025TYPE: YesNoNone
3026LOC: Config.memShared
3027DEFAULT: none
70f856bc 3028DEFAULT_DOC: "on" where supported if doing memory caching with multiple SMP workers.
57af1e3f
AR
3029DOC_START
3030 Controls whether the memory cache is shared among SMP workers.
3031
70f856bc
AR
3032 The shared memory cache is meant to occupy cache_mem bytes and replace
3033 the non-shared memory cache, although some entities may still be
3034 cached locally by workers for now (e.g., internal and in-transit
3035 objects may be served from a local memory cache even if shared memory
3036 caching is enabled).
3037
65b81b27 3038 By default, the memory cache is shared if and only if all of the
70f856bc
AR
3039 following conditions are satisfied: Squid runs in SMP mode with
3040 multiple workers, cache_mem is positive, and Squid environment
3041 supports required IPC primitives (e.g., POSIX shared memory segments
3042 and GCC-style atomic operations).
3043
3044 To avoid blocking locks, shared memory uses opportunistic algorithms
3045 that do not guarantee that every cachable entity that could have been
3046 shared among SMP workers will actually be shared.
3047
3048 Currently, entities exceeding 32KB in size cannot be shared.
57af1e3f
AR
3049DOC_END
3050
ea21d497
HN
3051NAME: memory_cache_mode
3052TYPE: memcachemode
3053LOC: Config
3054DEFAULT: always
ff4b33f4 3055DOC_START
ea21d497 3056 Controls which objects to keep in the memory cache (cache_mem)
ff4b33f4 3057
ea21d497
HN
3058 always Keep most recently fetched objects in memory (default)
3059
3060 disk Only disk cache hits are kept in memory, which means
3061 an object must first be cached on disk and then hit
3062 a second time before cached in memory.
3063
3064 network Only objects fetched from network is kept in memory
ff4b33f4
HN
3065DOC_END
3066
41bd17a4 3067NAME: memory_replacement_policy
3068TYPE: removalpolicy
3069LOC: Config.memPolicy
3070DEFAULT: lru
6b698a21 3071DOC_START
41bd17a4 3072 The memory replacement policy parameter determines which
3073 objects are purged from memory when memory space is needed.
7f7db318 3074
41bd17a4 3075 See cache_replacement_policy for details.
3076DOC_END
6b698a21 3077
41bd17a4 3078COMMENT_START
3079 DISK CACHE OPTIONS
3080 -----------------------------------------------------------------------------
3081COMMENT_END
6b698a21 3082
41bd17a4 3083NAME: cache_replacement_policy
3084TYPE: removalpolicy
3085LOC: Config.replPolicy
3086DEFAULT: lru
3087DOC_START
3088 The cache replacement policy parameter determines which
3089 objects are evicted (replaced) when disk space is needed.
6b698a21 3090
41bd17a4 3091 lru : Squid's original list based LRU policy
3092 heap GDSF : Greedy-Dual Size Frequency
3093 heap LFUDA: Least Frequently Used with Dynamic Aging
3094 heap LRU : LRU policy implemented using a heap
6b698a21 3095
41bd17a4 3096 Applies to any cache_dir lines listed below this.
7f7db318 3097
41bd17a4 3098 The LRU policies keeps recently referenced objects.
0976f8db 3099
41bd17a4 3100 The heap GDSF policy optimizes object hit rate by keeping smaller
3101 popular objects in cache so it has a better chance of getting a
3102 hit. It achieves a lower byte hit rate than LFUDA though since
3103 it evicts larger (possibly popular) objects.
0976f8db 3104
41bd17a4 3105 The heap LFUDA policy keeps popular objects in cache regardless of
3106 their size and thus optimizes byte hit rate at the expense of
3107 hit rate since one large, popular object will prevent many
3108 smaller, slightly less popular objects from being cached.
0976f8db 3109
41bd17a4 3110 Both policies utilize a dynamic aging mechanism that prevents
3111 cache pollution that can otherwise occur with frequency-based
3112 replacement policies.
7d90757b 3113
41bd17a4 3114 NOTE: if using the LFUDA replacement policy you should increase
3115 the value of maximum_object_size above its default of 4096 KB to
3116 to maximize the potential byte hit rate improvement of LFUDA.
dc1af3cf 3117
41bd17a4 3118 For more information about the GDSF and LFUDA cache replacement
3119 policies see http://www.hpl.hp.com/techreports/1999/HPL-1999-69.html
3120 and http://fog.hpl.external.hp.com/techreports/98/HPL-98-173.html.
6b698a21 3121DOC_END
0976f8db 3122
41bd17a4 3123NAME: cache_dir
3124TYPE: cachedir
3125DEFAULT: none
41bd17a4 3126LOC: Config.cacheSwap
6b698a21 3127DOC_START
41bd17a4 3128 Usage:
0976f8db 3129
41bd17a4 3130 cache_dir Type Directory-Name Fs-specific-data [options]
0976f8db 3131
41bd17a4 3132 You can specify multiple cache_dir lines to spread the
3133 cache among different disk partitions.
0976f8db 3134
41bd17a4 3135 Type specifies the kind of storage system to use. Only "ufs"
3136 is built by default. To enable any of the other storage systems
3137 see the --enable-storeio configure option.
0976f8db 3138
41bd17a4 3139 'Directory' is a top-level directory where cache swap
3140 files will be stored. If you want to use an entire disk
3141 for caching, this can be the mount-point directory.
3142 The directory must exist and be writable by the Squid
3143 process. Squid will NOT create this directory for you.
0976f8db 3144
acf69d74
AJ
3145 In SMP configurations, cache_dir must not precede the workers option
3146 and should use configuration macros or conditionals to give each
3147 worker interested in disk caching a dedicated cache directory.
3148
41bd17a4 3149 The ufs store type:
0976f8db 3150
41bd17a4 3151 "ufs" is the old well-known Squid storage format that has always
3152 been there.
0976f8db 3153
41bd17a4 3154 cache_dir ufs Directory-Name Mbytes L1 L2 [options]
0976f8db 3155
41bd17a4 3156 'Mbytes' is the amount of disk space (MB) to use under this
3157 directory. The default is 100 MB. Change this to suit your
3158 configuration. Do NOT put the size of your disk drive here.
3159 Instead, if you want Squid to use the entire disk drive,
3160 subtract 20% and use that value.
0976f8db 3161
56fba4d0 3162 'L1' is the number of first-level subdirectories which
41bd17a4 3163 will be created under the 'Directory'. The default is 16.
0976f8db 3164
56fba4d0 3165 'L2' is the number of second-level subdirectories which
41bd17a4 3166 will be created under each first-level directory. The default
3167 is 256.
0976f8db 3168
41bd17a4 3169 The aufs store type:
7f7db318 3170
41bd17a4 3171 "aufs" uses the same storage format as "ufs", utilizing
3172 POSIX-threads to avoid blocking the main Squid process on
3173 disk-I/O. This was formerly known in Squid as async-io.
38f9c547 3174
41bd17a4 3175 cache_dir aufs Directory-Name Mbytes L1 L2 [options]
38f9c547 3176
41bd17a4 3177 see argument descriptions under ufs above
38f9c547 3178
41bd17a4 3179 The diskd store type:
38f9c547 3180
41bd17a4 3181 "diskd" uses the same storage format as "ufs", utilizing a
3182 separate process to avoid blocking the main Squid process on
3183 disk-I/O.
4c3ef9b2 3184
41bd17a4 3185 cache_dir diskd Directory-Name Mbytes L1 L2 [options] [Q1=n] [Q2=n]
0976f8db 3186
41bd17a4 3187 see argument descriptions under ufs above
0976f8db 3188
41bd17a4 3189 Q1 specifies the number of unacknowledged I/O requests when Squid
3190 stops opening new files. If this many messages are in the queues,
3191 Squid won't open new files. Default is 64
0976f8db 3192
41bd17a4 3193 Q2 specifies the number of unacknowledged messages when Squid
3194 starts blocking. If this many messages are in the queues,
3195 Squid blocks until it receives some replies. Default is 72
0976f8db 3196
41bd17a4 3197 When Q1 < Q2 (the default), the cache directory is optimized
3198 for lower response time at the expense of a decrease in hit
3199 ratio. If Q1 > Q2, the cache directory is optimized for
3200 higher hit ratio at the expense of an increase in response
3201 time.
0976f8db 3202
2e55f083 3203 The rock store type:
e2851fe7 3204
df881a0f 3205 cache_dir rock Directory-Name Mbytes <max-size=bytes> [options]
e2851fe7 3206
2e55f083 3207 The Rock Store type is a database-style storage. All cached
e2851fe7
AR
3208 entries are stored in a "database" file, using fixed-size slots,
3209 one entry per slot. The database size is specified in MB. The
3210 slot size is specified in bytes using the max-size option. See
3211 below for more info on the max-size option.
3212
43ebbac3
AR
3213 swap-timeout=msec: Squid will not start writing a miss to or
3214 reading a hit from disk if it estimates that the swap operation
3215 will take more than the specified number of milliseconds. By
3216 default and when set to zero, disables the disk I/O time limit
3217 enforcement. Ignored when using blocking I/O module because
3218 blocking synchronous I/O does not allow Squid to estimate the
3219 expected swap wait time.
3220
df881a0f 3221 max-swap-rate=swaps/sec: Artificially limits disk access using
1e614370 3222 the specified I/O rate limit. Swap out requests that
df881a0f 3223 would cause the average I/O rate to exceed the limit are
1e614370
DK
3224 delayed. Individual swap in requests (i.e., hits or reads) are
3225 not delayed, but they do contribute to measured swap rate and
3226 since they are placed in the same FIFO queue as swap out
3227 requests, they may wait longer if max-swap-rate is smaller.
3228 This is necessary on file systems that buffer "too
df881a0f
AR
3229 many" writes and then start blocking Squid and other processes
3230 while committing those writes to disk. Usually used together
3231 with swap-timeout to avoid excessive delays and queue overflows
3232 when disk demand exceeds available disk "bandwidth". By default
3233 and when set to zero, disables the disk I/O rate limit
3234 enforcement. Currently supported by IpcIo module only.
3235
3236
41bd17a4 3237 The coss store type:
0976f8db 3238
db263d62
AJ
3239 NP: COSS filesystem in Squid-3 has been deemed too unstable for
3240 production use and has thus been removed from this release.
3241 We hope that it can be made usable again soon.
3242
41bd17a4 3243 block-size=n defines the "block size" for COSS cache_dir's.
3244 Squid uses file numbers as block numbers. Since file numbers
3245 are limited to 24 bits, the block size determines the maximum
3246 size of the COSS partition. The default is 512 bytes, which
3247 leads to a maximum cache_dir size of 512<<24, or 8 GB. Note
3248 you should not change the coss block size after Squid
3249 has written some objects to the cache_dir.
0976f8db 3250
41bd17a4 3251 The coss file store has changed from 2.5. Now it uses a file
3252 called 'stripe' in the directory names in the config - and
3253 this will be created by squid -z.
0976f8db 3254
41bd17a4 3255 Common options:
0976f8db 3256
41bd17a4 3257 no-store, no new objects should be stored to this cache_dir
0976f8db 3258
b6662ffd
AJ
3259 min-size=n, refers to the min object size in bytes this cache_dir
3260 will accept. It's used to restrict a cache_dir to only store
3261 large objects (e.g. aufs) while other storedirs are optimized
3262 for smaller objects (e.g. COSS). Defaults to 0.
3263
00a6e30a
HN
3264 max-size=n, refers to the max object size in bytes this cache_dir
3265 supports. It is used to select the cache_dir to store the object.
41bd17a4 3266 Note: To make optimal use of the max-size limits you should order
3267 the cache_dir lines with the smallest max-size value first and the
3268 ones with no max-size specification last.
0976f8db 3269
41bd17a4 3270 Note for coss, max-size must be less than COSS_MEMBUF_SZ,
3271 which can be changed with the --with-coss-membuf-size=N configure
3272 option.
bebc043b 3273NOCOMMENT_START
e0855596
AJ
3274
3275# Uncomment and adjust the following to add a disk cache directory.
3276#cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
bebc043b 3277NOCOMMENT_END
6b698a21 3278DOC_END
0976f8db 3279
41bd17a4 3280NAME: store_dir_select_algorithm
3281TYPE: string
3282LOC: Config.store_dir_select_algorithm
3283DEFAULT: least-load
6b698a21 3284DOC_START
41bd17a4 3285 Set this to 'round-robin' as an alternative.
6b698a21 3286DOC_END
0976f8db 3287
41bd17a4 3288NAME: max_open_disk_fds
3289TYPE: int
3290LOC: Config.max_open_disk_fds
3291DEFAULT: 0
6b698a21 3292DOC_START
41bd17a4 3293 To avoid having disk as the I/O bottleneck Squid can optionally
3294 bypass the on-disk cache if more than this amount of disk file
3295 descriptors are open.
3296
3297 A value of 0 indicates no limit.
6b698a21 3298DOC_END
0976f8db 3299
41bd17a4 3300NAME: minimum_object_size
6b698a21 3301COMMENT: (bytes)
47f6e231 3302TYPE: b_int64_t
6b698a21 3303DEFAULT: 0 KB
41bd17a4 3304LOC: Config.Store.minObjectSize
6b698a21 3305DOC_START
41bd17a4 3306 Objects smaller than this size will NOT be saved on disk. The
3307 value is specified in kilobytes, and the default is 0 KB, which
3308 means there is no minimum.
6b698a21 3309DOC_END
0976f8db 3310
41bd17a4 3311NAME: maximum_object_size
3312COMMENT: (bytes)
3313TYPE: b_int64_t
3314DEFAULT: 4096 KB
3315LOC: Config.Store.maxObjectSize
777831e0 3316DOC_START
41bd17a4 3317 Objects larger than this size will NOT be saved on disk. The
3318 value is specified in kilobytes, and the default is 4MB. If
3319 you wish to get a high BYTES hit ratio, you should probably
3320 increase this (one 32 MB object hit counts for 3200 10KB
3321 hits). If you wish to increase speed more than your want to
3322 save bandwidth you should leave this low.
777831e0 3323
41bd17a4 3324 NOTE: if using the LFUDA replacement policy you should increase
3325 this value to maximize the byte hit rate improvement of LFUDA!
3326 See replacement_policy below for a discussion of this policy.
6b698a21 3327DOC_END
0976f8db 3328
41bd17a4 3329NAME: cache_swap_low
3330COMMENT: (percent, 0-100)
5473c134 3331TYPE: int
41bd17a4 3332DEFAULT: 90
3333LOC: Config.Swap.lowWaterMark
3334DOC_NONE
3335
3336NAME: cache_swap_high
3337COMMENT: (percent, 0-100)
3338TYPE: int
3339DEFAULT: 95
3340LOC: Config.Swap.highWaterMark
6b698a21 3341DOC_START
41bd17a4 3342
3343 The low- and high-water marks for cache object replacement.
3344 Replacement begins when the swap (disk) usage is above the
3345 low-water mark and attempts to maintain utilization near the
3346 low-water mark. As swap utilization gets close to high-water
3347 mark object eviction becomes more aggressive. If utilization is
3348 close to the low-water mark less replacement is done each time.
3349
3350 Defaults are 90% and 95%. If you have a large cache, 5% could be
3351 hundreds of MB. If this is the case you may wish to set these
3352 numbers closer together.
6b698a21 3353DOC_END
0976f8db 3354
5473c134 3355COMMENT_START
41bd17a4 3356 LOGFILE OPTIONS
5473c134 3357 -----------------------------------------------------------------------------
3358COMMENT_END
0976f8db 3359
41bd17a4 3360NAME: logformat
3361TYPE: logformat
20efa1c2 3362LOC: Log::TheConfig
5473c134 3363DEFAULT: none
6b698a21 3364DOC_START
41bd17a4 3365 Usage:
0976f8db 3366
41bd17a4 3367 logformat <name> <format specification>
0976f8db 3368
41bd17a4 3369 Defines an access log format.
6b698a21 3370
41bd17a4 3371 The <format specification> is a string with embedded % format codes
5473c134 3372
41bd17a4 3373 % format codes all follow the same basic structure where all but
3374 the formatcode is optional. Output strings are automatically escaped
3375 as required according to their context and the output format
3376 modifiers are usually not needed, but can be specified if an explicit
3377 output format is desired.
6b698a21 3378
41bd17a4 3379 % ["|[|'|#] [-] [[0]width] [{argument}] formatcode
0976f8db 3380
41bd17a4 3381 " output in quoted string format
3382 [ output in squid text log format as used by log_mime_hdrs
3383 # output in URL quoted format
3384 ' output as-is
5473c134 3385
41bd17a4 3386 - left aligned
c32c6db7
AR
3387
3388 width minimum and/or maximum field width:
3389 [width_min][.width_max]
e2851fe7
AR
3390 When minimum starts with 0, the field is zero-padded.
3391 String values exceeding maximum width are truncated.
c32c6db7 3392
41bd17a4 3393 {arg} argument such as header name etc
5473c134 3394
41bd17a4 3395 Format codes:
5473c134 3396
3ff65596 3397 % a literal % character
f4b68e1a
AJ
3398 sn Unique sequence number per log line entry
3399 err_code The ID of an error response served by Squid or
3400 a similar internal error identifier.
3401 err_detail Additional err_code-dependent error information.
d7f4a0b7
CT
3402 note The meta header specified by the argument. Also
3403 logs the adaptation meta headers set by the
3404 adaptation_meta configuration parameter.
3405 If no argument given all meta headers logged.
f4b68e1a
AJ
3406
3407 Connection related format codes:
3408
41bd17a4 3409 >a Client source IP address
3410 >A Client FQDN
3411 >p Client source port
8652f8e7
AJ
3412 >eui Client source EUI (MAC address, EUI-48 or EUI-64 identifier)
3413 >la Local IP address the client connected to
3414 >lp Local port number the client connected to
3415
28417506
CT
3416 la Local listening IP address the client connection was connected to.
3417 lp Local listening port number the client connection was connected to.
3418
8652f8e7
AJ
3419 <a Server IP address of the last server or peer connection
3420 <A Server FQDN or peer name
3421 <p Server port number of the last server or peer connection
c3a082ae 3422 <la Local IP address of the last server or peer connection
152e24b3 3423 <lp Local port number of the last server or peer connection
f4b68e1a
AJ
3424
3425 Time related format codes:
3426
41bd17a4 3427 ts Seconds since epoch
3428 tu subsecond time (milliseconds)
3429 tl Local time. Optional strftime format argument
3ff65596 3430 default %d/%b/%Y:%H:%M:%S %z
41bd17a4 3431 tg GMT time. Optional strftime format argument
3ff65596 3432 default %d/%b/%Y:%H:%M:%S %z
41bd17a4 3433 tr Response time (milliseconds)
3ff65596
AR
3434 dt Total time spent making DNS lookups (milliseconds)
3435
8652f8e7
AJ
3436 Access Control related format codes:
3437
3438 et Tag returned by external acl
3439 ea Log string returned by external acl
3440 un User name (any available)
3441 ul User name from authentication
3442 ue User name from external acl helper
3443 ui User name from ident
3444 us User name from SSL
3445
3446 HTTP related format codes:
3ff65596 3447
ca2e92d8 3448 [http::]>h Original request header. Optional header name argument
3ff65596 3449 on the format header[:[separator]element]
6fca33e0
CT
3450 [http::]>ha The HTTP request headers after adaptation and redirection.
3451 Optional header name argument as for >h
3ff65596
AR
3452 [http::]<h Reply header. Optional header name argument
3453 as for >h
3ff65596
AR
3454 [http::]>Hs HTTP status code sent to the client
3455 [http::]<Hs HTTP status code received from the next hop
bae917ac
CT
3456 [http::]<bs Number of HTTP-equivalent message body bytes
3457 received from the next hop, excluding chunked
3458 transfer encoding and control messages.
3459 Generated FTP/Gopher listings are treated as
3460 received bodies.
3ff65596
AR
3461 [http::]mt MIME content type
3462 [http::]rm Request method (GET/POST etc)
f025622f
AJ
3463 [http::]>rm Request method from client
3464 [http::]<rm Request method sent to server or peer
3465 [http::]ru Request URL from client (historic, filtered for logging)
3466 [http::]>ru Request URL from client
3467 [http::]<ru Request URL sent to server or peer
3ff65596 3468 [http::]rp Request URL-Path excluding hostname
f025622f
AJ
3469 [http::]>rp Request URL-Path excluding hostname from client
3470 [http::]<rp Request URL-Path excluding hostname sento to server or peer
3ff65596 3471 [http::]rv Request protocol version
f025622f
AJ
3472 [http::]>rv Request protocol version from client
3473 [http::]<rv Request protocol version sent to server or peer
3ff65596
AR
3474 [http::]<st Sent reply size including HTTP headers
3475 [http::]>st Received request size including HTTP headers. In the
3476 case of chunked requests the chunked encoding metadata
3477 are not included
3478 [http::]>sh Received HTTP request headers size
3479 [http::]<sh Sent HTTP reply headers size
3480 [http::]st Request+Reply size including HTTP headers
3481 [http::]<sH Reply high offset sent
3482 [http::]<sS Upstream object size
3483 [http::]<pt Peer response time in milliseconds. The timer starts
3484 when the last request byte is sent to the next hop
3485 and stops when the last response byte is received.
3486 [http::]<tt Total server-side time in milliseconds. The timer
3487 starts with the first connect request (or write I/O)
3488 sent to the first selected peer. The timer stops
3489 with the last I/O with the last peer.
3490
8652f8e7
AJ
3491 Squid handling related format codes:
3492
3493 Ss Squid request status (TCP_MISS etc)
3494 Sh Squid hierarchy status (DEFAULT_PARENT etc)
3495
08097970
AR
3496 SSL-related format codes:
3497
3498 ssl::bump_mode SslBump decision for the transaction:
3499
3500 For CONNECT requests that initiated bumping of
3501 a connection and for any request received on
3502 an already bumped connection, Squid logs the
3503 corresponding SslBump mode ("server-first" or
3504 "client-first"). See the ssl_bump option for
3505 more information about these modes.
3506
3507 A "none" token is logged for requests that
3508 triggered "ssl_bump" ACL evaluation matching
3509 either a "none" rule or no rules at all.
3510
3511 In all other cases, a single dash ("-") is
3512 logged.
3513
5038f9d8 3514 If ICAP is enabled, the following code becomes available (as
3ff65596
AR
3515 well as ICAP log codes documented with the icap_log option):
3516
3517 icap::tt Total ICAP processing time for the HTTP
3518 transaction. The timer ticks when ICAP
3519 ACLs are checked and when ICAP
3520 transaction is in progress.
3521
5038f9d8 3522 If adaptation is enabled the following three codes become available:
3ff65596 3523
5038f9d8
AR
3524 adapt::<last_h The header of the last ICAP response or
3525 meta-information from the last eCAP
3526 transaction related to the HTTP transaction.
3527 Like <h, accepts an optional header name
3528 argument.
3ff65596
AR
3529
3530 adapt::sum_trs Summed adaptation transaction response
3531 times recorded as a comma-separated list in
3532 the order of transaction start time. Each time
3533 value is recorded as an integer number,
3534 representing response time of one or more
3535 adaptation (ICAP or eCAP) transaction in
3536 milliseconds. When a failed transaction is
3537 being retried or repeated, its time is not
3538 logged individually but added to the
3539 replacement (next) transaction. See also:
3540 adapt::all_trs.
3541
3542 adapt::all_trs All adaptation transaction response times.
3543 Same as adaptation_strs but response times of
3544 individual transactions are never added
3545 together. Instead, all transaction response
3546 times are recorded individually.
3547
3548 You can prefix adapt::*_trs format codes with adaptation
3549 service name in curly braces to record response time(s) specific
3550 to that service. For example: %{my_service}adapt::sum_trs
5473c134 3551
f4698e0b
CT
3552 If SSL is enabled, the following formating codes become available:
3553
3554 %ssl::>cert_subject The Subject field of the received client
3555 SSL certificate or a dash ('-') if Squid has
3556 received an invalid/malformed certificate or
3557 no certificate at all. Consider encoding the
3558 logged value because Subject often has spaces.
3559
3560 %ssl::>cert_issuer The Issuer field of the received client
3561 SSL certificate or a dash ('-') if Squid has
3562 received an invalid/malformed certificate or
3563 no certificate at all. Consider encoding the
3564 logged value because Issuer often has spaces.
3565
7d9acc3c
AJ
3566 The default formats available (which do not need re-defining) are:
3567
bd85ea1f
AJ
3568logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
3569logformat common %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
3570logformat combined %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
20efa1c2
AJ
3571logformat referrer %ts.%03tu %>a %{Referer}>h %ru
3572logformat useragent %>a [%tl] "%{User-Agent}>h"
3573
8652f8e7
AJ
3574 NOTE: When the log_mime_hdrs directive is set to ON.
3575 The squid, common and combined formats have a safely encoded copy
3576 of the mime headers appended to each line within a pair of brackets.
3577
3578 NOTE: The common and combined formats are not quite true to the Apache definition.
3579 The logs from Squid contain an extra status and hierarchy code appended.
20efa1c2 3580
5473c134 3581DOC_END
3582
41bd17a4 3583NAME: access_log cache_access_log
3584TYPE: access_log
3585LOC: Config.Log.accesslogs
82b7abe3 3586DEFAULT_IF_NONE: daemon:@DEFAULT_ACCESS_LOG@ squid
5473c134 3587DOC_START
41bd17a4 3588 These files log client request activities. Has a line every HTTP or
3589 ICP request. The format is:
82b7abe3 3590 access_log <module>:<place> [<logformat name> [acl acl ...]]
41bd17a4 3591 access_log none [acl acl ...]]
82b7abe3
AJ
3592
3593 Will log to the specified module:place using the specified format (which
41bd17a4 3594 must be defined in a logformat directive) those entries which match
3595 ALL the acl's specified (which must be defined in acl clauses).
82b7abe3
AJ
3596 If no acl is specified, all requests will be logged to this destination.
3597
3598 ===== Modules Currently available =====
3599
bb7a1781 3600 none Do not log any requests matching these ACL.
82b7abe3
AJ
3601 Do not specify Place or logformat name.
3602
3603 stdio Write each log line to disk immediately at the completion of
3604 each request.
3605 Place: the filename and path to be written.
3606
3607 daemon Very similar to stdio. But instead of writing to disk the log
3608 line is passed to a daemon helper for asychronous handling instead.
3609 Place: varies depending on the daemon.
3610
3611 log_file_daemon Place: the file name and path to be written.
3612
3613 syslog To log each request via syslog facility.
3614 Place: The syslog facility and priority level for these entries.
3615 Place Format: facility.priority
5473c134 3616
82b7abe3
AJ
3617 where facility could be any of:
3618 authpriv, daemon, local0 ... local7 or user.
5473c134 3619
82b7abe3
AJ
3620 And priority could be any of:
3621 err, warning, notice, info, debug.
3622
3623 udp To send each log line as text data to a UDP receiver.
3624 Place: The destination host name or IP and port.
f4fc8610 3625 Place Format: //host:port
df2eec10 3626
2bf4e8fa
AJ
3627 tcp To send each log line as text data to a TCP receiver.
3628 Place: The destination host name or IP and port.
f4fc8610 3629 Place Format: //host:port
df2eec10
AJ
3630
3631 Default:
82b7abe3 3632 access_log daemon:@DEFAULT_ACCESS_LOG@ squid
41bd17a4 3633DOC_END
5473c134 3634
3ff65596
AR
3635NAME: icap_log
3636TYPE: access_log
3637IFDEF: ICAP_CLIENT
3638LOC: Config.Log.icaplogs
3639DEFAULT: none
3640DOC_START
3641 ICAP log files record ICAP transaction summaries, one line per
3642 transaction.
3643
3644 The icap_log option format is:
3645 icap_log <filepath> [<logformat name> [acl acl ...]]
3646 icap_log none [acl acl ...]]
3647
3648 Please see access_log option documentation for details. The two
3649 kinds of logs share the overall configuration approach and many
3650 features.
3651
3652 ICAP processing of a single HTTP message or transaction may
3653 require multiple ICAP transactions. In such cases, multiple
3654 ICAP transaction log lines will correspond to a single access
3655 log line.
3656
3657 ICAP log uses logformat codes that make sense for an ICAP
3658 transaction. Header-related codes are applied to the HTTP header
3659 embedded in an ICAP server response, with the following caveats:
3660 For REQMOD, there is no HTTP response header unless the ICAP
3661 server performed request satisfaction. For RESPMOD, the HTTP
3662 request header is the header sent to the ICAP server. For
3663 OPTIONS, there are no HTTP headers.
3664
3665 The following format codes are also available for ICAP logs:
3666
3667 icap::<A ICAP server IP address. Similar to <A.
3668
3669 icap::<service_name ICAP service name from the icap_service
3670 option in Squid configuration file.
3671
3672 icap::ru ICAP Request-URI. Similar to ru.
3673
3674 icap::rm ICAP request method (REQMOD, RESPMOD, or
3675 OPTIONS). Similar to existing rm.
3676
3677 icap::>st Bytes sent to the ICAP server (TCP payload
3678 only; i.e., what Squid writes to the socket).
3679
3680 icap::<st Bytes received from the ICAP server (TCP
3681 payload only; i.e., what Squid reads from
3682 the socket).
3683
bae917ac
CT
3684 icap::<bs Number of message body bytes received from the
3685 ICAP server. ICAP message body, if any, usually
3686 includes encapsulated HTTP message headers and
3687 possibly encapsulated HTTP message body. The
3688 HTTP body part is dechunked before its size is
3689 computed.
3690
3ff65596
AR
3691 icap::tr Transaction response time (in
3692 milliseconds). The timer starts when
3693 the ICAP transaction is created and
3694 stops when the transaction is completed.
3695 Similar to tr.
3696
3697 icap::tio Transaction I/O time (in milliseconds). The
3698 timer starts when the first ICAP request
3699 byte is scheduled for sending. The timers
3700 stops when the last byte of the ICAP response
3701 is received.
3702
3703 icap::to Transaction outcome: ICAP_ERR* for all
3704 transaction errors, ICAP_OPT for OPTION
3705 transactions, ICAP_ECHO for 204
3706 responses, ICAP_MOD for message
3707 modification, and ICAP_SAT for request
3708 satisfaction. Similar to Ss.
3709
3710 icap::Hs ICAP response status code. Similar to Hs.
3711
3712 icap::>h ICAP request header(s). Similar to >h.
3713
3714 icap::<h ICAP response header(s). Similar to <h.
3715
3716 The default ICAP log format, which can be used without an explicit
3717 definition, is called icap_squid:
3718
3719logformat icap_squid %ts.%03tu %6icap::tr %>a %icap::to/%03icap::Hs %icap::<size %icap::rm %icap::ru% %un -/%icap::<A -
3720
5038f9d8 3721 See also: logformat, log_icap, and %adapt::<last_h
3ff65596
AR
3722DOC_END
3723
82b7abe3
AJ
3724NAME: logfile_daemon
3725TYPE: string
3726DEFAULT: @DEFAULT_LOGFILED@
3727LOC: Log::TheConfig.logfile_daemon
3728DOC_START
3729 Specify the path to the logfile-writing daemon. This daemon is
3730 used to write the access and store logs, if configured.
14b24caf
HN
3731
3732 Squid sends a number of commands to the log daemon:
3733 L<data>\n - logfile data
3734 R\n - rotate file
3735 T\n - truncate file
dd68402f 3736 O\n - reopen file
14b24caf
HN
3737 F\n - flush file
3738 r<n>\n - set rotate count to <n>
3739 b<n>\n - 1 = buffer output, 0 = don't buffer output
3740
3741 No responses is expected.
82b7abe3
AJ
3742DOC_END
3743
5b0f5383 3744NAME: log_access
3745TYPE: acl_access
3746LOC: Config.accessList.log
3747DEFAULT: none
3748COMMENT: allow|deny acl acl...
3749DOC_START
3750 This options allows you to control which requests gets logged
3751 to access.log (see access_log directive). Requests denied for
3752 logging will also not be accounted for in performance counters.
b3567eb5
FC
3753
3754 This clause only supports fast acl types.
3755 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
5b0f5383 3756DOC_END
3757
3ff65596
AR
3758NAME: log_icap
3759TYPE: acl_access
3760IFDEF: ICAP_CLIENT
3761LOC: Config.accessList.icap
3762DEFAULT: none
3763DOC_START
3764 This options allows you to control which requests get logged
3765 to icap.log. See the icap_log directive for ICAP log details.
3766DOC_END
3767
41bd17a4 3768NAME: cache_store_log
3769TYPE: string
df2eec10 3770DEFAULT: none
41bd17a4 3771LOC: Config.Log.store
3772DOC_START
3773 Logs the activities of the storage manager. Shows which
3774 objects are ejected from the cache, and which objects are
6d1dfcfc 3775 saved and for how long.
df2eec10 3776 There are not really utilities to analyze this data, so you can safely
6d1dfcfc
AJ
3777 disable it (the default).
3778
3779 Store log uses modular logging outputs. See access_log for the list
3780 of modules supported.
3781
e0855596 3782 Example:
6d1dfcfc
AJ
3783 cache_store_log stdio:@DEFAULT_STORE_LOG@
3784 cache_store_log daemon:@DEFAULT_STORE_LOG@
5473c134 3785DOC_END
3786
41bd17a4 3787NAME: cache_swap_state cache_swap_log
3788TYPE: string
3789LOC: Config.Log.swap
5473c134 3790DEFAULT: none
3791DOC_START
41bd17a4 3792 Location for the cache "swap.state" file. This index file holds
3793 the metadata of objects saved on disk. It is used to rebuild
3794 the cache during startup. Normally this file resides in each
3795 'cache_dir' directory, but you may specify an alternate
3796 pathname here. Note you must give a full filename, not just
3797 a directory. Since this is the index for the whole object
3798 list you CANNOT periodically rotate it!
5473c134 3799
41bd17a4 3800 If %s can be used in the file name it will be replaced with a
3801 a representation of the cache_dir name where each / is replaced
3802 with '.'. This is needed to allow adding/removing cache_dir
3803 lines when cache_swap_log is being used.
5473c134 3804
41bd17a4 3805 If have more than one 'cache_dir', and %s is not used in the name
3806 these swap logs will have names such as:
5473c134 3807
41bd17a4 3808 cache_swap_log.00
3809 cache_swap_log.01
3810 cache_swap_log.02
5473c134 3811
41bd17a4 3812 The numbered extension (which is added automatically)
3813 corresponds to the order of the 'cache_dir' lines in this
3814 configuration file. If you change the order of the 'cache_dir'
3815 lines in this file, these index files will NOT correspond to
3816 the correct 'cache_dir' entry (unless you manually rename
3817 them). We recommend you do NOT use this option. It is
3818 better to keep these index files in each 'cache_dir' directory.
5473c134 3819DOC_END
3820
41bd17a4 3821NAME: logfile_rotate
3822TYPE: int
3823DEFAULT: 10
3824LOC: Config.Log.rotateNumber
5473c134 3825DOC_START
41bd17a4 3826 Specifies the number of logfile rotations to make when you
3827 type 'squid -k rotate'. The default is 10, which will rotate
3828 with extensions 0 through 9. Setting logfile_rotate to 0 will
3829 disable the file name rotation, but the logfiles are still closed
3830 and re-opened. This will enable you to rename the logfiles
3831 yourself just before sending the rotate signal.
5473c134 3832
41bd17a4 3833 Note, the 'squid -k rotate' command normally sends a USR1
3834 signal to the running squid process. In certain situations
3835 (e.g. on Linux with Async I/O), USR1 is used for other
3836 purposes, so -k rotate uses another signal. It is best to get
3837 in the habit of using 'squid -k rotate' instead of 'kill -USR1
3838 <pid>'.
62493678
AJ
3839
3840 Note, from Squid-3.1 this option has no effect on the cache.log,
3841 that log can be rotated separately by using debug_options
41bd17a4 3842DOC_END
5473c134 3843
41bd17a4 3844NAME: emulate_httpd_log
20efa1c2 3845TYPE: obsolete
41bd17a4 3846DOC_START
20efa1c2 3847 Replace this with an access_log directive using the format 'common' or 'combined'.
5473c134 3848DOC_END
3849
41bd17a4 3850NAME: log_ip_on_direct
8652f8e7 3851TYPE: obsolete
5473c134 3852DOC_START
8652f8e7 3853 Remove this option from your config. To log server or peer names use %<A in the log format.
41bd17a4 3854DOC_END
5473c134 3855
41bd17a4 3856NAME: mime_table
3857TYPE: string
3858DEFAULT: @DEFAULT_MIME_TABLE@
3859LOC: Config.mimeTablePathname
3860DOC_START
3861 Pathname to Squid's MIME table. You shouldn't need to change
3862 this, but the default file contains examples and formatting
3863 information if you do.
5473c134 3864DOC_END
3865
41bd17a4 3866NAME: log_mime_hdrs
3867COMMENT: on|off
3868TYPE: onoff
3869LOC: Config.onoff.log_mime_hdrs
3870DEFAULT: off
3871DOC_START
3872 The Cache can record both the request and the response MIME
3873 headers for each HTTP transaction. The headers are encoded
3874 safely and will appear as two bracketed fields at the end of
3875 the access log (for either the native or httpd-emulated log
3876 formats). To enable this logging set log_mime_hdrs to 'on'.
3877DOC_END
5473c134 3878
41bd17a4 3879NAME: useragent_log
20efa1c2 3880TYPE: obsolete
5473c134 3881DOC_START
20efa1c2 3882 Replace this with an access_log directive using the format 'useragent'.
5473c134 3883DOC_END
3884
41bd17a4 3885NAME: referer_log referrer_log
20efa1c2 3886TYPE: obsolete
5473c134 3887DOC_START
20efa1c2 3888 Replace this with an access_log directive using the format 'referrer'.
5473c134 3889DOC_END
3890
41bd17a4 3891NAME: pid_filename
3892TYPE: string
3893DEFAULT: @DEFAULT_PID_FILE@
3894LOC: Config.pidFilename
5473c134 3895DOC_START
41bd17a4 3896 A filename to write the process-id to. To disable, enter "none".
5473c134 3897DOC_END
3898
41bd17a4 3899NAME: log_fqdn
c581e96b 3900TYPE: obsolete
5473c134 3901DOC_START
c581e96b 3902 Remove this option from your config. To log FQDN use %>A in the log format.
5473c134 3903DOC_END
3904
41bd17a4 3905NAME: client_netmask
3906TYPE: address
3907LOC: Config.Addrs.client_netmask
0eb08770 3908DEFAULT: no_addr
5473c134 3909DOC_START
41bd17a4 3910 A netmask for client addresses in logfiles and cachemgr output.
3911 Change this to protect the privacy of your cache clients.
3912 A netmask of 255.255.255.0 will log all IP's in that range with
3913 the last digit set to '0'.
5473c134 3914DOC_END
3915
41bd17a4 3916NAME: forward_log
20efa1c2 3917TYPE: obsolete
5473c134 3918DOC_START
20efa1c2 3919 Use a regular access.log with ACL limiting it to MISS events.
5473c134 3920DOC_END
3921
41bd17a4 3922NAME: strip_query_terms
5473c134 3923TYPE: onoff
41bd17a4 3924LOC: Config.onoff.strip_query_terms
5473c134 3925DEFAULT: on
3926DOC_START
41bd17a4 3927 By default, Squid strips query terms from requested URLs before
3928 logging. This protects your user's privacy.
5473c134 3929DOC_END
3930
41bd17a4 3931NAME: buffered_logs
3932COMMENT: on|off
3933TYPE: onoff
3934DEFAULT: off
3935LOC: Config.onoff.buffered_logs
5473c134 3936DOC_START
41bd17a4 3937 cache.log log file is written with stdio functions, and as such
3938 it can be buffered or unbuffered. By default it will be unbuffered.
3939 Buffering it can speed up the writing slightly (though you are
3940 unlikely to need to worry unless you run with tons of debugging
3941 enabled in which case performance will suffer badly anyway..).
6b698a21 3942DOC_END
0976f8db 3943
2b753521 3944NAME: netdb_filename
3945TYPE: string
221faecb 3946DEFAULT: stdio:@DEFAULT_NETDB_FILE@
2b753521 3947LOC: Config.netdbFilename
fb6a61d1 3948IFDEF: USE_ICMP
2b753521 3949DOC_START
3950 A filename where Squid stores it's netdb state between restarts.
3951 To disable, enter "none".
3952DOC_END
3953
62493678
AJ
3954COMMENT_START
3955 OPTIONS FOR TROUBLESHOOTING
3956 -----------------------------------------------------------------------------
3957COMMENT_END
3958
3959NAME: cache_log
3960TYPE: string
62493678
AJ
3961DEFAULT_IF_NONE: @DEFAULT_CACHE_LOG@
3962LOC: Debug::cache_log
3963DOC_START
3964 Cache logging file. This is where general information about
3965 your cache's behavior goes. You can increase the amount of data
3966 logged to this file and how often its rotated with "debug_options"
3967DOC_END
3968
3969NAME: debug_options
3970TYPE: eol
47df1aa7 3971DEFAULT: ALL,1
62493678
AJ
3972LOC: Debug::debugOptions
3973DOC_START
3974 Logging options are set as section,level where each source file
3975 is assigned a unique section. Lower levels result in less
3976 output, Full debugging (level 9) can result in a very large
3977 log file, so be careful.
3978
3979 The magic word "ALL" sets debugging levels for all sections.
3980 We recommend normally running with "ALL,1".
3981
47df1aa7
AJ
3982 The rotate=N option can be used to keep more or less of these logs
3983 than would otherwise be kept by logfile_rotate.
62493678
AJ
3984 For most uses a single log should be enough to monitor current
3985 events affecting Squid.
3986DOC_END
3987
3988NAME: coredump_dir
3989TYPE: string
3990LOC: Config.coredump_dir
62493678
AJ
3991DEFAULT_IF_NONE: none
3992DOC_START
3993 By default Squid leaves core files in the directory from where
3994 it was started. If you set 'coredump_dir' to a directory
3995 that exists, Squid will chdir() to that directory at startup
3996 and coredump files will be left there.
3997
3998NOCOMMENT_START
e0855596 3999
62493678
AJ
4000# Leave coredumps in the first cache dir
4001coredump_dir @DEFAULT_SWAP_DIR@
4002NOCOMMENT_END
4003DOC_END
4004
4005
41bd17a4 4006COMMENT_START
4007 OPTIONS FOR FTP GATEWAYING
4008 -----------------------------------------------------------------------------
4009COMMENT_END
4010
4011NAME: ftp_user
4012TYPE: string
4013DEFAULT: Squid@
4014LOC: Config.Ftp.anon_user
6b698a21 4015DOC_START
41bd17a4 4016 If you want the anonymous login password to be more informative
4017 (and enable the use of picky ftp servers), set this to something
4018 reasonable for your domain, like wwwuser@somewhere.net
7f7db318 4019
41bd17a4 4020 The reason why this is domainless by default is the
4021 request can be made on the behalf of a user in any domain,
4022 depending on how the cache is used.
4023 Some ftp server also validate the email address is valid
4024 (for example perl.com).
6b698a21 4025DOC_END
0976f8db 4026
41bd17a4 4027NAME: ftp_passive
4028TYPE: onoff
4029DEFAULT: on
4030LOC: Config.Ftp.passive
6b698a21 4031DOC_START
41bd17a4 4032 If your firewall does not allow Squid to use passive
4033 connections, turn off this option.
a689bd4e 4034
4035 Use of ftp_epsv_all option requires this to be ON.
4036DOC_END
4037
4038NAME: ftp_epsv_all
4039TYPE: onoff
4040DEFAULT: off
4041LOC: Config.Ftp.epsv_all
4042DOC_START
4043 FTP Protocol extensions permit the use of a special "EPSV ALL" command.
4044
4045 NATs may be able to put the connection on a "fast path" through the
4046 translator, as the EPRT command will never be used and therefore,
4047 translation of the data portion of the segments will never be needed.
4048
b3567eb5
FC
4049 When a client only expects to do two-way FTP transfers this may be
4050 useful.
a689bd4e 4051 If squid finds that it must do a three-way FTP transfer after issuing
4052 an EPSV ALL command, the FTP session will fail.
4053
4054 If you have any doubts about this option do not use it.
4055 Squid will nicely attempt all other connection methods.
4056
51ee534d
AJ
4057 Requires ftp_passive to be ON (default) for any effect.
4058DOC_END
4059
4060NAME: ftp_epsv
4061TYPE: onoff
4062DEFAULT: on
4063LOC: Config.Ftp.epsv
4064DOC_START
4065 FTP Protocol extensions permit the use of a special "EPSV" command.
4066
4067 NATs may be able to put the connection on a "fast path" through the
b3567eb5
FC
4068 translator using EPSV, as the EPRT command will never be used
4069 and therefore, translation of the data portion of the segments
4070 will never be needed.
51ee534d
AJ
4071
4072 Turning this OFF will prevent EPSV being attempted.
4073 WARNING: Doing so will convert Squid back to the old behavior with all
4074 the related problems with external NAT devices/layers.
4075
4076 Requires ftp_passive to be ON (default) for any effect.
41bd17a4 4077DOC_END
9e7dbc51 4078
63ee5443
AJ
4079NAME: ftp_eprt
4080TYPE: onoff
4081DEFAULT: on
4082LOC: Config.Ftp.eprt
4083DOC_START
4084 FTP Protocol extensions permit the use of a special "EPRT" command.
4085
4086 This extension provides a protocol neutral alternative to the
4087 IPv4-only PORT command. When supported it enables active FTP data
4088 channels over IPv6 and efficient NAT handling.
4089
4090 Turning this OFF will prevent EPRT being attempted and will skip
4091 straight to using PORT for IPv4 servers.
4092
4093 Some devices are known to not handle this extension correctly and
4094 may result in crashes. Devices which suport EPRT enough to fail
4095 cleanly will result in Squid attempting PORT anyway. This directive
4096 should only be disabled when EPRT results in device failures.
4097
4098 WARNING: Doing so will convert Squid back to the old behavior with all
4099 the related problems with external NAT devices/layers and IPv4-only FTP.
4100DOC_END
4101
41bd17a4 4102NAME: ftp_sanitycheck
4103TYPE: onoff
4104DEFAULT: on
4105LOC: Config.Ftp.sanitycheck
4106DOC_START
4107 For security and data integrity reasons Squid by default performs
4108 sanity checks of the addresses of FTP data connections ensure the
4109 data connection is to the requested server. If you need to allow
4110 FTP connections to servers using another IP address for the data
4111 connection turn this off.
4112DOC_END
9e7dbc51 4113
41bd17a4 4114NAME: ftp_telnet_protocol
4115TYPE: onoff
4116DEFAULT: on
4117LOC: Config.Ftp.telnet
4118DOC_START
4119 The FTP protocol is officially defined to use the telnet protocol
4120 as transport channel for the control connection. However, many
4121 implementations are broken and does not respect this aspect of
4122 the FTP protocol.
4123
4124 If you have trouble accessing files with ASCII code 255 in the
4125 path or similar problems involving this ASCII code you can
4126 try setting this directive to off. If that helps, report to the
4127 operator of the FTP server in question that their FTP server
4128 is broken and does not follow the FTP standard.
4129DOC_END
4130
4131COMMENT_START
4132 OPTIONS FOR EXTERNAL SUPPORT PROGRAMS
4133 -----------------------------------------------------------------------------
4134COMMENT_END
4135
4136NAME: diskd_program
4137TYPE: string
4138DEFAULT: @DEFAULT_DISKD@
4139LOC: Config.Program.diskd
4140DOC_START
4141 Specify the location of the diskd executable.
4142 Note this is only useful if you have compiled in
4143 diskd as one of the store io modules.
4144DOC_END
4145
4146NAME: unlinkd_program
4147IFDEF: USE_UNLINKD
4148TYPE: string
4149DEFAULT: @DEFAULT_UNLINKD@
4150LOC: Config.Program.unlinkd
4151DOC_START
4152 Specify the location of the executable for file deletion process.
4153DOC_END
4154
4155NAME: pinger_program
4156TYPE: string
4157DEFAULT: @DEFAULT_PINGER@
cc192b50 4158LOC: Config.pinger.program
41bd17a4 4159IFDEF: USE_ICMP
4160DOC_START
4161 Specify the location of the executable for the pinger process.
4162DOC_END
4163
cc192b50 4164NAME: pinger_enable
4165TYPE: onoff
4166DEFAULT: on
4167LOC: Config.pinger.enable
4168IFDEF: USE_ICMP
4169DOC_START
4170 Control whether the pinger is active at run-time.
b3567eb5
FC
4171 Enables turning ICMP pinger on and off with a simple
4172 squid -k reconfigure.
cc192b50 4173DOC_END
4174
4175
41bd17a4 4176COMMENT_START
4177 OPTIONS FOR URL REWRITING
4178 -----------------------------------------------------------------------------
4179COMMENT_END
4180
4181NAME: url_rewrite_program redirect_program
4182TYPE: wordlist
4183LOC: Config.Program.redirect
4184DEFAULT: none
4185DOC_START
2c7aad89 4186 Specify the location of the executable URL rewriter to use.
41bd17a4 4187 Since they can perform almost any function there isn't one included.
4188
2c7aad89 4189 For each requested URL, the rewriter will receive on line with the format
41bd17a4 4190
24eac830 4191 [channel-ID <SP>] URL <SP> client_ip "/" fqdn <SP> user <SP> method [<SP> kv-pairs]<NL>
5269ec0e 4192
c71adec1 4193
5269ec0e
AJ
4194 After processing the request the helper must reply using the following format:
4195
24eac830 4196 [channel-ID <SP>] result [<SP> kv-pairs]
5269ec0e
AJ
4197
4198 The result code can be:
4199
4200 OK status=30N url="..."
4201 Redirect the URL to the one supplied in 'url='.
4202 'status=' is optional and contains the status code to send
4203 the client in Squids HTTP response. It must be one of the
4204 HTTP redirect status codes: 301, 302, 303, 307, 308.
4205 When no status is given Squid will use 302.
c71adec1 4206
5269ec0e
AJ
4207 OK rewrite-url="..."
4208 Rewrite the URL to the one supplied in 'rewrite-url='.
4209 The new URL is fetched directly by Squid and returned to
4210 the client as the response to its request.
4211
4212 ERR
4213 Do not change the URL.
4214
4215 BH
4216 An internal error occured in the helper, preventing
4217 a result being identified.
4218
4219
4220 In the future, the interface protocol will be extended with
24eac830 4221 key=value pairs ("kv-pairs" shown above). Helper programs
c71adec1 4222 should be prepared to receive and possibly ignore additional
4223 whitespace-separated tokens on each input line.
41bd17a4 4224
5269ec0e
AJ
4225 When using the concurrency= option the protocol is changed by
4226 introducing a query channel tag in front of the request/response.
4227 The query channel tag is a number between 0 and concurrency-1.
4228 This value must be echoed back unchanged to Squid as the first part
4229 of the response relating to its request.
4230
4231 WARNING: URL re-writing ability should be avoided whenever possible.
4232 Use the URL redirect form of response instead.
41bd17a4 4233
5269ec0e
AJ
4234 Re-write creates a difference in the state held by the client
4235 and server. Possibly causing confusion when the server response
4236 contains snippets of its view state. Embeded URLs, response
4237 and content Location headers, etc. are not re-written by this
4238 interface.
41bd17a4 4239
4240 By default, a URL rewriter is not used.
4241DOC_END
4242
4243NAME: url_rewrite_children redirect_children
48d54e4d 4244TYPE: HelperChildConfig
5b708d95 4245DEFAULT: 20 startup=0 idle=1 concurrency=0
41bd17a4 4246LOC: Config.redirectChildren
4247DOC_START
48d54e4d
AJ
4248 The maximum number of redirector processes to spawn. If you limit
4249 it too few Squid will have to wait for them to process a backlog of
4250 URLs, slowing it down. If you allow too many they will use RAM
4251 and other system resources noticably.
4252
4253 The startup= and idle= options allow some measure of skew in your
4254 tuning.
4255
4256 startup=
4257
4258 Sets a minimum of how many processes are to be spawned when Squid
4259 starts or reconfigures. When set to zero the first request will
4260 cause spawning of the first child process to handle it.
4261
4262 Starting too few will cause an initial slowdown in traffic as Squid
4263 attempts to simultaneously spawn enough processes to cope.
4264
4265 idle=
4266
4267 Sets a minimum of how many processes Squid is to try and keep available
4268 at all times. When traffic begins to rise above what the existing
4269 processes can handle this many more will be spawned up to the maximum
4270 configured. A minimum setting of 1 is required.
4271
4272 concurrency=
41bd17a4 4273
41bd17a4 4274 The number of requests each redirector helper can handle in
4275 parallel. Defaults to 0 which indicates the redirector
4276 is a old-style single threaded redirector.
6a171502
AJ
4277
4278 When this directive is set to a value >= 1 then the protocol
4279 used to communicate with the helper is modified to include
4280 a request ID in front of the request/response. The request
4281 ID from the request must be echoed back with the response
4282 to that request.
41bd17a4 4283DOC_END
4284
4285NAME: url_rewrite_host_header redirect_rewrites_host_header
4286TYPE: onoff
4287DEFAULT: on
4288LOC: Config.onoff.redir_rewrites_host
4289DOC_START
3ce33807
AJ
4290 To preserve same-origin security policies in browsers and
4291 prevent Host: header forgery by redirectors Squid rewrites
4292 any Host: header in redirected requests.
4293
4294 If you are running an accelerator this may not be a wanted
4295 effect of a redirector. This directive enables you disable
4296 Host: alteration in reverse-proxy traffic.
4297
41bd17a4 4298 WARNING: Entries are cached on the result of the URL rewriting
4299 process, so be careful if you have domain-virtual hosts.
3ce33807
AJ
4300
4301 WARNING: Squid and other software verifies the URL and Host
4302 are matching, so be careful not to relay through other proxies
4303 or inspecting firewalls with this disabled.
41bd17a4 4304DOC_END
4305
4306NAME: url_rewrite_access redirector_access
4307TYPE: acl_access
4308DEFAULT: none
4309LOC: Config.accessList.redirector
4310DOC_START
4311 If defined, this access list specifies which requests are
4312 sent to the redirector processes. By default all requests
4313 are sent.
b3567eb5
FC
4314
4315 This clause supports both fast and slow acl types.
4316 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
41bd17a4 4317DOC_END
4318
4319NAME: url_rewrite_bypass redirector_bypass
4320TYPE: onoff
4321LOC: Config.onoff.redirector_bypass
4322DEFAULT: off
4323DOC_START
4324 When this is 'on', a request will not go through the
4325 redirector if all redirectors are busy. If this is 'off'
4326 and the redirector queue grows too large, Squid will exit
4327 with a FATAL error and ask you to increase the number of
4328 redirectors. You should only enable this if the redirectors
4329 are not critical to your caching system. If you use
4330 redirectors for access control, and you enable this option,
4331 users may have access to pages they should not
4332 be allowed to request.
4333DOC_END
4334
4335COMMENT_START
4336 OPTIONS FOR TUNING THE CACHE
4337 -----------------------------------------------------------------------------
4338COMMENT_END
4339
f04b37d8 4340NAME: cache no_cache
4341TYPE: acl_access
4342DEFAULT: none
4343LOC: Config.accessList.noCache
41bd17a4 4344DOC_START
240887f0 4345 A list of ACL elements which, if matched and denied, cause the request to
f04b37d8 4346 not be satisfied from the cache and the reply to not be cached.
4347 In other words, use this to force certain objects to never be cached.
41bd17a4 4348
240887f0 4349 You must use the words 'allow' or 'deny' to indicate whether items
4350 matching the ACL should be allowed or denied into the cache.
f04b37d8 4351
240887f0 4352 Default is to allow all to be cached.
b3567eb5
FC
4353
4354 This clause supports both fast and slow acl types.
4355 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
41bd17a4 4356DOC_END
4357
570d3f75
AJ
4358NAME: max_stale
4359COMMENT: time-units
4360TYPE: time_t
4361LOC: Config.maxStale
4362DEFAULT: 1 week
4363DOC_START
4364 This option puts an upper limit on how stale content Squid
4365 will serve from the cache if cache validation fails.
4366 Can be overriden by the refresh_pattern max-stale option.
4367DOC_END
4368
41bd17a4 4369NAME: refresh_pattern
4370TYPE: refreshpattern
4371LOC: Config.Refresh
4372DEFAULT: none
4373DOC_START
4374 usage: refresh_pattern [-i] regex min percent max [options]
9e7dbc51 4375
6b698a21 4376 By default, regular expressions are CASE-SENSITIVE. To make
4377 them case-insensitive, use the -i option.
9e7dbc51 4378
41bd17a4 4379 'Min' is the time (in minutes) an object without an explicit
4380 expiry time should be considered fresh. The recommended
4381 value is 0, any higher values may cause dynamic applications
4382 to be erroneously cached unless the application designer
4383 has taken the appropriate actions.
9e7dbc51 4384
41bd17a4 4385 'Percent' is a percentage of the objects age (time since last
4386 modification age) an object without explicit expiry time
4387 will be considered fresh.
5b807763 4388
41bd17a4 4389 'Max' is an upper limit on how long objects without an explicit
4390 expiry time will be considered fresh.
9e7dbc51 4391
41bd17a4 4392 options: override-expire
4393 override-lastmod
4394 reload-into-ims
4395 ignore-reload
41bd17a4 4396 ignore-no-store
4ca08219 4397 ignore-must-revalidate
41bd17a4 4398 ignore-private
4399 ignore-auth
570d3f75 4400 max-stale=NN
41bd17a4 4401 refresh-ims
3d8b6ba4 4402 store-stale
a0ec9f68 4403
41bd17a4 4404 override-expire enforces min age even if the server
9b2ad080
HN
4405 sent an explicit expiry time (e.g., with the
4406 Expires: header or Cache-Control: max-age). Doing this
4407 VIOLATES the HTTP standard. Enabling this feature
4408 could make you liable for problems which it causes.
6468fe10 4409
04925576
AJ
4410 Note: override-expire does not enforce staleness - it only extends
4411 freshness / min. If the server returns a Expires time which
4412 is longer than your max time, Squid will still consider
4413 the object fresh for that period of time.
4414
41bd17a4 4415 override-lastmod enforces min age even on objects
4416 that were modified recently.
934b03fc 4417
41bd17a4 4418 reload-into-ims changes client no-cache or ``reload''
4419 to If-Modified-Since requests. Doing this VIOLATES the
4420 HTTP standard. Enabling this feature could make you
4421 liable for problems which it causes.
dba79ac5 4422
41bd17a4 4423 ignore-reload ignores a client no-cache or ``reload''
4424 header. Doing this VIOLATES the HTTP standard. Enabling
4425 this feature could make you liable for problems which
4426 it causes.
9bc73deb 4427
41bd17a4 4428 ignore-no-store ignores any ``Cache-control: no-store''
4429 headers received from a server. Doing this VIOLATES
4430 the HTTP standard. Enabling this feature could make you
4431 liable for problems which it causes.
4432
4ca08219
AJ
4433 ignore-must-revalidate ignores any ``Cache-Control: must-revalidate``
4434 headers received from a server. Doing this VIOLATES
4435 the HTTP standard. Enabling this feature could make you
4436 liable for problems which it causes.
4437
41bd17a4 4438 ignore-private ignores any ``Cache-control: private''
4439 headers received from a server. Doing this VIOLATES
4440 the HTTP standard. Enabling this feature could make you
4441 liable for problems which it causes.
4442
4443 ignore-auth caches responses to requests with authorization,
4444 as if the originserver had sent ``Cache-control: public''
4445 in the response header. Doing this VIOLATES the HTTP standard.
4446 Enabling this feature could make you liable for problems which
4447 it causes.
4448
4449 refresh-ims causes squid to contact the origin server
4450 when a client issues an If-Modified-Since request. This
4451 ensures that the client will receive an updated version
4452 if one is available.
4453
3d8b6ba4
AJ
4454 store-stale stores responses even if they don't have explicit
4455 freshness or a validator (i.e., Last-Modified or an ETag)
4456 present, or if they're already stale. By default, Squid will
4457 not cache such responses because they usually can't be
4458 reused. Note that such responses will be stale by default.
4459
570d3f75
AJ
4460 max-stale=NN provide a maximum staleness factor. Squid won't
4461 serve objects more stale than this even if it failed to
4462 validate the object. Default: use the max_stale global limit.
4463
41bd17a4 4464 Basically a cached object is:
4465
4466 FRESH if expires < now, else STALE
4467 STALE if age > max
4468 FRESH if lm-factor < percent, else STALE
4469 FRESH if age < min
4470 else STALE
4471
4472 The refresh_pattern lines are checked in the order listed here.
4473 The first entry which matches is used. If none of the entries
4474 match the default will be used.
4475
4476 Note, you must uncomment all the default lines if you want
4477 to change one. The default setting is only active if none is
4478 used.
4479
41bd17a4 4480NOCOMMENT_START
e0855596
AJ
4481
4482# Add any of your own refresh_pattern entries above these.
41bd17a4 4483refresh_pattern ^ftp: 1440 20% 10080
4484refresh_pattern ^gopher: 1440 0% 1440
89db45fa 4485refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
41bd17a4 4486refresh_pattern . 0 20% 4320
4487NOCOMMENT_END
4488DOC_END
4489
4490NAME: quick_abort_min
4491COMMENT: (KB)
4492TYPE: kb_int64_t
4493DEFAULT: 16 KB
4494LOC: Config.quickAbort.min
4495DOC_NONE
4496
4497NAME: quick_abort_max
4498COMMENT: (KB)
4499TYPE: kb_int64_t
4500DEFAULT: 16 KB
4501LOC: Config.quickAbort.max
4502DOC_NONE
4503
4504NAME: quick_abort_pct
4505COMMENT: (percent)
4506TYPE: int
4507DEFAULT: 95
4508LOC: Config.quickAbort.pct
4509DOC_START
4510 The cache by default continues downloading aborted requests
4511 which are almost completed (less than 16 KB remaining). This
4512 may be undesirable on slow (e.g. SLIP) links and/or very busy
4513 caches. Impatient users may tie up file descriptors and
4514 bandwidth by repeatedly requesting and immediately aborting
4515 downloads.
4516
4517 When the user aborts a request, Squid will check the
4518 quick_abort values to the amount of data transfered until
4519 then.
4520
4521 If the transfer has less than 'quick_abort_min' KB remaining,
4522 it will finish the retrieval.
4523
4524 If the transfer has more than 'quick_abort_max' KB remaining,
4525 it will abort the retrieval.
4526
4527 If more than 'quick_abort_pct' of the transfer has completed,
4528 it will finish the retrieval.
4529
4530 If you do not want any retrieval to continue after the client
4531 has aborted, set both 'quick_abort_min' and 'quick_abort_max'
4532 to '0 KB'.
4533
4534 If you want retrievals to always continue if they are being
4535 cached set 'quick_abort_min' to '-1 KB'.
4536DOC_END
60d096f4 4537
41bd17a4 4538NAME: read_ahead_gap
4539COMMENT: buffer-size
4540TYPE: b_int64_t
4541LOC: Config.readAheadGap
4542DEFAULT: 16 KB
4543DOC_START
4544 The amount of data the cache will buffer ahead of what has been
4545 sent to the client when retrieving an object from another server.
4546DOC_END
53e738c6 4547
41bd17a4 4548NAME: negative_ttl
626096be 4549IFDEF: USE_HTTP_VIOLATIONS
41bd17a4 4550COMMENT: time-units
4551TYPE: time_t
4552LOC: Config.negativeTtl
ac9cc053 4553DEFAULT: 0 seconds
41bd17a4 4554DOC_START
ac9cc053
AJ
4555 Set the Default Time-to-Live (TTL) for failed requests.
4556 Certain types of failures (such as "connection refused" and
4557 "404 Not Found") are able to be negatively-cached for a short time.
4558 Modern web servers should provide Expires: header, however if they
4559 do not this can provide a minimum TTL.
4560 The default is not to cache errors with unknown expiry details.
4561
4562 Note that this is different from negative caching of DNS lookups.
39956c7c
AJ
4563
4564 WARNING: Doing this VIOLATES the HTTP standard. Enabling
4565 this feature could make you liable for problems which it
4566 causes.
41bd17a4 4567DOC_END
53e738c6 4568
41bd17a4 4569NAME: positive_dns_ttl
4570COMMENT: time-units
4571TYPE: time_t
4572LOC: Config.positiveDnsTtl
4573DEFAULT: 6 hours
4574DOC_START
4575 Upper limit on how long Squid will cache positive DNS responses.
4576 Default is 6 hours (360 minutes). This directive must be set
4577 larger than negative_dns_ttl.
4578DOC_END
c4ab8329 4579
41bd17a4 4580NAME: negative_dns_ttl
4581COMMENT: time-units
4582TYPE: time_t
4583LOC: Config.negativeDnsTtl
4584DEFAULT: 1 minutes
4585DOC_START
4586 Time-to-Live (TTL) for negative caching of failed DNS lookups.
4587 This also sets the lower cache limit on positive lookups.
4588 Minimum value is 1 second, and it is not recommendable to go
4589 much below 10 seconds.
4590DOC_END
7df0bfd7 4591
41bd17a4 4592NAME: range_offset_limit
11e3fa1c
AJ
4593COMMENT: size [acl acl...]
4594TYPE: acl_b_size_t
41bd17a4 4595LOC: Config.rangeOffsetLimit
11e3fa1c 4596DEFAULT: none
41bd17a4 4597DOC_START
11e3fa1c
AJ
4598 usage: (size) [units] [[!]aclname]
4599
4600 Sets an upper limit on how far (number of bytes) into the file
4601 a Range request may be to cause Squid to prefetch the whole file.
4602 If beyond this limit, Squid forwards the Range request as it is and
4603 the result is NOT cached.
4604
41bd17a4 4605 This is to stop a far ahead range request (lets say start at 17MB)
4606 from making Squid fetch the whole object up to that point before
4607 sending anything to the client.
11e3fa1c
AJ
4608
4609 Multiple range_offset_limit lines may be specified, and they will
4610 be searched from top to bottom on each request until a match is found.
4611 The first match found will be used. If no line matches a request, the
4612 default limit of 0 bytes will be used.
4613
4614 'size' is the limit specified as a number of units.
4615
4616 'units' specifies whether to use bytes, KB, MB, etc.
4617 If no units are specified bytes are assumed.
4618
4619 A size of 0 causes Squid to never fetch more than the
ab275c7b 4620 client requested. (default)
11e3fa1c
AJ
4621
4622 A size of 'none' causes Squid to always fetch the object from the
41bd17a4 4623 beginning so it may cache the result. (2.0 style)
11e3fa1c
AJ
4624
4625 'aclname' is the name of a defined ACL.
4626
4627 NP: Using 'none' as the byte value here will override any quick_abort settings
4628 that may otherwise apply to the range request. The range request will
ab275c7b
AJ
4629 be fully fetched from start to finish regardless of the client
4630 actions. This affects bandwidth usage.
41bd17a4 4631DOC_END
d95b862f 4632
41bd17a4 4633NAME: minimum_expiry_time
4634COMMENT: (seconds)
4635TYPE: time_t
4636LOC: Config.minimum_expiry_time
4637DEFAULT: 60 seconds
4638DOC_START
4639 The minimum caching time according to (Expires - Date)
4640 Headers Squid honors if the object can't be revalidated
649fa918 4641 defaults to 60 seconds. In reverse proxy environments it
41bd17a4 4642 might be desirable to honor shorter object lifetimes. It
4643 is most likely better to make your server return a
4644 meaningful Last-Modified header however. In ESI environments
4645 where page fragments often have short lifetimes, this will
4646 often be best set to 0.
4647DOC_END
c68e9c6b 4648
41bd17a4 4649NAME: store_avg_object_size
58d5c5dd
DK
4650COMMENT: (bytes)
4651TYPE: b_int64_t
41bd17a4 4652DEFAULT: 13 KB
4653LOC: Config.Store.avgObjectSize
4654DOC_START
4655 Average object size, used to estimate number of objects your
4656 cache can hold. The default is 13 KB.
cccac0a2 4657DOC_END
4658
41bd17a4 4659NAME: store_objects_per_bucket
4660TYPE: int
4661DEFAULT: 20
4662LOC: Config.Store.objectsPerBucket
4663DOC_START
4664 Target number of objects per bucket in the store hash table.
4665 Lowering this value increases the total number of buckets and
4666 also the storage maintenance rate. The default is 20.
4667DOC_END
4668
4669COMMENT_START
4670 HTTP OPTIONS
4671 -----------------------------------------------------------------------------
4672COMMENT_END
4673
f04b37d8 4674NAME: request_header_max_size
4675COMMENT: (KB)
4676TYPE: b_size_t
df2eec10 4677DEFAULT: 64 KB
f04b37d8 4678LOC: Config.maxRequestHeaderSize
4679DOC_START
4680 This specifies the maximum size for HTTP headers in a request.
4681 Request headers are usually relatively small (about 512 bytes).
4682 Placing a limit on the request header size will catch certain
4683 bugs (for example with persistent connections) and possibly
4684 buffer-overflow or denial-of-service attacks.
4685DOC_END
4686
4687NAME: reply_header_max_size
4688COMMENT: (KB)
4689TYPE: b_size_t
df2eec10 4690DEFAULT: 64 KB
f04b37d8 4691LOC: Config.maxReplyHeaderSize
4692DOC_START
4693 This specifies the maximum size for HTTP headers in a reply.
4694 Reply headers are usually relatively small (about 512 bytes).
4695 Placing a limit on the reply header size will catch certain
4696 bugs (for example with persistent connections) and possibly
4697 buffer-overflow or denial-of-service attacks.
4698DOC_END
4699
4700NAME: request_body_max_size
4701COMMENT: (bytes)
4702TYPE: b_int64_t
4703DEFAULT: 0 KB
4704LOC: Config.maxRequestBodySize
4705DOC_START
4706 This specifies the maximum size for an HTTP request body.
4707 In other words, the maximum size of a PUT/POST request.
4708 A user who attempts to send a request with a body larger
4709 than this limit receives an "Invalid Request" error message.
4710 If you set this parameter to a zero (the default), there will
4711 be no limit imposed.
4712DOC_END
4713
1368d115
CT
4714NAME: client_request_buffer_max_size
4715COMMENT: (bytes)
4716TYPE: b_size_t
4717DEFAULT: 512 KB
4718LOC: Config.maxRequestBufferSize
4719DOC_START
4720 This specifies the maximum buffer size of a client request.
4721 It prevents squid eating too much memory when somebody uploads
4722 a large file.
4723DOC_END
4724
3ff65596
AR
4725NAME: chunked_request_body_max_size
4726COMMENT: (bytes)
4727TYPE: b_int64_t
4728DEFAULT: 64 KB
4729LOC: Config.maxChunkedRequestBodySize
4730DOC_START
4731 A broken or confused HTTP/1.1 client may send a chunked HTTP
4732 request to Squid. Squid does not have full support for that
4733 feature yet. To cope with such requests, Squid buffers the
4734 entire request and then dechunks request body to create a
4735 plain HTTP/1.0 request with a known content length. The plain
4736 request is then used by the rest of Squid code as usual.
4737
4738 The option value specifies the maximum size of the buffer used
4739 to hold the request before the conversion. If the chunked
4740 request size exceeds the specified limit, the conversion
4741 fails, and the client receives an "unsupported request" error,
4742 as if dechunking was disabled.
4743
4744 Dechunking is enabled by default. To disable conversion of
4745 chunked requests, set the maximum to zero.
4746
4747 Request dechunking feature and this option in particular are a
4748 temporary hack. When chunking requests and responses are fully
4749 supported, there will be no need to buffer a chunked request.
4750DOC_END
4751
41bd17a4 4752NAME: broken_posts
626096be 4753IFDEF: USE_HTTP_VIOLATIONS
cccac0a2 4754TYPE: acl_access
cccac0a2 4755DEFAULT: none
41bd17a4 4756LOC: Config.accessList.brokenPosts
cccac0a2 4757DOC_START
41bd17a4 4758 A list of ACL elements which, if matched, causes Squid to send
4759 an extra CRLF pair after the body of a PUT/POST request.
cccac0a2 4760
41bd17a4 4761 Some HTTP servers has broken implementations of PUT/POST,
4762 and rely on an extra CRLF pair sent by some WWW clients.
cccac0a2 4763
41bd17a4 4764 Quote from RFC2616 section 4.1 on this matter:
cccac0a2 4765
41bd17a4 4766 Note: certain buggy HTTP/1.0 client implementations generate an
4767 extra CRLF's after a POST request. To restate what is explicitly
4768 forbidden by the BNF, an HTTP/1.1 client must not preface or follow
4769 a request with an extra CRLF.
cccac0a2 4770
b3567eb5
FC
4771 This clause only supports fast acl types.
4772 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
4773
41bd17a4 4774Example:
4775 acl buggy_server url_regex ^http://....
4776 broken_posts allow buggy_server
4777DOC_END
cccac0a2 4778
22fff3bf 4779NAME: adaptation_uses_indirect_client icap_uses_indirect_client
57d76dd4
AJ
4780COMMENT: on|off
4781TYPE: onoff
22fff3bf 4782IFDEF: FOLLOW_X_FORWARDED_FOR&&USE_ADAPTATION
57d76dd4 4783DEFAULT: on
22fff3bf 4784LOC: Adaptation::Config::use_indirect_client
57d76dd4 4785DOC_START
ea3ae478
AR
4786 Controls whether the indirect client IP address (instead of the direct
4787 client IP address) is passed to adaptation services.
4788
4789 See also: follow_x_forwarded_for adaptation_send_client_ip
57d76dd4
AJ
4790DOC_END
4791
41bd17a4 4792NAME: via
626096be 4793IFDEF: USE_HTTP_VIOLATIONS
41bd17a4 4794COMMENT: on|off
4795TYPE: onoff
4796DEFAULT: on
4797LOC: Config.onoff.via
4798DOC_START
4799 If set (default), Squid will include a Via header in requests and
4800 replies as required by RFC2616.
4801DOC_END
4cc6eb12 4802
41bd17a4 4803NAME: ie_refresh
4804COMMENT: on|off
4805TYPE: onoff
4806LOC: Config.onoff.ie_refresh
4807DEFAULT: off
4808DOC_START
4809 Microsoft Internet Explorer up until version 5.5 Service
4810 Pack 1 has an issue with transparent proxies, wherein it
4811 is impossible to force a refresh. Turning this on provides
4812 a partial fix to the problem, by causing all IMS-REFRESH
4813 requests from older IE versions to check the origin server
4814 for fresh content. This reduces hit ratio by some amount
4815 (~10% in my experience), but allows users to actually get
4816 fresh content when they want it. Note because Squid
4817 cannot tell if the user is using 5.5 or 5.5SP1, the behavior
4818 of 5.5 is unchanged from old versions of Squid (i.e. a
4819 forced refresh is impossible). Newer versions of IE will,
4820 hopefully, continue to have the new behavior and will be
4821 handled based on that assumption. This option defaults to
4822 the old Squid behavior, which is better for hit ratios but
4823 worse for clients using IE, if they need to be able to
4824 force fresh content.
4825DOC_END
b9d7fe3e 4826
41bd17a4 4827NAME: vary_ignore_expire
4828COMMENT: on|off
4829TYPE: onoff
4830LOC: Config.onoff.vary_ignore_expire
4831DEFAULT: off
4832DOC_START
4833 Many HTTP servers supporting Vary gives such objects
4834 immediate expiry time with no cache-control header
4835 when requested by a HTTP/1.0 client. This option
4836 enables Squid to ignore such expiry times until
4837 HTTP/1.1 is fully implemented.
7e73cd78
AJ
4838
4839 WARNING: If turned on this may eventually cause some
4840 varying objects not intended for caching to get cached.
cccac0a2 4841DOC_END
c4ab8329 4842
41bd17a4 4843NAME: request_entities
4844TYPE: onoff
4845LOC: Config.onoff.request_entities
4846DEFAULT: off
4847DOC_START
4848 Squid defaults to deny GET and HEAD requests with request entities,
4849 as the meaning of such requests are undefined in the HTTP standard
4850 even if not explicitly forbidden.
0976f8db 4851
41bd17a4 4852 Set this directive to on if you have clients which insists
4853 on sending request entities in GET or HEAD requests. But be warned
4854 that there is server software (both proxies and web servers) which
4855 can fail to properly process this kind of request which may make you
4856 vulnerable to cache pollution attacks if enabled.
cccac0a2 4857DOC_END
6b53c392 4858
41bd17a4 4859NAME: request_header_access
626096be 4860IFDEF: USE_HTTP_VIOLATIONS
3b07476b 4861TYPE: http_header_access
41bd17a4 4862LOC: Config.request_header_access
cccac0a2 4863DEFAULT: none
cccac0a2 4864DOC_START
41bd17a4 4865 Usage: request_header_access header_name allow|deny [!]aclname ...
0976f8db 4866
41bd17a4 4867 WARNING: Doing this VIOLATES the HTTP standard. Enabling
4868 this feature could make you liable for problems which it
4869 causes.
0976f8db 4870
41bd17a4 4871 This option replaces the old 'anonymize_headers' and the
4872 older 'http_anonymizer' option with something that is much
3b07476b
CT
4873 more configurable. A list of ACLs for each header name allows
4874 removal of specific header fields under specific conditions.
4875
4876 This option only applies to outgoing HTTP request headers (i.e.,
4877 headers sent by Squid to the next HTTP hop such as a cache peer
4878 or an origin server). The option has no effect during cache hit
4879 detection. The equivalent adaptation vectoring point in ICAP
4880 terminology is post-cache REQMOD.
4881
4882 The option is applied to individual outgoing request header
4883 fields. For each request header field F, Squid uses the first
4884 qualifying sets of request_header_access rules:
4885
4886 1. Rules with header_name equal to F's name.
4887 2. Rules with header_name 'Other', provided F's name is not
4888 on the hard-coded list of commonly used HTTP header names.
4889 3. Rules with header_name 'All'.
4890
4891 Within that qualifying rule set, rule ACLs are checked as usual.
4892 If ACLs of an "allow" rule match, the header field is allowed to
4893 go through as is. If ACLs of a "deny" rule match, the header is
4894 removed and request_header_replace is then checked to identify
4895 if the removed header has a replacement. If no rules within the
4896 set have matching ACLs, the header field is left as is.
5401aa8d 4897
41bd17a4 4898 For example, to achieve the same behavior as the old
4899 'http_anonymizer standard' option, you should use:
5401aa8d 4900
41bd17a4 4901 request_header_access From deny all
4902 request_header_access Referer deny all
4903 request_header_access Server deny all
4904 request_header_access User-Agent deny all
4905 request_header_access WWW-Authenticate deny all
4906 request_header_access Link deny all
5401aa8d 4907
41bd17a4 4908 Or, to reproduce the old 'http_anonymizer paranoid' feature
4909 you should use:
5401aa8d 4910
41bd17a4 4911 request_header_access Allow allow all
4912 request_header_access Authorization allow all
4913 request_header_access WWW-Authenticate allow all
4914 request_header_access Proxy-Authorization allow all
4915 request_header_access Proxy-Authenticate allow all
4916 request_header_access Cache-Control allow all
4917 request_header_access Content-Encoding allow all
4918 request_header_access Content-Length allow all
4919 request_header_access Content-Type allow all
4920 request_header_access Date allow all
4921 request_header_access Expires allow all
4922 request_header_access Host allow all
4923 request_header_access If-Modified-Since allow all
4924 request_header_access Last-Modified allow all
4925 request_header_access Location allow all
4926 request_header_access Pragma allow all
4927 request_header_access Accept allow all
4928 request_header_access Accept-Charset allow all
4929 request_header_access Accept-Encoding allow all
4930 request_header_access Accept-Language allow all
4931 request_header_access Content-Language allow all
4932 request_header_access Mime-Version allow all
4933 request_header_access Retry-After allow all
4934 request_header_access Title allow all
4935 request_header_access Connection allow all
41bd17a4 4936 request_header_access All deny all
5401aa8d 4937
41bd17a4 4938 although many of those are HTTP reply headers, and so should be
4939 controlled with the reply_header_access directive.
5401aa8d 4940
41bd17a4 4941 By default, all headers are allowed (no anonymizing is
4942 performed).
5401aa8d 4943DOC_END
4944
41bd17a4 4945NAME: reply_header_access
626096be 4946IFDEF: USE_HTTP_VIOLATIONS
3b07476b 4947TYPE: http_header_access
41bd17a4 4948LOC: Config.reply_header_access
cccac0a2 4949DEFAULT: none
4950DOC_START
41bd17a4 4951 Usage: reply_header_access header_name allow|deny [!]aclname ...
934b03fc 4952
41bd17a4 4953 WARNING: Doing this VIOLATES the HTTP standard. Enabling
4954 this feature could make you liable for problems which it
4955 causes.
934b03fc 4956
41bd17a4 4957 This option only applies to reply headers, i.e., from the
4958 server to the client.
934b03fc 4959
41bd17a4 4960 This is the same as request_header_access, but in the other
3b07476b
CT
4961 direction. Please see request_header_access for detailed
4962 documentation.
cccac0a2 4963
41bd17a4 4964 For example, to achieve the same behavior as the old
4965 'http_anonymizer standard' option, you should use:
cccac0a2 4966
41bd17a4 4967 reply_header_access From deny all
4968 reply_header_access Referer deny all
4969 reply_header_access Server deny all
4970 reply_header_access User-Agent deny all
4971 reply_header_access WWW-Authenticate deny all
4972 reply_header_access Link deny all
cccac0a2 4973
41bd17a4 4974 Or, to reproduce the old 'http_anonymizer paranoid' feature
4975 you should use:
cccac0a2 4976
41bd17a4 4977 reply_header_access Allow allow all
4978 reply_header_access Authorization allow all
4979 reply_header_access WWW-Authenticate allow all
4980 reply_header_access Proxy-Authorization allow all
4981 reply_header_access Proxy-Authenticate allow all
4982 reply_header_access Cache-Control allow all
4983 reply_header_access Content-Encoding allow all
4984 reply_header_access Content-Length allow all
4985 reply_header_access Content-Type allow all
4986 reply_header_access Date allow all
4987 reply_header_access Expires allow all
4988 reply_header_access Host allow all
4989 reply_header_access If-Modified-Since allow all
4990 reply_header_access Last-Modified allow all
4991 reply_header_access Location allow all
4992 reply_header_access Pragma allow all
4993 reply_header_access Accept allow all
4994 reply_header_access Accept-Charset allow all
4995 reply_header_access Accept-Encoding allow all
4996 reply_header_access Accept-Language allow all
4997 reply_header_access Content-Language allow all
4998 reply_header_access Mime-Version allow all
4999 reply_header_access Retry-After allow all
5000 reply_header_access Title allow all
5001 reply_header_access Connection allow all
41bd17a4 5002 reply_header_access All deny all
cccac0a2 5003
41bd17a4 5004 although the HTTP request headers won't be usefully controlled
5005 by this directive -- see request_header_access for details.
cccac0a2 5006
41bd17a4 5007 By default, all headers are allowed (no anonymizing is
5008 performed).
cccac0a2 5009DOC_END
5010
75e4f2ea 5011NAME: request_header_replace header_replace
626096be 5012IFDEF: USE_HTTP_VIOLATIONS
3b07476b 5013TYPE: http_header_replace
41bd17a4 5014LOC: Config.request_header_access
cccac0a2 5015DEFAULT: none
41bd17a4 5016DOC_START
75e4f2ea
MB
5017 Usage: request_header_replace header_name message
5018 Example: request_header_replace User-Agent Nutscrape/1.0 (CP/M; 8-bit)
cccac0a2 5019
41bd17a4 5020 This option allows you to change the contents of headers
75e4f2ea
MB
5021 denied with request_header_access above, by replacing them
5022 with some fixed string. This replaces the old fake_user_agent
41bd17a4 5023 option.
cccac0a2 5024
41bd17a4 5025 This only applies to request headers, not reply headers.
cccac0a2 5026
41bd17a4 5027 By default, headers are removed if denied.
5028DOC_END
cccac0a2 5029
75e4f2ea
MB
5030NAME: reply_header_replace
5031IFDEF: USE_HTTP_VIOLATIONS
3b07476b 5032TYPE: http_header_replace
75e4f2ea
MB
5033LOC: Config.reply_header_access
5034DEFAULT: none
5035DOC_START
5036 Usage: reply_header_replace header_name message
5037 Example: reply_header_replace Server Foo/1.0
5038
5039 This option allows you to change the contents of headers
5040 denied with reply_header_access above, by replacing them
5041 with some fixed string.
5042
5043 This only applies to reply headers, not request headers.
5044
5045 By default, headers are removed if denied.
5046DOC_END
5047
f4698e0b
CT
5048NAME: request_header_add
5049TYPE: HeaderWithAclList
5050LOC: Config.request_header_add
5051DEFAULT: none
5052DOC_START
5053 Usage: request_header_add field-name field-value acl1 [acl2] ...
5054 Example: request_header_add X-Client-CA "CA=%ssl::>cert_issuer" all
5055
5056 This option adds header fields to outgoing HTTP requests (i.e.,
5057 request headers sent by Squid to the next HTTP hop such as a
5058 cache peer or an origin server). The option has no effect during
5059 cache hit detection. The equivalent adaptation vectoring point
5060 in ICAP terminology is post-cache REQMOD.
5061
5062 Field-name is a token specifying an HTTP header name. If a
5063 standard HTTP header name is used, Squid does not check whether
5064 the new header conflicts with any existing headers or violates
5065 HTTP rules. If the request to be modified already contains a
5066 field with the same name, the old field is preserved but the
5067 header field values are not merged.
5068
5069 Field-value is either a token or a quoted string. If quoted
5070 string format is used, then the surrounding quotes are removed
5071 while escape sequences and %macros are processed.
5072
5073 In theory, all of the logformat codes can be used as %macros.
5074 However, unlike logging (which happens at the very end of
5075 transaction lifetime), the transaction may not yet have enough
5076 information to expand a macro when the new header value is needed.
5077 And some information may already be available to Squid but not yet
5078 committed where the macro expansion code can access it (report
5079 such instances!). The macro will be expanded into a single dash
5080 ('-') in such cases. Not all macros have been tested.
5081
5082 One or more Squid ACLs may be specified to restrict header
5083 injection to matching requests. As always in squid.conf, all
5084 ACLs in an option ACL list must be satisfied for the insertion
5085 to happen. The request_header_add option supports fast ACLs
5086 only.
5087DOC_END
5088
d7f4a0b7
CT
5089NAME: note
5090TYPE: note
5091LOC: Config.notes
5092DEFAULT: none
5093DOC_START
5094 This option used to log custom information about the master
5095 transaction. For example, an admin may configure Squid to log
5096 which "user group" the transaction belongs to, where "user group"
5097 will be determined based on a set of ACLs and not [just]
5098 authentication information.
5099 Values of key/value pairs can be logged using %{key}note macros:
5100
5101 note key value acl ...
5102 logformat myFormat ... %{key}note ...
5103DOC_END
5104
41bd17a4 5105NAME: relaxed_header_parser
5106COMMENT: on|off|warn
5107TYPE: tristate
5108LOC: Config.onoff.relaxed_header_parser
5109DEFAULT: on
5110DOC_START
5111 In the default "on" setting Squid accepts certain forms
5112 of non-compliant HTTP messages where it is unambiguous
5113 what the sending application intended even if the message
5114 is not correctly formatted. The messages is then normalized
5115 to the correct form when forwarded by Squid.
cccac0a2 5116
41bd17a4 5117 If set to "warn" then a warning will be emitted in cache.log
5118 each time such HTTP error is encountered.
cccac0a2 5119
41bd17a4 5120 If set to "off" then such HTTP errors will cause the request
5121 or response to be rejected.
5122DOC_END
7d90757b 5123
41bd17a4 5124COMMENT_START
5125 TIMEOUTS
5126 -----------------------------------------------------------------------------
5127COMMENT_END
5128
5129NAME: forward_timeout
5130COMMENT: time-units
5131TYPE: time_t
5132LOC: Config.Timeout.forward
5133DEFAULT: 4 minutes
5134DOC_START
5135 This parameter specifies how long Squid should at most attempt in
5136 finding a forwarding path for the request before giving up.
cccac0a2 5137DOC_END
5138
41bd17a4 5139NAME: connect_timeout
5140COMMENT: time-units
5141TYPE: time_t
5142LOC: Config.Timeout.connect
5143DEFAULT: 1 minute
057f5854 5144DOC_START
41bd17a4 5145 This parameter specifies how long to wait for the TCP connect to
5146 the requested server or peer to complete before Squid should
5147 attempt to find another path where to forward the request.
057f5854 5148DOC_END
5149
41bd17a4 5150NAME: peer_connect_timeout
5151COMMENT: time-units
5152TYPE: time_t
5153LOC: Config.Timeout.peer_connect
5154DEFAULT: 30 seconds
cccac0a2 5155DOC_START
41bd17a4 5156 This parameter specifies how long to wait for a pending TCP
5157 connection to a peer cache. The default is 30 seconds. You
5158 may also set different timeout values for individual neighbors
5159 with the 'connect-timeout' option on a 'cache_peer' line.
5160DOC_END
7f7db318 5161
41bd17a4 5162NAME: read_timeout
5163COMMENT: time-units
5164TYPE: time_t
5165LOC: Config.Timeout.read
5166DEFAULT: 15 minutes
5167DOC_START
5168 The read_timeout is applied on server-side connections. After
5169 each successful read(), the timeout will be extended by this
5170 amount. If no data is read again after this amount of time,
5171 the request is aborted and logged with ERR_READ_TIMEOUT. The
5172 default is 15 minutes.
5173DOC_END
cccac0a2 5174
5ef5e5cc
AJ
5175NAME: write_timeout
5176COMMENT: time-units
5177TYPE: time_t
5178LOC: Config.Timeout.write
5179DEFAULT: 15 minutes
5180DOC_START
5181 This timeout is tracked for all connections that have data
5182 available for writing and are waiting for the socket to become
5183 ready. After each successful write, the timeout is extended by
5184 the configured amount. If Squid has data to write but the
5185 connection is not ready for the configured duration, the
5186 transaction associated with the connection is terminated. The
5187 default is 15 minutes.
5188DOC_END
5189
41bd17a4 5190NAME: request_timeout
5191TYPE: time_t
5192LOC: Config.Timeout.request
5193DEFAULT: 5 minutes
5194DOC_START
6b2a2108 5195 How long to wait for complete HTTP request headers after initial
41bd17a4 5196 connection establishment.
5197DOC_END
cccac0a2 5198
97b32442 5199NAME: client_idle_pconn_timeout persistent_request_timeout
41bd17a4 5200TYPE: time_t
97b32442 5201LOC: Config.Timeout.clientIdlePconn
41bd17a4 5202DEFAULT: 2 minutes
5203DOC_START
5204 How long to wait for the next HTTP request on a persistent
97b32442 5205 client connection after the previous request completes.
41bd17a4 5206DOC_END
cccac0a2 5207
41bd17a4 5208NAME: client_lifetime
5209COMMENT: time-units
5210TYPE: time_t
5211LOC: Config.Timeout.lifetime
5212DEFAULT: 1 day
5213DOC_START
5214 The maximum amount of time a client (browser) is allowed to
5215 remain connected to the cache process. This protects the Cache
5216 from having a lot of sockets (and hence file descriptors) tied up
5217 in a CLOSE_WAIT state from remote clients that go away without
5218 properly shutting down (either because of a network failure or
5219 because of a poor client implementation). The default is one
5220 day, 1440 minutes.
7d90757b 5221
41bd17a4 5222 NOTE: The default value is intended to be much larger than any
5223 client would ever need to be connected to your cache. You
5224 should probably change client_lifetime only as a last resort.
5225 If you seem to have many client connections tying up
5226 filedescriptors, we recommend first tuning the read_timeout,
5227 request_timeout, persistent_request_timeout and quick_abort values.
cccac0a2 5228DOC_END
5229
41bd17a4 5230NAME: half_closed_clients
5231TYPE: onoff
5232LOC: Config.onoff.half_closed_clients
0c2f5c4f 5233DEFAULT: off
4eb368f9 5234DOC_START
41bd17a4 5235 Some clients may shutdown the sending side of their TCP
5236 connections, while leaving their receiving sides open. Sometimes,
5237 Squid can not tell the difference between a half-closed and a
0c2f5c4f
AJ
5238 fully-closed TCP connection.
5239
5240 By default, Squid will immediately close client connections when
5241 read(2) returns "no more data to read."
5242
abdf1651 5243 Change this option to 'on' and Squid will keep open connections
0c2f5c4f
AJ
5244 until a read(2) or write(2) on the socket returns an error.
5245 This may show some benefits for reverse proxies. But if not
5246 it is recommended to leave OFF.
4eb368f9 5247DOC_END
5248
97b32442 5249NAME: server_idle_pconn_timeout pconn_timeout
41bd17a4 5250TYPE: time_t
97b32442 5251LOC: Config.Timeout.serverIdlePconn
41bd17a4 5252DEFAULT: 1 minute
cccac0a2 5253DOC_START
41bd17a4 5254 Timeout for idle persistent connections to servers and other
5255 proxies.
5256DOC_END
cccac0a2 5257
41bd17a4 5258NAME: ident_timeout
5259TYPE: time_t
5260IFDEF: USE_IDENT
4daaf3cb 5261LOC: Ident::TheConfig.timeout
41bd17a4 5262DEFAULT: 10 seconds
5263DOC_START
5264 Maximum time to wait for IDENT lookups to complete.
cccac0a2 5265
41bd17a4 5266 If this is too high, and you enabled IDENT lookups from untrusted
5267 users, you might be susceptible to denial-of-service by having
5268 many ident requests going at once.
cccac0a2 5269DOC_END
5270
41bd17a4 5271NAME: shutdown_lifetime
5272COMMENT: time-units
5273TYPE: time_t
5274LOC: Config.shutdownLifetime
5275DEFAULT: 30 seconds
cccac0a2 5276DOC_START
41bd17a4 5277 When SIGTERM or SIGHUP is received, the cache is put into
5278 "shutdown pending" mode until all active sockets are closed.
5279 This value is the lifetime to set for all open descriptors
5280 during shutdown mode. Any active clients after this many
5281 seconds will receive a 'timeout' message.
cccac0a2 5282DOC_END
0976f8db 5283
cccac0a2 5284COMMENT_START
5285 ADMINISTRATIVE PARAMETERS
5286 -----------------------------------------------------------------------------
5287COMMENT_END
5288
5289NAME: cache_mgr
5290TYPE: string
5291DEFAULT: webmaster
5292LOC: Config.adminEmail
5293DOC_START
5294 Email-address of local cache manager who will receive
5295 mail if the cache dies. The default is "webmaster."
5296DOC_END
5297
abacf776 5298NAME: mail_from
5299TYPE: string
5300DEFAULT: none
5301LOC: Config.EmailFrom
5302DOC_START
5303 From: email-address for mail sent when the cache dies.
5304 The default is to use 'appname@unique_hostname'.
b8c0c06d 5305 Default appname value is "squid", can be changed into
abacf776 5306 src/globals.h before building squid.
5307DOC_END
5308
d084bf20 5309NAME: mail_program
5310TYPE: eol
5311DEFAULT: mail
5312LOC: Config.EmailProgram
5313DOC_START
5314 Email program used to send mail if the cache dies.
846a5e31 5315 The default is "mail". The specified program must comply
d084bf20 5316 with the standard Unix mail syntax:
846a5e31 5317 mail-program recipient < mailfile
5318
d084bf20 5319 Optional command line options can be specified.
5320DOC_END
5321
cccac0a2 5322NAME: cache_effective_user
5323TYPE: string
5483d916 5324DEFAULT: @DEFAULT_CACHE_EFFECTIVE_USER@
cccac0a2 5325LOC: Config.effectiveUser
e3d74828 5326DOC_START
5327 If you start Squid as root, it will change its effective/real
5328 UID/GID to the user specified below. The default is to change
5483d916 5329 to UID of @DEFAULT_CACHE_EFFECTIVE_USER@.
64e288bd 5330 see also; cache_effective_group
e3d74828 5331DOC_END
5332
cccac0a2 5333NAME: cache_effective_group
5334TYPE: string
5335DEFAULT: none
5336LOC: Config.effectiveGroup
5337DOC_START
64e288bd 5338 Squid sets the GID to the effective user's default group ID
5339 (taken from the password file) and supplementary group list
5340 from the groups membership.
5341
e3d74828 5342 If you want Squid to run with a specific GID regardless of
5343 the group memberships of the effective user then set this
5344 to the group (or GID) you want Squid to run as. When set
64e288bd 5345 all other group privileges of the effective user are ignored
e3d74828 5346 and only this GID is effective. If Squid is not started as
64e288bd 5347 root the user starting Squid MUST be member of the specified
e3d74828 5348 group.
64e288bd 5349
5350 This option is not recommended by the Squid Team.
5351 Our preference is for administrators to configure a secure
5352 user account for squid with UID/GID matching system policies.
cccac0a2 5353DOC_END
5354
d3caee79 5355NAME: httpd_suppress_version_string
5356COMMENT: on|off
5357TYPE: onoff
5358DEFAULT: off
5359LOC: Config.onoff.httpd_suppress_version_string
5360DOC_START
5361 Suppress Squid version string info in HTTP headers and HTML error pages.
5362DOC_END
5363
cccac0a2 5364NAME: visible_hostname
5365TYPE: string
5366LOC: Config.visibleHostname
5367DEFAULT: none
5368DOC_START
5369 If you want to present a special hostname in error messages, etc,
7f7db318 5370 define this. Otherwise, the return value of gethostname()
cccac0a2 5371 will be used. If you have multiple caches in a cluster and
5372 get errors about IP-forwarding you must set them to have individual
5373 names with this setting.
5374DOC_END
5375
cccac0a2 5376NAME: unique_hostname
5377TYPE: string
5378LOC: Config.uniqueHostname
5379DEFAULT: none
5380DOC_START
5381 If you want to have multiple machines with the same
7f7db318 5382 'visible_hostname' you must give each machine a different
5383 'unique_hostname' so forwarding loops can be detected.
cccac0a2 5384DOC_END
5385
cccac0a2 5386NAME: hostname_aliases
5387TYPE: wordlist
5388LOC: Config.hostnameAliases
5389DEFAULT: none
5390DOC_START
7f7db318 5391 A list of other DNS names your cache has.
cccac0a2 5392DOC_END
0976f8db 5393
c642c141
AJ
5394NAME: umask
5395TYPE: int
5396LOC: Config.umask
5397DEFAULT: 027
5398DOC_START
5399 Minimum umask which should be enforced while the proxy
5400 is running, in addition to the umask set at startup.
5401
5402 For a traditional octal representation of umasks, start
5403 your value with 0.
5404DOC_END
5405
cccac0a2 5406COMMENT_START
5407 OPTIONS FOR THE CACHE REGISTRATION SERVICE
5408 -----------------------------------------------------------------------------
5409
5410 This section contains parameters for the (optional) cache
5411 announcement service. This service is provided to help
5412 cache administrators locate one another in order to join or
5413 create cache hierarchies.
5414
5415 An 'announcement' message is sent (via UDP) to the registration
5416 service by Squid. By default, the announcement message is NOT
5417 SENT unless you enable it with 'announce_period' below.
5418
5419 The announcement message includes your hostname, plus the
5420 following information from this configuration file:
5421
5422 http_port
5423 icp_port
5424 cache_mgr
5425
5426 All current information is processed regularly and made
5427 available on the Web at http://www.ircache.net/Cache/Tracker/.
5428COMMENT_END
5429
5430NAME: announce_period
5431TYPE: time_t
5432LOC: Config.Announce.period
5433DEFAULT: 0
5434DOC_START
5435 This is how frequently to send cache announcements. The
5436 default is `0' which disables sending the announcement
5437 messages.
5438
e0855596 5439 To enable announcing your cache, just set an announce period.
cccac0a2 5440
e0855596
AJ
5441 Example:
5442 announce_period 1 day
cccac0a2 5443DOC_END
5444
cccac0a2 5445NAME: announce_host
5446TYPE: string
5447DEFAULT: tracker.ircache.net
5448LOC: Config.Announce.host
5449DOC_NONE
5450
5451NAME: announce_file
5452TYPE: string
5453DEFAULT: none
5454LOC: Config.Announce.file
5455DOC_NONE
5456
5457NAME: announce_port
ae870270 5458TYPE: u_short
cccac0a2 5459DEFAULT: 3131
5460LOC: Config.Announce.port
5461DOC_START
5462 announce_host and announce_port set the hostname and port
5463 number where the registration message will be sent.
5464
5465 Hostname will default to 'tracker.ircache.net' and port will
5466 default default to 3131. If the 'filename' argument is given,
5467 the contents of that file will be included in the announce
5468 message.
5469DOC_END
5470
8d6275c0 5471COMMENT_START
5472 HTTPD-ACCELERATOR OPTIONS
5473 -----------------------------------------------------------------------------
5474COMMENT_END
5475
cccac0a2 5476NAME: httpd_accel_surrogate_id
cccac0a2 5477TYPE: string
b2b40d8c 5478DEFAULT: none
cccac0a2 5479LOC: Config.Accel.surrogate_id
cccac0a2 5480DOC_START
5481 Surrogates (http://www.esi.org/architecture_spec_1.0.html)
5482 need an identification token to allow control targeting. Because
5483 a farm of surrogates may all perform the same tasks, they may share
5484 an identification token.
b2b40d8c
AJ
5485
5486 The default ID is the visible_hostname
cccac0a2 5487DOC_END
5488
5489NAME: http_accel_surrogate_remote
cccac0a2 5490COMMENT: on|off
5491TYPE: onoff
5492DEFAULT: off
5493LOC: Config.onoff.surrogate_is_remote
5494DOC_START
5495 Remote surrogates (such as those in a CDN) honour Surrogate-Control: no-store-remote.
5496 Set this to on to have squid behave as a remote surrogate.
5497DOC_END
5498
5499NAME: esi_parser
f41735ea 5500IFDEF: USE_SQUID_ESI
964b44c3 5501COMMENT: libxml2|expat|custom
cccac0a2 5502TYPE: string
5503LOC: ESIParser::Type
5504DEFAULT: custom
5505DOC_START
5506 ESI markup is not strictly XML compatible. The custom ESI parser
5507 will give higher performance, but cannot handle non ASCII character
5508 encodings.
5509DOC_END
0976f8db 5510
9edd9041 5511COMMENT_START
8d6275c0 5512 DELAY POOL PARAMETERS
9edd9041 5513 -----------------------------------------------------------------------------
5514COMMENT_END
5515
5516NAME: delay_pools
5517TYPE: delay_pool_count
5518DEFAULT: 0
9a0a18de 5519IFDEF: USE_DELAY_POOLS
9edd9041 5520LOC: Config.Delay
5521DOC_START
5522 This represents the number of delay pools to be used. For example,
5523 if you have one class 2 delay pool and one class 3 delays pool, you
5524 have a total of 2 delay pools.
5525DOC_END
5526
5527NAME: delay_class
5528TYPE: delay_pool_class
5529DEFAULT: none
9a0a18de 5530IFDEF: USE_DELAY_POOLS
9edd9041 5531LOC: Config.Delay
5532DOC_START
5533 This defines the class of each delay pool. There must be exactly one
5534 delay_class line for each delay pool. For example, to define two
5535 delay pools, one of class 2 and one of class 3, the settings above
5536 and here would be:
5537
b1fb3348
AJ
5538 Example:
5539 delay_pools 4 # 4 delay pools
5540 delay_class 1 2 # pool 1 is a class 2 pool
5541 delay_class 2 3 # pool 2 is a class 3 pool
5542 delay_class 3 4 # pool 3 is a class 4 pool
5543 delay_class 4 5 # pool 4 is a class 5 pool
9edd9041 5544
5545 The delay pool classes are:
5546
5547 class 1 Everything is limited by a single aggregate
5548 bucket.
5549
5550 class 2 Everything is limited by a single aggregate
5551 bucket as well as an "individual" bucket chosen
b1fb3348 5552 from bits 25 through 32 of the IPv4 address.
9edd9041 5553
5554 class 3 Everything is limited by a single aggregate
5555 bucket as well as a "network" bucket chosen
5556 from bits 17 through 24 of the IP address and a
5557 "individual" bucket chosen from bits 17 through
b1fb3348 5558 32 of the IPv4 address.
9edd9041 5559
5560 class 4 Everything in a class 3 delay pool, with an
5561 additional limit on a per user basis. This
5562 only takes effect if the username is established
5563 in advance - by forcing authentication in your
5564 http_access rules.
5565
5566 class 5 Requests are grouped according their tag (see
5567 external_acl's tag= reply).
5568
0b68481a
AJ
5569
5570 Each pool also requires a delay_parameters directive to configure the pool size
5571 and speed limits used whenever the pool is applied to a request. Along with
5572 a set of delay_access directives to determine when it is used.
5573
9edd9041 5574 NOTE: If an IP address is a.b.c.d
5575 -> bits 25 through 32 are "d"
5576 -> bits 17 through 24 are "c"
5577 -> bits 17 through 32 are "c * 256 + d"
b1fb3348
AJ
5578
5579 NOTE-2: Due to the use of bitmasks in class 2,3,4 pools they only apply to
5580 IPv4 traffic. Class 1 and 5 pools may be used with IPv6 traffic.
9edd9041 5581DOC_END
5582
5583NAME: delay_access
5584TYPE: delay_pool_access
5585DEFAULT: none
9a0a18de 5586IFDEF: USE_DELAY_POOLS
9edd9041 5587LOC: Config.Delay
5588DOC_START
5589 This is used to determine which delay pool a request falls into.
5590
5591 delay_access is sorted per pool and the matching starts with pool 1,
5592 then pool 2, ..., and finally pool N. The first delay pool where the
5593 request is allowed is selected for the request. If it does not allow
5594 the request to any pool then the request is not delayed (default).
5595
5596 For example, if you want some_big_clients in delay
5597 pool 1 and lotsa_little_clients in delay pool 2:
5598
5599Example:
5600 delay_access 1 allow some_big_clients
5601 delay_access 1 deny all
5602 delay_access 2 allow lotsa_little_clients
5603 delay_access 2 deny all
5604 delay_access 3 allow authenticated_clients
5605DOC_END
5606
5607NAME: delay_parameters
5608TYPE: delay_pool_rates
5609DEFAULT: none
9a0a18de 5610IFDEF: USE_DELAY_POOLS
9edd9041 5611LOC: Config.Delay
5612DOC_START
5613 This defines the parameters for a delay pool. Each delay pool has
5614 a number of "buckets" associated with it, as explained in the
0b68481a 5615 description of delay_class.
9edd9041 5616
0b68481a
AJ
5617 For a class 1 delay pool, the syntax is:
5618 delay_pools pool 1
5619 delay_parameters pool aggregate
9edd9041 5620
5621 For a class 2 delay pool:
0b68481a
AJ
5622 delay_pools pool 2
5623 delay_parameters pool aggregate individual
9edd9041 5624
5625 For a class 3 delay pool:
0b68481a
AJ
5626 delay_pools pool 3
5627 delay_parameters pool aggregate network individual
9edd9041 5628
5629 For a class 4 delay pool:
0b68481a
AJ
5630 delay_pools pool 4
5631 delay_parameters pool aggregate network individual user
9edd9041 5632
5633 For a class 5 delay pool:
0b68481a
AJ
5634 delay_pools pool 5
5635 delay_parameters pool tagrate
9edd9041 5636
0b68481a 5637 The option variables are:
9edd9041 5638
5639 pool a pool number - ie, a number between 1 and the
5640 number specified in delay_pools as used in
5641 delay_class lines.
5642
fdb47ac6 5643 aggregate the speed limit parameters for the aggregate bucket
9edd9041 5644 (class 1, 2, 3).
5645
fdb47ac6 5646 individual the speed limit parameters for the individual
9edd9041 5647 buckets (class 2, 3).
5648
fdb47ac6 5649 network the speed limit parameters for the network buckets
9edd9041 5650 (class 3).
5651
fdb47ac6 5652 user the speed limit parameters for the user buckets
9edd9041 5653 (class 4).
5654
fdb47ac6 5655 tagrate the speed limit parameters for the tag buckets
9edd9041 5656 (class 5).
5657
5658 A pair of delay parameters is written restore/maximum, where restore is
5659 the number of bytes (not bits - modem and network speeds are usually
5660 quoted in bits) per second placed into the bucket, and maximum is the
5661 maximum number of bytes which can be in the bucket at any time.
5662
0b68481a
AJ
5663 There must be one delay_parameters line for each delay pool.
5664
5665
9edd9041 5666 For example, if delay pool number 1 is a class 2 delay pool as in the
0b68481a 5667 above example, and is being used to strictly limit each host to 64Kbit/sec
9edd9041 5668 (plus overheads), with no overall limit, the line is:
5669
0b68481a
AJ
5670 delay_parameters 1 -1/-1 8000/8000
5671
5672 Note that 8 x 8000 KByte/sec -> 64Kbit/sec.
9edd9041 5673
5674 Note that the figure -1 is used to represent "unlimited".
5675
0b68481a 5676
9edd9041 5677 And, if delay pool number 2 is a class 3 delay pool as in the above
0b68481a
AJ
5678 example, and you want to limit it to a total of 256Kbit/sec (strict limit)
5679 with each 8-bit network permitted 64Kbit/sec (strict limit) and each
5680 individual host permitted 4800bit/sec with a bucket maximum size of 64Kbits
9edd9041 5681 to permit a decent web page to be downloaded at a decent speed
5682 (if the network is not being limited due to overuse) but slow down
5683 large downloads more significantly:
5684
0b68481a
AJ
5685 delay_parameters 2 32000/32000 8000/8000 600/8000
5686
5687 Note that 8 x 32000 KByte/sec -> 256Kbit/sec.
5688 8 x 8000 KByte/sec -> 64Kbit/sec.
5689 8 x 600 Byte/sec -> 4800bit/sec.
9edd9041 5690
9edd9041 5691
5692 Finally, for a class 4 delay pool as in the example - each user will
0b68481a 5693 be limited to 128Kbits/sec no matter how many workstations they are logged into.:
9edd9041 5694
0b68481a 5695 delay_parameters 4 32000/32000 8000/8000 600/64000 16000/16000
9edd9041 5696DOC_END
5697
5698NAME: delay_initial_bucket_level
5699COMMENT: (percent, 0-100)
ae870270 5700TYPE: u_short
9edd9041 5701DEFAULT: 50
9a0a18de 5702IFDEF: USE_DELAY_POOLS
9edd9041 5703LOC: Config.Delay.initial
5704DOC_START
5705 The initial bucket percentage is used to determine how much is put
5706 in each bucket when squid starts, is reconfigured, or first notices
5707 a host accessing it (in class 2 and class 3, individual hosts and
5708 networks only have buckets associated with them once they have been
5709 "seen" by squid).
5710DOC_END
5711
b4cd430a
CT
5712COMMENT_START
5713 CLIENT DELAY POOL PARAMETERS
5714 -----------------------------------------------------------------------------
5715COMMENT_END
5716
5717NAME: client_delay_pools
5718TYPE: client_delay_pool_count
5719DEFAULT: 0
9a0a18de 5720IFDEF: USE_DELAY_POOLS
b4cd430a
CT
5721LOC: Config.ClientDelay
5722DOC_START
5723 This option specifies the number of client delay pools used. It must
5724 preceed other client_delay_* options.
5725
5726Example:
5727 client_delay_pools 2
5728DOC_END
5729
5730NAME: client_delay_initial_bucket_level
5731COMMENT: (percent, 0-no_limit)
ae870270 5732TYPE: u_short
b4cd430a 5733DEFAULT: 50
9a0a18de 5734IFDEF: USE_DELAY_POOLS
b4cd430a
CT
5735LOC: Config.ClientDelay.initial
5736DOC_START
5737 This option determines the initial bucket size as a percentage of
5738 max_bucket_size from client_delay_parameters. Buckets are created
5739 at the time of the "first" connection from the matching IP. Idle
5740 buckets are periodically deleted up.
5741
5742 You can specify more than 100 percent but note that such "oversized"
5743 buckets are not refilled until their size goes down to max_bucket_size
5744 from client_delay_parameters.
5745
5746Example:
5747 client_delay_initial_bucket_level 50
5748DOC_END
5749
5750NAME: client_delay_parameters
5751TYPE: client_delay_pool_rates
5752DEFAULT: none
9a0a18de 5753IFDEF: USE_DELAY_POOLS
b4cd430a
CT
5754LOC: Config.ClientDelay
5755DOC_START
5756
5757 This option configures client-side bandwidth limits using the
5758 following format:
5759
5760 client_delay_parameters pool speed_limit max_bucket_size
5761
5762 pool is an integer ID used for client_delay_access matching.
5763
5764 speed_limit is bytes added to the bucket per second.
5765
5766 max_bucket_size is the maximum size of a bucket, enforced after any
5767 speed_limit additions.
5768
5769 Please see the delay_parameters option for more information and
5770 examples.
5771
5772Example:
5773 client_delay_parameters 1 1024 2048
5774 client_delay_parameters 2 51200 16384
5775DOC_END
5776
5777NAME: client_delay_access
5778TYPE: client_delay_pool_access
5779DEFAULT: none
9a0a18de 5780IFDEF: USE_DELAY_POOLS
b4cd430a
CT
5781LOC: Config.ClientDelay
5782DOC_START
5783
5784 This option determines the client-side delay pool for the
5785 request:
5786
5787 client_delay_access pool_ID allow|deny acl_name
5788
5789 All client_delay_access options are checked in their pool ID
5790 order, starting with pool 1. The first checked pool with allowed
5791 request is selected for the request. If no ACL matches or there
5792 are no client_delay_access options, the request bandwidth is not
5793 limited.
5794
5795 The ACL-selected pool is then used to find the
5796 client_delay_parameters for the request. Client-side pools are
5797 not used to aggregate clients. Clients are always aggregated
5798 based on their source IP addresses (one bucket per source IP).
5799
5800 Please see delay_access for more examples.
5801
5802Example:
5803 client_delay_access 1 allow low_rate_network
5804 client_delay_access 2 allow vips_network
5805DOC_END
5806
cccac0a2 5807COMMENT_START
8d6275c0 5808 WCCPv1 AND WCCPv2 CONFIGURATION OPTIONS
cccac0a2 5809 -----------------------------------------------------------------------------
5810COMMENT_END
5811
8d6275c0 5812NAME: wccp_router
5813TYPE: address
5814LOC: Config.Wccp.router
0eb08770 5815DEFAULT: any_addr
8d6275c0 5816IFDEF: USE_WCCP
e313ab0a
AJ
5817DOC_START
5818 Use this option to define your WCCP ``home'' router for
5819 Squid.
5820
5821 wccp_router supports a single WCCP(v1) router
5822
5823 wccp2_router supports multiple WCCPv2 routers
5824
5825 only one of the two may be used at the same time and defines
5826 which version of WCCP to use.
5827DOC_END
df2eec10 5828
8d6275c0 5829NAME: wccp2_router
9fb4efad 5830TYPE: IpAddress_list
8d6275c0 5831LOC: Config.Wccp2.router
cccac0a2 5832DEFAULT: none
8d6275c0 5833IFDEF: USE_WCCPv2
cccac0a2 5834DOC_START
8d6275c0 5835 Use this option to define your WCCP ``home'' router for
5836 Squid.
cccac0a2 5837
8d6275c0 5838 wccp_router supports a single WCCP(v1) router
cccac0a2 5839
8d6275c0 5840 wccp2_router supports multiple WCCPv2 routers
cccac0a2 5841
8d6275c0 5842 only one of the two may be used at the same time and defines
5843 which version of WCCP to use.
5844DOC_END
5845
5846NAME: wccp_version
cccac0a2 5847TYPE: int
8d6275c0 5848LOC: Config.Wccp.version
5849DEFAULT: 4
5850IFDEF: USE_WCCP
cccac0a2 5851DOC_START
8d6275c0 5852 This directive is only relevant if you need to set up WCCP(v1)
5853 to some very old and end-of-life Cisco routers. In all other
5854 setups it must be left unset or at the default setting.
5855 It defines an internal version in the WCCP(v1) protocol,
5856 with version 4 being the officially documented protocol.
cccac0a2 5857
8d6275c0 5858 According to some users, Cisco IOS 11.2 and earlier only
5859 support WCCP version 3. If you're using that or an earlier
5860 version of IOS, you may need to change this value to 3, otherwise
5861 do not specify this parameter.
cccac0a2 5862DOC_END
5863
8d6275c0 5864NAME: wccp2_rebuild_wait
5865TYPE: onoff
5866LOC: Config.Wccp2.rebuildwait
5867DEFAULT: on
5868IFDEF: USE_WCCPv2
5869DOC_START
5870 If this is enabled Squid will wait for the cache dir rebuild to finish
5871 before sending the first wccp2 HereIAm packet
5872DOC_END
cccac0a2 5873
8d6275c0 5874NAME: wccp2_forwarding_method
e313ab0a 5875TYPE: wccp2_method
8d6275c0 5876LOC: Config.Wccp2.forwarding_method
451c4786 5877DEFAULT: gre
8d6275c0 5878IFDEF: USE_WCCPv2
cccac0a2 5879DOC_START
699acd19 5880 WCCP2 allows the setting of forwarding methods between the
8d6275c0 5881 router/switch and the cache. Valid values are as follows:
cccac0a2 5882
451c4786
AJ
5883 gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
5884 l2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
cccac0a2 5885
8d6275c0 5886 Currently (as of IOS 12.4) cisco routers only support GRE.
5887 Cisco switches only support the L2 redirect assignment method.
cccac0a2 5888DOC_END
5889
8d6275c0 5890NAME: wccp2_return_method
e313ab0a 5891TYPE: wccp2_method
8d6275c0 5892LOC: Config.Wccp2.return_method
451c4786 5893DEFAULT: gre
8d6275c0 5894IFDEF: USE_WCCPv2
cccac0a2 5895DOC_START
699acd19 5896 WCCP2 allows the setting of return methods between the
8d6275c0 5897 router/switch and the cache for packets that the cache
5898 decides not to handle. Valid values are as follows:
cccac0a2 5899
451c4786
AJ
5900 gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
5901 l2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
cccac0a2 5902
8d6275c0 5903 Currently (as of IOS 12.4) cisco routers only support GRE.
5904 Cisco switches only support the L2 redirect assignment.
cccac0a2 5905
699acd19 5906 If the "ip wccp redirect exclude in" command has been
8d6275c0 5907 enabled on the cache interface, then it is still safe for
5908 the proxy server to use a l2 redirect method even if this
5909 option is set to GRE.
cccac0a2 5910DOC_END
5911
8d6275c0 5912NAME: wccp2_assignment_method
451c4786 5913TYPE: wccp2_amethod
8d6275c0 5914LOC: Config.Wccp2.assignment_method
451c4786 5915DEFAULT: hash
8d6275c0 5916IFDEF: USE_WCCPv2
cccac0a2 5917DOC_START
8d6275c0 5918 WCCP2 allows the setting of methods to assign the WCCP hash
5919 Valid values are as follows:
cccac0a2 5920
451c4786 5921 hash - Hash assignment
bb7a1781 5922 mask - Mask assignment
cccac0a2 5923
8d6275c0 5924 As a general rule, cisco routers support the hash assignment method
5925 and cisco switches support the mask assignment method.
5926DOC_END
cccac0a2 5927
8d6275c0 5928NAME: wccp2_service
5929TYPE: wccp2_service
5930LOC: Config.Wccp2.info
8d6275c0 5931DEFAULT_IF_NONE: standard 0
5932IFDEF: USE_WCCPv2
5933DOC_START
5934 WCCP2 allows for multiple traffic services. There are two
5935 types: "standard" and "dynamic". The standard type defines
5936 one service id - http (id 0). The dynamic service ids can be from
5937 51 to 255 inclusive. In order to use a dynamic service id
5938 one must define the type of traffic to be redirected; this is done
5939 using the wccp2_service_info option.
5940
5941 The "standard" type does not require a wccp2_service_info option,
5942 just specifying the service id will suffice.
5943
5944 MD5 service authentication can be enabled by adding
5945 "password=<password>" to the end of this service declaration.
5946
5947 Examples:
5948
5949 wccp2_service standard 0 # for the 'web-cache' standard service
5950 wccp2_service dynamic 80 # a dynamic service type which will be
5951 # fleshed out with subsequent options.
5952 wccp2_service standard 0 password=foo
8d6275c0 5953DOC_END
5954
5955NAME: wccp2_service_info
5956TYPE: wccp2_service_info
5957LOC: Config.Wccp2.info
5958DEFAULT: none
5959IFDEF: USE_WCCPv2
5960DOC_START
5961 Dynamic WCCPv2 services require further information to define the
5962 traffic you wish to have diverted.
5963
5964 The format is:
5965
5966 wccp2_service_info <id> protocol=<protocol> flags=<flag>,<flag>..
5967 priority=<priority> ports=<port>,<port>..
5968
5969 The relevant WCCPv2 flags:
5970 + src_ip_hash, dst_ip_hash
005fe566 5971 + source_port_hash, dst_port_hash
8d6275c0 5972 + src_ip_alt_hash, dst_ip_alt_hash
5973 + src_port_alt_hash, dst_port_alt_hash
5974 + ports_source
5975
5976 The port list can be one to eight entries.
5977
5978 Example:
5979
5980 wccp2_service_info 80 protocol=tcp flags=src_ip_hash,ports_source
5981 priority=240 ports=80
5982
5983 Note: the service id must have been defined by a previous
5984 'wccp2_service dynamic <id>' entry.
5985DOC_END
5986
5987NAME: wccp2_weight
5988TYPE: int
5989LOC: Config.Wccp2.weight
5990DEFAULT: 10000
5991IFDEF: USE_WCCPv2
5992DOC_START
5993 Each cache server gets assigned a set of the destination
5994 hash proportional to their weight.
5995DOC_END
5996
5997NAME: wccp_address
5998TYPE: address
5999LOC: Config.Wccp.address
6000DEFAULT: 0.0.0.0
6001IFDEF: USE_WCCP
6002DOC_NONE
df2eec10 6003
8d6275c0 6004NAME: wccp2_address
6005TYPE: address
6006LOC: Config.Wccp2.address
6007DEFAULT: 0.0.0.0
6008IFDEF: USE_WCCPv2
6009DOC_START
6010 Use this option if you require WCCP to use a specific
6011 interface address.
6012
6013 The default behavior is to not bind to any specific address.
6014DOC_END
6015
6016COMMENT_START
6017 PERSISTENT CONNECTION HANDLING
6018 -----------------------------------------------------------------------------
6019
6020 Also see "pconn_timeout" in the TIMEOUTS section
6021COMMENT_END
6022
6023NAME: client_persistent_connections
6024TYPE: onoff
6025LOC: Config.onoff.client_pconns
6026DEFAULT: on
6027DOC_NONE
6028
6029NAME: server_persistent_connections
6030TYPE: onoff
6031LOC: Config.onoff.server_pconns
6032DEFAULT: on
6033DOC_START
6034 Persistent connection support for clients and servers. By
6035 default, Squid uses persistent connections (when allowed)
6036 with its clients and servers. You can use these options to
6037 disable persistent connections with clients and/or servers.
6038DOC_END
6039
6040NAME: persistent_connection_after_error
6041TYPE: onoff
6042LOC: Config.onoff.error_pconns
0fccfb7f 6043DEFAULT: on
8d6275c0 6044DOC_START
6045 With this directive the use of persistent connections after
6046 HTTP errors can be disabled. Useful if you have clients
6047 who fail to handle errors on persistent connections proper.
6048DOC_END
6049
6050NAME: detect_broken_pconn
6051TYPE: onoff
6052LOC: Config.onoff.detect_broken_server_pconns
6053DEFAULT: off
6054DOC_START
6055 Some servers have been found to incorrectly signal the use
6056 of HTTP/1.0 persistent connections even on replies not
6057 compatible, causing significant delays. This server problem
6058 has mostly been seen on redirects.
6059
6060 By enabling this directive Squid attempts to detect such
6061 broken replies and automatically assume the reply is finished
6062 after 10 seconds timeout.
6063DOC_END
6064
6065COMMENT_START
6066 CACHE DIGEST OPTIONS
6067 -----------------------------------------------------------------------------
6068COMMENT_END
6069
6070NAME: digest_generation
6071IFDEF: USE_CACHE_DIGESTS
6072TYPE: onoff
6073LOC: Config.onoff.digest_generation
6074DEFAULT: on
6075DOC_START
6076 This controls whether the server will generate a Cache Digest
6077 of its contents. By default, Cache Digest generation is
13e917b5 6078 enabled if Squid is compiled with --enable-cache-digests defined.
8d6275c0 6079DOC_END
6080
6081NAME: digest_bits_per_entry
6082IFDEF: USE_CACHE_DIGESTS
6083TYPE: int
6084LOC: Config.digest.bits_per_entry
6085DEFAULT: 5
6086DOC_START
6087 This is the number of bits of the server's Cache Digest which
6088 will be associated with the Digest entry for a given HTTP
6089 Method and URL (public key) combination. The default is 5.
6090DOC_END
6091
6092NAME: digest_rebuild_period
6093IFDEF: USE_CACHE_DIGESTS
6094COMMENT: (seconds)
6095TYPE: time_t
6096LOC: Config.digest.rebuild_period
6097DEFAULT: 1 hour
6098DOC_START
749ceff8 6099 This is the wait time between Cache Digest rebuilds.
8d6275c0 6100DOC_END
6101
6102NAME: digest_rewrite_period
6103COMMENT: (seconds)
6104IFDEF: USE_CACHE_DIGESTS
6105TYPE: time_t
6106LOC: Config.digest.rewrite_period
6107DEFAULT: 1 hour
6108DOC_START
749ceff8 6109 This is the wait time between Cache Digest writes to
8d6275c0 6110 disk.
6111DOC_END
6112
6113NAME: digest_swapout_chunk_size
6114COMMENT: (bytes)
6115TYPE: b_size_t
6116IFDEF: USE_CACHE_DIGESTS
6117LOC: Config.digest.swapout_chunk_size
6118DEFAULT: 4096 bytes
6119DOC_START
6120 This is the number of bytes of the Cache Digest to write to
6121 disk at a time. It defaults to 4096 bytes (4KB), the Squid
6122 default swap page.
6123DOC_END
6124
6125NAME: digest_rebuild_chunk_percentage
6126COMMENT: (percent, 0-100)
6127IFDEF: USE_CACHE_DIGESTS
6128TYPE: int
6129LOC: Config.digest.rebuild_chunk_percentage
6130DEFAULT: 10
6131DOC_START
6132 This is the percentage of the Cache Digest to be scanned at a
6133 time. By default it is set to 10% of the Cache Digest.
6134DOC_END
6135
1db9eacd 6136COMMENT_START
5473c134 6137 SNMP OPTIONS
1db9eacd 6138 -----------------------------------------------------------------------------
6139COMMENT_END
6140
5473c134 6141NAME: snmp_port
ae870270 6142TYPE: u_short
5473c134 6143LOC: Config.Port.snmp
87630341 6144DEFAULT: 0
5473c134 6145IFDEF: SQUID_SNMP
8d6275c0 6146DOC_START
87630341 6147 The port number where Squid listens for SNMP requests. To enable
6148 SNMP support set this to a suitable port number. Port number
6149 3401 is often used for the Squid SNMP agent. By default it's
6150 set to "0" (disabled)
e0855596
AJ
6151
6152 Example:
6153 snmp_port 3401
8d6275c0 6154DOC_END
6155
5473c134 6156NAME: snmp_access
6157TYPE: acl_access
6158LOC: Config.accessList.snmp
5473c134 6159DEFAULT_IF_NONE: deny all
6160IFDEF: SQUID_SNMP
8d6275c0 6161DOC_START
5473c134 6162 Allowing or denying access to the SNMP port.
8d6275c0 6163
5473c134 6164 All access to the agent is denied by default.
6165 usage:
8d6275c0 6166
5473c134 6167 snmp_access allow|deny [!]aclname ...
8d6275c0 6168
b3567eb5
FC
6169 This clause only supports fast acl types.
6170 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
5473c134 6171Example:
6172 snmp_access allow snmppublic localhost
6173 snmp_access deny all
cccac0a2 6174DOC_END
6175
5473c134 6176NAME: snmp_incoming_address
6177TYPE: address
6178LOC: Config.Addrs.snmp_incoming
0eb08770 6179DEFAULT: any_addr
5473c134 6180IFDEF: SQUID_SNMP
6181DOC_NONE
df2eec10 6182
5473c134 6183NAME: snmp_outgoing_address
6184TYPE: address
6185LOC: Config.Addrs.snmp_outgoing
0eb08770 6186DEFAULT: no_addr
5473c134 6187IFDEF: SQUID_SNMP
cccac0a2 6188DOC_START
df2eec10 6189 Just like 'udp_incoming_address', but for the SNMP port.
cccac0a2 6190
5473c134 6191 snmp_incoming_address is used for the SNMP socket receiving
6192 messages from SNMP agents.
6193 snmp_outgoing_address is used for SNMP packets returned to SNMP
6194 agents.
cccac0a2 6195
0eb08770 6196 The default snmp_incoming_address is to listen on all
5473c134 6197 available network interfaces.
cccac0a2 6198
0eb08770
HN
6199 If snmp_outgoing_address is not set it will use the same socket
6200 as snmp_incoming_address. Only change this if you want to have
6201 SNMP replies sent using another address than where this Squid
6202 listens for SNMP queries.
cccac0a2 6203
5473c134 6204 NOTE, snmp_incoming_address and snmp_outgoing_address can not have
6205 the same value since they both use port 3401.
cccac0a2 6206DOC_END
6207
5473c134 6208COMMENT_START
6209 ICP OPTIONS
6210 -----------------------------------------------------------------------------
6211COMMENT_END
6212
6213NAME: icp_port udp_port
ae870270 6214TYPE: u_short
5473c134 6215DEFAULT: 0
6216LOC: Config.Port.icp
cccac0a2 6217DOC_START
5473c134 6218 The port number where Squid sends and receives ICP queries to
6219 and from neighbor caches. The standard UDP port for ICP is 3130.
6220 Default is disabled (0).
e0855596
AJ
6221
6222 Example:
6223 icp_port @DEFAULT_ICP_PORT@
cccac0a2 6224DOC_END
6225
5473c134 6226NAME: htcp_port
6227IFDEF: USE_HTCP
ae870270 6228TYPE: u_short
87630341 6229DEFAULT: 0
5473c134 6230LOC: Config.Port.htcp
cccac0a2 6231DOC_START
5473c134 6232 The port number where Squid sends and receives HTCP queries to
87630341 6233 and from neighbor caches. To turn it on you want to set it to
6234 4827. By default it is set to "0" (disabled).
e0855596
AJ
6235
6236 Example:
6237 htcp_port 4827
cccac0a2 6238DOC_END
6239
6240NAME: log_icp_queries
6241COMMENT: on|off
6242TYPE: onoff
6243DEFAULT: on
6244LOC: Config.onoff.log_udp
6245DOC_START
6246 If set, ICP queries are logged to access.log. You may wish
6247 do disable this if your ICP load is VERY high to speed things
6248 up or to simplify log analysis.
6249DOC_END
6250
5473c134 6251NAME: udp_incoming_address
6252TYPE: address
6253LOC:Config.Addrs.udp_incoming
0eb08770 6254DEFAULT: any_addr
8524d4b2 6255DOC_START
6256 udp_incoming_address is used for UDP packets received from other
6257 caches.
6258
6259 The default behavior is to not bind to any specific address.
6260
6261 Only change this if you want to have all UDP queries received on
6262 a specific interface/address.
6263
6264 NOTE: udp_incoming_address is used by the ICP, HTCP, and DNS
6265 modules. Altering it will affect all of them in the same manner.
6266
6267 see also; udp_outgoing_address
6268
6269 NOTE, udp_incoming_address and udp_outgoing_address can not
6270 have the same value since they both use the same port.
6271DOC_END
cccac0a2 6272
5473c134 6273NAME: udp_outgoing_address
6274TYPE: address
6275LOC: Config.Addrs.udp_outgoing
0eb08770 6276DEFAULT: no_addr
cccac0a2 6277DOC_START
8524d4b2 6278 udp_outgoing_address is used for UDP packets sent out to other
5473c134 6279 caches.
cccac0a2 6280
5473c134 6281 The default behavior is to not bind to any specific address.
cccac0a2 6282
8524d4b2 6283 Instead it will use the same socket as udp_incoming_address.
6284 Only change this if you want to have UDP queries sent using another
6285 address than where this Squid listens for UDP queries from other
5473c134 6286 caches.
6287
8524d4b2 6288 NOTE: udp_outgoing_address is used by the ICP, HTCP, and DNS
6289 modules. Altering it will affect all of them in the same manner.
6290
6291 see also; udp_incoming_address
6292
5473c134 6293 NOTE, udp_incoming_address and udp_outgoing_address can not
8524d4b2 6294 have the same value since they both use the same port.
cccac0a2 6295DOC_END
6296
3d1e3e43 6297NAME: icp_hit_stale
6298COMMENT: on|off
6299TYPE: onoff
6300DEFAULT: off
6301LOC: Config.onoff.icp_hit_stale
6302DOC_START
6303 If you want to return ICP_HIT for stale cache objects, set this
6304 option to 'on'. If you have sibling relationships with caches
6305 in other administrative domains, this should be 'off'. If you only
6306 have sibling relationships with caches under your control,
6307 it is probably okay to set this to 'on'.
6308 If set to 'on', your siblings should use the option "allow-miss"
6309 on their cache_peer lines for connecting to you.
6310DOC_END
6311
5473c134 6312NAME: minimum_direct_hops
cccac0a2 6313TYPE: int
5473c134 6314DEFAULT: 4
6315LOC: Config.minDirectHops
cccac0a2 6316DOC_START
5473c134 6317 If using the ICMP pinging stuff, do direct fetches for sites
6318 which are no more than this many hops away.
cccac0a2 6319DOC_END
6320
5473c134 6321NAME: minimum_direct_rtt
6322TYPE: int
6323DEFAULT: 400
6324LOC: Config.minDirectRtt
cccac0a2 6325DOC_START
5473c134 6326 If using the ICMP pinging stuff, do direct fetches for sites
6327 which are no more than this many rtt milliseconds away.
cccac0a2 6328DOC_END
6329
cccac0a2 6330NAME: netdb_low
6331TYPE: int
6332DEFAULT: 900
6333LOC: Config.Netdb.low
6334DOC_NONE
6335
6336NAME: netdb_high
6337TYPE: int
6338DEFAULT: 1000
6339LOC: Config.Netdb.high
6340DOC_START
6341 The low and high water marks for the ICMP measurement
6342 database. These are counts, not percents. The defaults are
6343 900 and 1000. When the high water mark is reached, database
6344 entries will be deleted until the low mark is reached.
6345DOC_END
6346
cccac0a2 6347NAME: netdb_ping_period
6348TYPE: time_t
6349LOC: Config.Netdb.period
6350DEFAULT: 5 minutes
6351DOC_START
6352 The minimum period for measuring a site. There will be at
6353 least this much delay between successive pings to the same
6354 network. The default is five minutes.
6355DOC_END
6356
cccac0a2 6357NAME: query_icmp
6358COMMENT: on|off
6359TYPE: onoff
6360DEFAULT: off
6361LOC: Config.onoff.query_icmp
6362DOC_START
6363 If you want to ask your peers to include ICMP data in their ICP
6364 replies, enable this option.
6365
6366 If your peer has configured Squid (during compilation) with
7f7db318 6367 '--enable-icmp' that peer will send ICMP pings to origin server
6368 sites of the URLs it receives. If you enable this option the
cccac0a2 6369 ICP replies from that peer will include the ICMP data (if available).
6370 Then, when choosing a parent cache, Squid will choose the parent with
6371 the minimal RTT to the origin server. When this happens, the
6372 hierarchy field of the access.log will be
6373 "CLOSEST_PARENT_MISS". This option is off by default.
6374DOC_END
6375
6376NAME: test_reachability
6377COMMENT: on|off
6378TYPE: onoff
6379DEFAULT: off
6380LOC: Config.onoff.test_reachability
6381DOC_START
6382 When this is 'on', ICP MISS replies will be ICP_MISS_NOFETCH
6383 instead of ICP_MISS if the target host is NOT in the ICMP
6384 database, or has a zero RTT.
6385DOC_END
6386
5473c134 6387NAME: icp_query_timeout
6388COMMENT: (msec)
6389DEFAULT: 0
6390TYPE: int
6391LOC: Config.Timeout.icp_query
4c3ef9b2 6392DOC_START
5473c134 6393 Normally Squid will automatically determine an optimal ICP
6394 query timeout value based on the round-trip-time of recent ICP
6395 queries. If you want to override the value determined by
6396 Squid, set this 'icp_query_timeout' to a non-zero value. This
6397 value is specified in MILLISECONDS, so, to use a 2-second
6398 timeout (the old default), you would write:
4c3ef9b2 6399
5473c134 6400 icp_query_timeout 2000
4c3ef9b2 6401DOC_END
6402
5473c134 6403NAME: maximum_icp_query_timeout
6404COMMENT: (msec)
6405DEFAULT: 2000
6406TYPE: int
6407LOC: Config.Timeout.icp_query_max
cccac0a2 6408DOC_START
5473c134 6409 Normally the ICP query timeout is determined dynamically. But
6410 sometimes it can lead to very large values (say 5 seconds).
6411 Use this option to put an upper limit on the dynamic timeout
6412 value. Do NOT use this option to always use a fixed (instead
6413 of a dynamic) timeout value. To set a fixed timeout see the
6414 'icp_query_timeout' directive.
cccac0a2 6415DOC_END
6416
5473c134 6417NAME: minimum_icp_query_timeout
6418COMMENT: (msec)
6419DEFAULT: 5
6420TYPE: int
6421LOC: Config.Timeout.icp_query_min
cccac0a2 6422DOC_START
5473c134 6423 Normally the ICP query timeout is determined dynamically. But
6424 sometimes it can lead to very small timeouts, even lower than
6425 the normal latency variance on your link due to traffic.
6426 Use this option to put an lower limit on the dynamic timeout
6427 value. Do NOT use this option to always use a fixed (instead
6428 of a dynamic) timeout value. To set a fixed timeout see the
6429 'icp_query_timeout' directive.
cccac0a2 6430DOC_END
6431
5473c134 6432NAME: background_ping_rate
6433COMMENT: time-units
6434TYPE: time_t
6435DEFAULT: 10 seconds
6436LOC: Config.backgroundPingRate
cccac0a2 6437DOC_START
5473c134 6438 Controls how often the ICP pings are sent to siblings that
6439 have background-ping set.
cccac0a2 6440DOC_END
6441
5473c134 6442COMMENT_START
6443 MULTICAST ICP OPTIONS
6444 -----------------------------------------------------------------------------
6445COMMENT_END
6446
6447NAME: mcast_groups
6448TYPE: wordlist
6449LOC: Config.mcast_group_list
8c01ada0 6450DEFAULT: none
6451DOC_START
5473c134 6452 This tag specifies a list of multicast groups which your server
6453 should join to receive multicasted ICP queries.
8c01ada0 6454
5473c134 6455 NOTE! Be very careful what you put here! Be sure you
6456 understand the difference between an ICP _query_ and an ICP
6457 _reply_. This option is to be set only if you want to RECEIVE
6458 multicast queries. Do NOT set this option to SEND multicast
6459 ICP (use cache_peer for that). ICP replies are always sent via
6460 unicast, so this option does not affect whether or not you will
6461 receive replies from multicast group members.
8c01ada0 6462
5473c134 6463 You must be very careful to NOT use a multicast address which
6464 is already in use by another group of caches.
8c01ada0 6465
5473c134 6466 If you are unsure about multicast, please read the Multicast
6467 chapter in the Squid FAQ (http://www.squid-cache.org/FAQ/).
8c01ada0 6468
5473c134 6469 Usage: mcast_groups 239.128.16.128 224.0.1.20
8c01ada0 6470
5473c134 6471 By default, Squid doesn't listen on any multicast groups.
6472DOC_END
8c01ada0 6473
5473c134 6474NAME: mcast_miss_addr
6475IFDEF: MULTICAST_MISS_STREAM
6476TYPE: address
6477LOC: Config.mcast_miss.addr
0eb08770 6478DEFAULT: no_addr
5473c134 6479DOC_START
6480 If you enable this option, every "cache miss" URL will
6481 be sent out on the specified multicast address.
cccac0a2 6482
5473c134 6483 Do not enable this option unless you are are absolutely
6484 certain you understand what you are doing.
cccac0a2 6485DOC_END
6486
5473c134 6487NAME: mcast_miss_ttl
6488IFDEF: MULTICAST_MISS_STREAM
ae870270 6489TYPE: u_short
5473c134 6490LOC: Config.mcast_miss.ttl
6491DEFAULT: 16
cccac0a2 6492DOC_START
5473c134 6493 This is the time-to-live value for packets multicasted
6494 when multicasting off cache miss URLs is enabled. By
6495 default this is set to 'site scope', i.e. 16.
6496DOC_END
cccac0a2 6497
5473c134 6498NAME: mcast_miss_port
6499IFDEF: MULTICAST_MISS_STREAM
ae870270 6500TYPE: u_short
5473c134 6501LOC: Config.mcast_miss.port
6502DEFAULT: 3135
6503DOC_START
6504 This is the port number to be used in conjunction with
6505 'mcast_miss_addr'.
6506DOC_END
cccac0a2 6507
5473c134 6508NAME: mcast_miss_encode_key
6509IFDEF: MULTICAST_MISS_STREAM
6510TYPE: string
6511LOC: Config.mcast_miss.encode_key
6512DEFAULT: XXXXXXXXXXXXXXXX
6513DOC_START
6514 The URLs that are sent in the multicast miss stream are
6515 encrypted. This is the encryption key.
6516DOC_END
8c01ada0 6517
5473c134 6518NAME: mcast_icp_query_timeout
6519COMMENT: (msec)
6520DEFAULT: 2000
6521TYPE: int
6522LOC: Config.Timeout.mcast_icp_query
6523DOC_START
6524 For multicast peers, Squid regularly sends out ICP "probes" to
6525 count how many other peers are listening on the given multicast
6526 address. This value specifies how long Squid should wait to
6527 count all the replies. The default is 2000 msec, or 2
6528 seconds.
cccac0a2 6529DOC_END
6530
5473c134 6531COMMENT_START
6532 INTERNAL ICON OPTIONS
6533 -----------------------------------------------------------------------------
6534COMMENT_END
6535
cccac0a2 6536NAME: icon_directory
6537TYPE: string
6538LOC: Config.icons.directory
6539DEFAULT: @DEFAULT_ICON_DIR@
6540DOC_START
6541 Where the icons are stored. These are normally kept in
6542 @DEFAULT_ICON_DIR@
6543DOC_END
6544
f024c970 6545NAME: global_internal_static
6546TYPE: onoff
6547LOC: Config.onoff.global_internal_static
6548DEFAULT: on
6549DOC_START
6550 This directive controls is Squid should intercept all requests for
6551 /squid-internal-static/ no matter which host the URL is requesting
6552 (default on setting), or if nothing special should be done for
6553 such URLs (off setting). The purpose of this directive is to make
6554 icons etc work better in complex cache hierarchies where it may
6555 not always be possible for all corners in the cache mesh to reach
6556 the server generating a directory listing.
6557DOC_END
6558
5473c134 6559NAME: short_icon_urls
6560TYPE: onoff
6561LOC: Config.icons.use_short_names
6562DEFAULT: on
6563DOC_START
6564 If this is enabled Squid will use short URLs for icons.
6565 If disabled it will revert to the old behavior of including
6566 it's own name and port in the URL.
6567
6568 If you run a complex cache hierarchy with a mix of Squid and
6569 other proxies you may need to disable this directive.
6570DOC_END
6571
6572COMMENT_START
6573 ERROR PAGE OPTIONS
6574 -----------------------------------------------------------------------------
6575COMMENT_END
6576
6577NAME: error_directory
6578TYPE: string
6579LOC: Config.errorDirectory
43000484 6580DEFAULT: none
5473c134 6581DOC_START
6582 If you wish to create your own versions of the default
43000484
AJ
6583 error files to customize them to suit your company copy
6584 the error/template files to another directory and point
6585 this tag at them.
6586
6587 WARNING: This option will disable multi-language support
6588 on error pages if used.
5473c134 6589
6590 The squid developers are interested in making squid available in
6591 a wide variety of languages. If you are making translations for a
43000484 6592 language that Squid does not currently provide please consider
5473c134 6593 contributing your translation back to the project.
43000484
AJ
6594 http://wiki.squid-cache.org/Translations
6595
6596 The squid developers working on translations are happy to supply drop-in
6597 translated error files in exchange for any new language contributions.
6598DOC_END
6599
6600NAME: error_default_language
6601IFDEF: USE_ERR_LOCALES
6602TYPE: string
6603LOC: Config.errorDefaultLanguage
6604DEFAULT: none
6605DOC_START
6606 Set the default language which squid will send error pages in
6607 if no existing translation matches the clients language
6608 preferences.
6609
6610 If unset (default) generic English will be used.
6611
6612 The squid developers are interested in making squid available in
6613 a wide variety of languages. If you are interested in making
6614 translations for any language see the squid wiki for details.
6615 http://wiki.squid-cache.org/Translations
5473c134 6616DOC_END
6617
c411820c
AJ
6618NAME: error_log_languages
6619IFDEF: USE_ERR_LOCALES
6620TYPE: onoff
6621LOC: Config.errorLogMissingLanguages
6622DEFAULT: on
6623DOC_START
6624 Log to cache.log what languages users are attempting to
6625 auto-negotiate for translations.
6626
6627 Successful negotiations are not logged. Only failures
6628 have meaning to indicate that Squid may need an upgrade
0c49f10e 6629 of its error page translations.
c411820c
AJ
6630DOC_END
6631
5b52cb6c
AJ
6632NAME: err_page_stylesheet
6633TYPE: string
6634LOC: Config.errorStylesheet
6635DEFAULT: @DEFAULT_CONFIG_DIR@/errorpage.css
6636DOC_START
6637 CSS Stylesheet to pattern the display of Squid default error pages.
6638
6639 For information on CSS see http://www.w3.org/Style/CSS/
6640DOC_END
6641
5473c134 6642NAME: err_html_text
6643TYPE: eol
6644LOC: Config.errHtmlText
6645DEFAULT: none
6646DOC_START
6647 HTML text to include in error messages. Make this a "mailto"
6648 URL to your admin address, or maybe just a link to your
6649 organizations Web page.
6650
6651 To include this in your error messages, you must rewrite
6652 the error template files (found in the "errors" directory).
6653 Wherever you want the 'err_html_text' line to appear,
6654 insert a %L tag in the error template file.
6655DOC_END
6656
6657NAME: email_err_data
6658COMMENT: on|off
6659TYPE: onoff
6660LOC: Config.onoff.emailErrData
6661DEFAULT: on
6662DOC_START
6663 If enabled, information about the occurred error will be
6664 included in the mailto links of the ERR pages (if %W is set)
6665 so that the email body contains the data.
6666 Syntax is <A HREF="mailto:%w%W">%w</A>
6667DOC_END
6668
6669NAME: deny_info
6670TYPE: denyinfo
6671LOC: Config.denyInfoList
6672DEFAULT: none
6673DOC_START
6674 Usage: deny_info err_page_name acl
6675 or deny_info http://... acl
43000484 6676 or deny_info TCP_RESET acl
5473c134 6677
6678 This can be used to return a ERR_ page for requests which
6679 do not pass the 'http_access' rules. Squid remembers the last
6680 acl it evaluated in http_access, and if a 'deny_info' line exists
6681 for that ACL Squid returns a corresponding error page.
6682
6683 The acl is typically the last acl on the http_access deny line which
6684 denied access. The exceptions to this rule are:
6685 - When Squid needs to request authentication credentials. It's then
6686 the first authentication related acl encountered
6687 - When none of the http_access lines matches. It's then the last
6688 acl processed on the last http_access line.
3af10ac0
AR
6689 - When the decision to deny access was made by an adaptation service,
6690 the acl name is the corresponding eCAP or ICAP service_name.
5473c134 6691
43000484
AJ
6692 NP: If providing your own custom error pages with error_directory
6693 you may also specify them by your custom file name:
6694 Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
5473c134 6695
aed9a15b
AJ
6696 By defaut Squid will send "403 Forbidden". A different 4xx or 5xx
6697 may be specified by prefixing the file name with the code and a colon.
6698 e.g. 404:ERR_CUSTOM_ACCESS_DENIED
6699
5473c134 6700 Alternatively you can tell Squid to reset the TCP connection
6701 by specifying TCP_RESET.
15b02e9a
AJ
6702
6703 Or you can specify an error URL or URL pattern. The browsers will
aed9a15b
AJ
6704 get redirected to the specified URL after formatting tags have
6705 been replaced. Redirect will be done with 302 or 307 according to
6706 HTTP/1.1 specs. A different 3xx code may be specified by prefixing
6707 the URL. e.g. 303:http://example.com/
15b02e9a
AJ
6708
6709 URL FORMAT TAGS:
6710 %a - username (if available. Password NOT included)
6711 %B - FTP path URL
6712 %e - Error number
6713 %E - Error description
6714 %h - Squid hostname
6715 %H - Request domain name
6716 %i - Client IP Address
6717 %M - Request Method
6718 %o - Message result from external ACL helper
6719 %p - Request Port number
6720 %P - Request Protocol name
6721 %R - Request URL path
6722 %T - Timestamp in RFC 1123 format
6723 %U - Full canonical URL from client
6724 (HTTPS URLs terminate with *)
6725 %u - Full canonical URL from client
6726 %w - Admin email from squid.conf
e4a8468d 6727 %x - Error name
15b02e9a
AJ
6728 %% - Literal percent (%) code
6729
5473c134 6730DOC_END
6731
6732COMMENT_START
6733 OPTIONS INFLUENCING REQUEST FORWARDING
6734 -----------------------------------------------------------------------------
6735COMMENT_END
6736
6737NAME: nonhierarchical_direct
e72a0ec0 6738TYPE: onoff
5473c134 6739LOC: Config.onoff.nonhierarchical_direct
e72a0ec0 6740DEFAULT: on
6741DOC_START
5473c134 6742 By default, Squid will send any non-hierarchical requests
6743 (matching hierarchy_stoplist or not cacheable request type) direct
6744 to origin servers.
e72a0ec0 6745
5473c134 6746 If you set this to off, Squid will prefer to send these
6747 requests to parents.
0b0cfcf2 6748
5473c134 6749 Note that in most configurations, by turning this off you will only
6750 add latency to these request without any improvement in global hit
6751 ratio.
0b0cfcf2 6752
5473c134 6753 If you are inside an firewall see never_direct instead of
6754 this directive.
8d6275c0 6755DOC_END
0b0cfcf2 6756
5473c134 6757NAME: prefer_direct
8d6275c0 6758TYPE: onoff
5473c134 6759LOC: Config.onoff.prefer_direct
8d6275c0 6760DEFAULT: off
6761DOC_START
5473c134 6762 Normally Squid tries to use parents for most requests. If you for some
6763 reason like it to first try going direct and only use a parent if
6764 going direct fails set this to on.
0b0cfcf2 6765
5473c134 6766 By combining nonhierarchical_direct off and prefer_direct on you
6767 can set up Squid to use a parent as a backup path if going direct
6768 fails.
6769
6770 Note: If you want Squid to use parents for all requests see
6771 the never_direct directive. prefer_direct only modifies how Squid
6772 acts on cacheable requests.
cccac0a2 6773DOC_END
6774
5473c134 6775NAME: always_direct
8d6275c0 6776TYPE: acl_access
5473c134 6777LOC: Config.accessList.AlwaysDirect
0b0cfcf2 6778DEFAULT: none
0b0cfcf2 6779DOC_START
5473c134 6780 Usage: always_direct allow|deny [!]aclname ...
0b0cfcf2 6781
5473c134 6782 Here you can use ACL elements to specify requests which should
6783 ALWAYS be forwarded by Squid to the origin servers without using
6784 any peers. For example, to always directly forward requests for
6785 local servers ignoring any parents or siblings you may have use
6786 something like:
0b0cfcf2 6787
5473c134 6788 acl local-servers dstdomain my.domain.net
6789 always_direct allow local-servers
0b0cfcf2 6790
5473c134 6791 To always forward FTP requests directly, use
f16fbc82 6792
5473c134 6793 acl FTP proto FTP
6794 always_direct allow FTP
cccac0a2 6795
5473c134 6796 NOTE: There is a similar, but opposite option named
6797 'never_direct'. You need to be aware that "always_direct deny
6798 foo" is NOT the same thing as "never_direct allow foo". You
6799 may need to use a deny rule to exclude a more-specific case of
6800 some other rule. Example:
8d6275c0 6801
5473c134 6802 acl local-external dstdomain external.foo.net
6803 acl local-servers dstdomain .foo.net
6804 always_direct deny local-external
6805 always_direct allow local-servers
8d6275c0 6806
5473c134 6807 NOTE: If your goal is to make the client forward the request
6808 directly to the origin server bypassing Squid then this needs
6809 to be done in the client configuration. Squid configuration
6810 can only tell Squid how Squid should fetch the object.
8d6275c0 6811
5473c134 6812 NOTE: This directive is not related to caching. The replies
6813 is cached as usual even if you use always_direct. To not cache
b3567eb5 6814 the replies see the 'cache' directive.
5473c134 6815
b3567eb5
FC
6816 This clause supports both fast and slow acl types.
6817 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
cccac0a2 6818DOC_END
0976f8db 6819
5473c134 6820NAME: never_direct
6821TYPE: acl_access
6822LOC: Config.accessList.NeverDirect
6823DEFAULT: none
8d6275c0 6824DOC_START
5473c134 6825 Usage: never_direct allow|deny [!]aclname ...
6826
6827 never_direct is the opposite of always_direct. Please read
6828 the description for always_direct if you have not already.
6829
6830 With 'never_direct' you can use ACL elements to specify
6831 requests which should NEVER be forwarded directly to origin
6832 servers. For example, to force the use of a proxy for all
6833 requests, except those in your local domain use something like:
6834
6835 acl local-servers dstdomain .foo.net
5473c134 6836 never_direct deny local-servers
6837 never_direct allow all
6838
6839 or if Squid is inside a firewall and there are local intranet
6840 servers inside the firewall use something like:
6841
6842 acl local-intranet dstdomain .foo.net
6843 acl local-external dstdomain external.foo.net
6844 always_direct deny local-external
6845 always_direct allow local-intranet
6846 never_direct allow all
6847
b3567eb5
FC
6848 This clause supports both fast and slow acl types.
6849 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
8d6275c0 6850DOC_END
0976f8db 6851
5473c134 6852COMMENT_START
6853 ADVANCED NETWORKING OPTIONS
6854 -----------------------------------------------------------------------------
6855COMMENT_END
6856
65d448bc 6857NAME: incoming_udp_average incoming_icp_average
cccac0a2 6858TYPE: int
6859DEFAULT: 6
65d448bc
AJ
6860LOC: Config.comm_incoming.udp.average
6861DOC_START
6862 Heavy voodoo here. I can't even believe you are reading this.
6863 Are you crazy? Don't even think about adjusting these unless
6864 you understand the algorithms in comm_select.c first!
6865DOC_END
cccac0a2 6866
65d448bc 6867NAME: incoming_tcp_average incoming_http_average
cccac0a2 6868TYPE: int
6869DEFAULT: 4
65d448bc
AJ
6870LOC: Config.comm_incoming.tcp.average
6871DOC_START
6872 Heavy voodoo here. I can't even believe you are reading this.
6873 Are you crazy? Don't even think about adjusting these unless
6874 you understand the algorithms in comm_select.c first!
6875DOC_END
cccac0a2 6876
6877NAME: incoming_dns_average
6878TYPE: int
6879DEFAULT: 4
65d448bc
AJ
6880LOC: Config.comm_incoming.dns.average
6881DOC_START
6882 Heavy voodoo here. I can't even believe you are reading this.
6883 Are you crazy? Don't even think about adjusting these unless
6884 you understand the algorithms in comm_select.c first!
6885DOC_END
cccac0a2 6886
65d448bc 6887NAME: min_udp_poll_cnt min_icp_poll_cnt
cccac0a2 6888TYPE: int
6889DEFAULT: 8
65d448bc
AJ
6890LOC: Config.comm_incoming.udp.min_poll
6891DOC_START
6892 Heavy voodoo here. I can't even believe you are reading this.
6893 Are you crazy? Don't even think about adjusting these unless
6894 you understand the algorithms in comm_select.c first!
6895DOC_END
cccac0a2 6896
6897NAME: min_dns_poll_cnt
6898TYPE: int
6899DEFAULT: 8
65d448bc
AJ
6900LOC: Config.comm_incoming.dns.min_poll
6901DOC_START
6902 Heavy voodoo here. I can't even believe you are reading this.
6903 Are you crazy? Don't even think about adjusting these unless
6904 you understand the algorithms in comm_select.c first!
6905DOC_END
cccac0a2 6906
65d448bc 6907NAME: min_tcp_poll_cnt min_http_poll_cnt
cccac0a2 6908TYPE: int
6909DEFAULT: 8
65d448bc 6910LOC: Config.comm_incoming.tcp.min_poll
cccac0a2 6911DOC_START
5473c134 6912 Heavy voodoo here. I can't even believe you are reading this.
6913 Are you crazy? Don't even think about adjusting these unless
6914 you understand the algorithms in comm_select.c first!
6915DOC_END
6916
6917NAME: accept_filter
5473c134 6918TYPE: string
6919DEFAULT: none
6920LOC: Config.accept_filter
6921DOC_START
0b4d4be5 6922 FreeBSD:
6923
5473c134 6924 The name of an accept(2) filter to install on Squid's
6925 listen socket(s). This feature is perhaps specific to
6926 FreeBSD and requires support in the kernel.
6927
6928 The 'httpready' filter delays delivering new connections
2324cda2 6929 to Squid until a full HTTP request has been received.
0b4d4be5 6930 See the accf_http(9) man page for details.
6931
6932 The 'dataready' filter delays delivering new connections
6933 to Squid until there is some data to process.
6934 See the accf_dataready(9) man page for details.
6935
6936 Linux:
6937
6938 The 'data' filter delays delivering of new connections
6939 to Squid until there is some data to process by TCP_ACCEPT_DEFER.
6940 You may optionally specify a number of seconds to wait by
6941 'data=N' where N is the number of seconds. Defaults to 30
6942 if not specified. See the tcp(7) man page for details.
5473c134 6943EXAMPLE:
0b4d4be5 6944# FreeBSD
5473c134 6945accept_filter httpready
0b4d4be5 6946# Linux
6947accept_filter data
5473c134 6948DOC_END
6949
ab2ecb0e
AJ
6950NAME: client_ip_max_connections
6951TYPE: int
6952LOC: Config.client_ip_max_connections
6953DEFAULT: -1
6954DOC_START
6955 Set an absolute limit on the number of connections a single
6956 client IP can use. Any more than this and Squid will begin to drop
6957 new connections from the client until it closes some links.
6958
6959 Note that this is a global limit. It affects all HTTP, HTCP, Gopher and FTP
6960 connections from the client. For finer control use the ACL access controls.
6961
6962 Requires client_db to be enabled (the default).
6963
6964 WARNING: This may noticably slow down traffic received via external proxies
6965 or NAT devices and cause them to rebound error messages back to their clients.
6966DOC_END
6967
5473c134 6968NAME: tcp_recv_bufsize
6969COMMENT: (bytes)
6970TYPE: b_size_t
6971DEFAULT: 0 bytes
6972LOC: Config.tcpRcvBufsz
6973DOC_START
6974 Size of receive buffer to set for TCP sockets. Probably just
6975 as easy to change your kernel's default. Set to zero to use
6976 the default buffer size.
6977DOC_END
6978
6979COMMENT_START
6980 ICAP OPTIONS
6981 -----------------------------------------------------------------------------
6982COMMENT_END
6983
6984NAME: icap_enable
6985TYPE: onoff
6986IFDEF: ICAP_CLIENT
6987COMMENT: on|off
26cc52cb 6988LOC: Adaptation::Icap::TheConfig.onoff
5473c134 6989DEFAULT: off
6990DOC_START
53e738c6 6991 If you want to enable the ICAP module support, set this to on.
5473c134 6992DOC_END
6993
6994NAME: icap_connect_timeout
6995TYPE: time_t
6996DEFAULT: none
26cc52cb 6997LOC: Adaptation::Icap::TheConfig.connect_timeout_raw
5473c134 6998IFDEF: ICAP_CLIENT
6999DOC_START
7000 This parameter specifies how long to wait for the TCP connect to
7001 the requested ICAP server to complete before giving up and either
7002 terminating the HTTP transaction or bypassing the failure.
7003
7004 The default for optional services is peer_connect_timeout.
7005 The default for essential services is connect_timeout.
7006 If this option is explicitly set, its value applies to all services.
7007DOC_END
7008
7009NAME: icap_io_timeout
7010COMMENT: time-units
7011TYPE: time_t
7012DEFAULT: none
26cc52cb 7013LOC: Adaptation::Icap::TheConfig.io_timeout_raw
5473c134 7014IFDEF: ICAP_CLIENT
7015DOC_START
7016 This parameter specifies how long to wait for an I/O activity on
7017 an established, active ICAP connection before giving up and
7018 either terminating the HTTP transaction or bypassing the
7019 failure.
7020
7021 The default is read_timeout.
7022DOC_END
7023
7024NAME: icap_service_failure_limit
8277060a
CT
7025COMMENT: limit [in memory-depth time-units]
7026TYPE: icap_service_failure_limit
5473c134 7027IFDEF: ICAP_CLIENT
8277060a 7028LOC: Adaptation::Icap::TheConfig
5473c134 7029DEFAULT: 10
7030DOC_START
7031 The limit specifies the number of failures that Squid tolerates
7032 when establishing a new TCP connection with an ICAP service. If
7033 the number of failures exceeds the limit, the ICAP service is
7034 not used for new ICAP requests until it is time to refresh its
8277060a 7035 OPTIONS.
5473c134 7036
7037 A negative value disables the limit. Without the limit, an ICAP
7038 service will not be considered down due to connectivity failures
7039 between ICAP OPTIONS requests.
8277060a
CT
7040
7041 Squid forgets ICAP service failures older than the specified
7042 value of memory-depth. The memory fading algorithm
7043 is approximate because Squid does not remember individual
7044 errors but groups them instead, splitting the option
7045 value into ten time slots of equal length.
7046
7047 When memory-depth is 0 and by default this option has no
7048 effect on service failure expiration.
7049
7050 Squid always forgets failures when updating service settings
7051 using an ICAP OPTIONS transaction, regardless of this option
7052 setting.
7053
7054 For example,
7055 # suspend service usage after 10 failures in 5 seconds:
7056 icap_service_failure_limit 10 in 5 seconds
cccac0a2 7057DOC_END
7058
5473c134 7059NAME: icap_service_revival_delay
cccac0a2 7060TYPE: int
5473c134 7061IFDEF: ICAP_CLIENT
26cc52cb 7062LOC: Adaptation::Icap::TheConfig.service_revival_delay
5473c134 7063DEFAULT: 180
cccac0a2 7064DOC_START
5473c134 7065 The delay specifies the number of seconds to wait after an ICAP
7066 OPTIONS request failure before requesting the options again. The
7067 failed ICAP service is considered "down" until fresh OPTIONS are
7068 fetched.
cccac0a2 7069
5473c134 7070 The actual delay cannot be smaller than the hardcoded minimum
7071 delay of 30 seconds.
cccac0a2 7072DOC_END
7073
5473c134 7074NAME: icap_preview_enable
cccac0a2 7075TYPE: onoff
5473c134 7076IFDEF: ICAP_CLIENT
7077COMMENT: on|off
26cc52cb 7078LOC: Adaptation::Icap::TheConfig.preview_enable
ac7a62f9 7079DEFAULT: on
cccac0a2 7080DOC_START
ac7a62f9 7081 The ICAP Preview feature allows the ICAP server to handle the
7082 HTTP message by looking only at the beginning of the message body
7083 or even without receiving the body at all. In some environments,
7084 previews greatly speedup ICAP processing.
7085
7086 During an ICAP OPTIONS transaction, the server may tell Squid what
7087 HTTP messages should be previewed and how big the preview should be.
7088 Squid will not use Preview if the server did not request one.
7089
7090 To disable ICAP Preview for all ICAP services, regardless of
7091 individual ICAP server OPTIONS responses, set this option to "off".
7092Example:
7093icap_preview_enable off
cccac0a2 7094DOC_END
7095
5473c134 7096NAME: icap_preview_size
7097TYPE: int
7098IFDEF: ICAP_CLIENT
26cc52cb 7099LOC: Adaptation::Icap::TheConfig.preview_size
5473c134 7100DEFAULT: -1
cccac0a2 7101DOC_START
53e738c6 7102 The default size of preview data to be sent to the ICAP server.
7103 -1 means no preview. This value might be overwritten on a per server
7104 basis by OPTIONS requests.
cccac0a2 7105DOC_END
7106
83c51da9
CT
7107NAME: icap_206_enable
7108TYPE: onoff
7109IFDEF: ICAP_CLIENT
7110COMMENT: on|off
7111LOC: Adaptation::Icap::TheConfig.allow206_enable
7112DEFAULT: on
7113DOC_START
7114 206 (Partial Content) responses is an ICAP extension that allows the
7115 ICAP agents to optionally combine adapted and original HTTP message
7116 content. The decision to combine is postponed until the end of the
7117 ICAP response. Squid supports Partial Content extension by default.
7118
7119 Activation of the Partial Content extension is negotiated with each
7120 ICAP service during OPTIONS exchange. Most ICAP servers should handle
7121 negotation correctly even if they do not support the extension, but
7122 some might fail. To disable Partial Content support for all ICAP
7123 services and to avoid any negotiation, set this option to "off".
7124
7125 Example:
7126 icap_206_enable off
7127DOC_END
7128
5473c134 7129NAME: icap_default_options_ttl
7130TYPE: int
7131IFDEF: ICAP_CLIENT
26cc52cb 7132LOC: Adaptation::Icap::TheConfig.default_options_ttl
5473c134 7133DEFAULT: 60
cccac0a2 7134DOC_START
53e738c6 7135 The default TTL value for ICAP OPTIONS responses that don't have
5473c134 7136 an Options-TTL header.
cccac0a2 7137DOC_END
7138
5473c134 7139NAME: icap_persistent_connections
7140TYPE: onoff
7141IFDEF: ICAP_CLIENT
7142COMMENT: on|off
26cc52cb 7143LOC: Adaptation::Icap::TheConfig.reuse_connections
5473c134 7144DEFAULT: on
cccac0a2 7145DOC_START
5473c134 7146 Whether or not Squid should use persistent connections to
7147 an ICAP server.
cccac0a2 7148DOC_END
7149
22fff3bf 7150NAME: adaptation_send_client_ip icap_send_client_ip
5473c134 7151TYPE: onoff
22fff3bf 7152IFDEF: USE_ADAPTATION
5473c134 7153COMMENT: on|off
22fff3bf 7154LOC: Adaptation::Config::send_client_ip
5473c134 7155DEFAULT: off
cccac0a2 7156DOC_START
ea3ae478
AR
7157 If enabled, Squid shares HTTP client IP information with adaptation
7158 services. For ICAP, Squid adds the X-Client-IP header to ICAP requests.
7159 For eCAP, Squid sets the libecap::metaClientIp transaction option.
7160
7161 See also: adaptation_uses_indirect_client
cccac0a2 7162DOC_END
7163
22fff3bf 7164NAME: adaptation_send_username icap_send_client_username
5473c134 7165TYPE: onoff
22fff3bf 7166IFDEF: USE_ADAPTATION
5473c134 7167COMMENT: on|off
22fff3bf 7168LOC: Adaptation::Config::send_username
5473c134 7169DEFAULT: off
cccac0a2 7170DOC_START
5473c134 7171 This sends authenticated HTTP client username (if available) to
22fff3bf
AR
7172 the adaptation service.
7173
7174 For ICAP, the username value is encoded based on the
5473c134 7175 icap_client_username_encode option and is sent using the header
7176 specified by the icap_client_username_header option.
cccac0a2 7177DOC_END
7178
5473c134 7179NAME: icap_client_username_header
cccac0a2 7180TYPE: string
5473c134 7181IFDEF: ICAP_CLIENT
26cc52cb 7182LOC: Adaptation::Icap::TheConfig.client_username_header
5473c134 7183DEFAULT: X-Client-Username
cccac0a2 7184DOC_START
db49f682 7185 ICAP request header name to use for adaptation_send_username.
cccac0a2 7186DOC_END
7187
5473c134 7188NAME: icap_client_username_encode
cccac0a2 7189TYPE: onoff
5473c134 7190IFDEF: ICAP_CLIENT
7191COMMENT: on|off
26cc52cb 7192LOC: Adaptation::Icap::TheConfig.client_username_encode
5473c134 7193DEFAULT: off
cccac0a2 7194DOC_START
5473c134 7195 Whether to base64 encode the authenticated client username.
cccac0a2 7196DOC_END
7197
5473c134 7198NAME: icap_service
7199TYPE: icap_service_type
7200IFDEF: ICAP_CLIENT
26cc52cb 7201LOC: Adaptation::Icap::TheConfig
5473c134 7202DEFAULT: none
cccac0a2 7203DOC_START
a22e6cd3 7204 Defines a single ICAP service using the following format:
cccac0a2 7205
c25c2836 7206 icap_service id vectoring_point uri [option ...]
7d90757b 7207
c25c2836
CT
7208 id: ID
7209 an opaque identifier or name which is used to direct traffic to
7210 this specific service. Must be unique among all adaptation
7211 services in squid.conf.
a22e6cd3
AR
7212
7213 vectoring_point: reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache
f3db09e2 7214 This specifies at which point of transaction processing the
7215 ICAP service should be activated. *_postcache vectoring points
7216 are not yet supported.
a22e6cd3 7217
c25c2836 7218 uri: icap://servername:port/servicepath
a22e6cd3
AR
7219 ICAP server and service location.
7220
7221 ICAP does not allow a single service to handle both REQMOD and RESPMOD
7222 transactions. Squid does not enforce that requirement. You can specify
7223 services with the same service_url and different vectoring_points. You
7224 can even specify multiple identical services as long as their
7225 service_names differ.
7226
7227
7228 Service options are separated by white space. ICAP services support
7229 the following name=value options:
7230
7231 bypass=on|off|1|0
7232 If set to 'on' or '1', the ICAP service is treated as
7233 optional. If the service cannot be reached or malfunctions,
7234 Squid will try to ignore any errors and process the message as
7235 if the service was not enabled. No all ICAP errors can be
7236 bypassed. If set to 0, the ICAP service is treated as
7237 essential and all ICAP errors will result in an error page
7238 returned to the HTTP client.
7239
7240 Bypass is off by default: services are treated as essential.
7241
7242 routing=on|off|1|0
7243 If set to 'on' or '1', the ICAP service is allowed to
7244 dynamically change the current message adaptation plan by
7245 returning a chain of services to be used next. The services
7246 are specified using the X-Next-Services ICAP response header
7247 value, formatted as a comma-separated list of service names.
e2851fe7
AR
7248 Each named service should be configured in squid.conf. Other
7249 services are ignored. An empty X-Next-Services value results
7250 in an empty plan which ends the current adaptation.
7251
7252 Dynamic adaptation plan may cross or cover multiple supported
7253 vectoring points in their natural processing order.
a22e6cd3
AR
7254
7255 Routing is not allowed by default: the ICAP X-Next-Services
7256 response header is ignored.
7257
e6713f4e
AJ
7258 ipv6=on|off
7259 Only has effect on split-stack systems. The default on those systems
7260 is to use IPv4-only connections. When set to 'on' this option will
7261 make Squid use IPv6-only connections to contact this ICAP service.
7262
2dba5b8e
CT
7263 on-overload=block|bypass|wait|force
7264 If the service Max-Connections limit has been reached, do
7265 one of the following for each new ICAP transaction:
7266 * block: send an HTTP error response to the client
7267 * bypass: ignore the "over-connected" ICAP service
7268 * wait: wait (in a FIFO queue) for an ICAP connection slot
7269 * force: proceed, ignoring the Max-Connections limit
7270
7271 In SMP mode with N workers, each worker assumes the service
7272 connection limit is Max-Connections/N, even though not all
7273 workers may use a given service.
7274
7275 The default value is "bypass" if service is bypassable,
7276 otherwise it is set to "wait".
7277
7278
7279 max-conn=number
7280 Use the given number as the Max-Connections limit, regardless
7281 of the Max-Connections value given by the service, if any.
7282
a22e6cd3
AR
7283 Older icap_service format without optional named parameters is
7284 deprecated but supported for backward compatibility.
5473c134 7285
5473c134 7286Example:
c25c2836
CT
7287icap_service svcBlocker reqmod_precache icap://icap1.mydomain.net:1344/reqmod bypass=0
7288icap_service svcLogger reqmod_precache icap://icap2.mydomain.net:1344/respmod routing=on
cccac0a2 7289DOC_END
7290
5473c134 7291NAME: icap_class
7292TYPE: icap_class_type
7293IFDEF: ICAP_CLIENT
21a26d31 7294LOC: none
5473c134 7295DEFAULT: none
cccac0a2 7296DOC_START
a22e6cd3 7297 This deprecated option was documented to define an ICAP service
62c7f90e
AR
7298 chain, even though it actually defined a set of similar, redundant
7299 services, and the chains were not supported.
5473c134 7300
62c7f90e 7301 To define a set of redundant services, please use the
a22e6cd3
AR
7302 adaptation_service_set directive. For service chains, use
7303 adaptation_service_chain.
cccac0a2 7304DOC_END
7305
5473c134 7306NAME: icap_access
7307TYPE: icap_access_type
7308IFDEF: ICAP_CLIENT
21a26d31 7309LOC: none
cccac0a2 7310DEFAULT: none
cccac0a2 7311DOC_START
a22e6cd3 7312 This option is deprecated. Please use adaptation_access, which
62c7f90e
AR
7313 has the same ICAP functionality, but comes with better
7314 documentation, and eCAP support.
cccac0a2 7315DOC_END
7316
57afc994
AR
7317COMMENT_START
7318 eCAP OPTIONS
7319 -----------------------------------------------------------------------------
7320COMMENT_END
7321
21a26d31
AR
7322NAME: ecap_enable
7323TYPE: onoff
7324IFDEF: USE_ECAP
7325COMMENT: on|off
574b508c 7326LOC: Adaptation::Ecap::TheConfig.onoff
21a26d31
AR
7327DEFAULT: off
7328DOC_START
7329 Controls whether eCAP support is enabled.
7330DOC_END
7331
7332NAME: ecap_service
7333TYPE: ecap_service_type
7334IFDEF: USE_ECAP
574b508c 7335LOC: Adaptation::Ecap::TheConfig
21a26d31
AR
7336DEFAULT: none
7337DOC_START
7338 Defines a single eCAP service
7339
c25c2836 7340 ecap_service id vectoring_point uri [option ...]
21a26d31 7341
c25c2836
CT
7342 id: ID
7343 an opaque identifier or name which is used to direct traffic to
7344 this specific service. Must be unique among all adaptation
7345 services in squid.conf.
7346
7347 vectoring_point: reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache
21a26d31
AR
7348 This specifies at which point of transaction processing the
7349 eCAP service should be activated. *_postcache vectoring points
7350 are not yet supported.
c25c2836
CT
7351
7352 uri: ecap://vendor/service_name?custom&cgi=style&parameters=optional
7353 Squid uses the eCAP service URI to match this configuration
7354 line with one of the dynamically loaded services. Each loaded
7355 eCAP service must have a unique URI. Obtain the right URI from
7356 the service provider.
7357
7358
7359 Service options are separated by white space. eCAP services support
7360 the following name=value options:
7361
7362 bypass=on|off|1|0
7363 If set to 'on' or '1', the eCAP service is treated as optional.
7364 If the service cannot be reached or malfunctions, Squid will try
7365 to ignore any errors and process the message as if the service
21a26d31 7366 was not enabled. No all eCAP errors can be bypassed.
c25c2836
CT
7367 If set to 'off' or '0', the eCAP service is treated as essential
7368 and all eCAP errors will result in an error page returned to the
21a26d31 7369 HTTP client.
c25c2836
CT
7370
7371 Bypass is off by default: services are treated as essential.
7372
7373 routing=on|off|1|0
7374 If set to 'on' or '1', the eCAP service is allowed to
7375 dynamically change the current message adaptation plan by
7376 returning a chain of services to be used next.
7377
7378 Dynamic adaptation plan may cross or cover multiple supported
7379 vectoring points in their natural processing order.
7380
7381 Routing is not allowed by default.
7382
7383 Older ecap_service format without optional named parameters is
7384 deprecated but supported for backward compatibility.
7385
21a26d31
AR
7386
7387Example:
c25c2836
CT
7388ecap_service s1 reqmod_precache ecap://filters.R.us/leakDetector?on_error=block bypass=off
7389ecap_service s2 respmod_precache ecap://filters.R.us/virusFilter config=/etc/vf.cfg bypass=on
21a26d31
AR
7390DOC_END
7391
57afc994
AR
7392NAME: loadable_modules
7393TYPE: wordlist
7394IFDEF: USE_LOADABLE_MODULES
7395LOC: Config.loadable_module_names
7396DEFAULT: none
7397DOC_START
7398 Instructs Squid to load the specified dynamic module(s) or activate
7399 preloaded module(s).
7400Example:
7401loadable_modules @DEFAULT_PREFIX@/lib/MinimalAdapter.so
7402DOC_END
7403
62c7f90e
AR
7404COMMENT_START
7405 MESSAGE ADAPTATION OPTIONS
7406 -----------------------------------------------------------------------------
7407COMMENT_END
7408
7409NAME: adaptation_service_set
7410TYPE: adaptation_service_set_type
7411IFDEF: USE_ADAPTATION
7412LOC: none
7413DEFAULT: none
7414DOC_START
7415
a22e6cd3
AR
7416 Configures an ordered set of similar, redundant services. This is
7417 useful when hot standby or backup adaptation servers are available.
7418
7419 adaptation_service_set set_name service_name1 service_name2 ...
7420
7421 The named services are used in the set declaration order. The first
7422 applicable adaptation service from the set is used first. The next
7423 applicable service is tried if and only if the transaction with the
7424 previous service fails and the message waiting to be adapted is still
7425 intact.
62c7f90e 7426
a22e6cd3
AR
7427 When adaptation starts, broken services are ignored as if they were
7428 not a part of the set. A broken service is a down optional service.
62c7f90e 7429
a22e6cd3
AR
7430 The services in a set must be attached to the same vectoring point
7431 (e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).
7432
7433 If all services in a set are optional then adaptation failures are
7434 bypassable. If all services in the set are essential, then a
7435 transaction failure with one service may still be retried using
7436 another service from the set, but when all services fail, the master
7437 transaction fails as well.
7438
7439 A set may contain a mix of optional and essential services, but that
7440 is likely to lead to surprising results because broken services become
7441 ignored (see above), making previously bypassable failures fatal.
7442 Technically, it is the bypassability of the last failed service that
7443 matters.
7444
7445 See also: adaptation_access adaptation_service_chain
62c7f90e
AR
7446
7447Example:
7448adaptation_service_set svcBlocker urlFilterPrimary urlFilterBackup
7449adaptation service_set svcLogger loggerLocal loggerRemote
7450DOC_END
7451
a22e6cd3
AR
7452NAME: adaptation_service_chain
7453TYPE: adaptation_service_chain_type
7454IFDEF: USE_ADAPTATION
7455LOC: none
7456DEFAULT: none
7457DOC_START
7458
7459 Configures a list of complementary services that will be applied
7460 one-by-one, forming an adaptation chain or pipeline. This is useful
7461 when Squid must perform different adaptations on the same message.
7462
7463 adaptation_service_chain chain_name service_name1 svc_name2 ...
7464
7465 The named services are used in the chain declaration order. The first
7466 applicable adaptation service from the chain is used first. The next
7467 applicable service is applied to the successful adaptation results of
7468 the previous service in the chain.
7469
7470 When adaptation starts, broken services are ignored as if they were
7471 not a part of the chain. A broken service is a down optional service.
7472
7473 Request satisfaction terminates the adaptation chain because Squid
7474 does not currently allow declaration of RESPMOD services at the
7475 "reqmod_precache" vectoring point (see icap_service or ecap_service).
7476
7477 The services in a chain must be attached to the same vectoring point
7478 (e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).
7479
7480 A chain may contain a mix of optional and essential services. If an
7481 essential adaptation fails (or the failure cannot be bypassed for
7482 other reasons), the master transaction fails. Otherwise, the failure
7483 is bypassed as if the failed adaptation service was not in the chain.
7484
7485 See also: adaptation_access adaptation_service_set
7486
7487Example:
7488adaptation_service_chain svcRequest requestLogger urlFilter leakDetector
7489DOC_END
7490
62c7f90e
AR
7491NAME: adaptation_access
7492TYPE: adaptation_access_type
7493IFDEF: USE_ADAPTATION
7494LOC: none
7495DEFAULT: none
7496DOC_START
7497 Sends an HTTP transaction to an ICAP or eCAP adaptation service.
7498
7499 adaptation_access service_name allow|deny [!]aclname...
7500 adaptation_access set_name allow|deny [!]aclname...
7501
7502 At each supported vectoring point, the adaptation_access
7503 statements are processed in the order they appear in this
7504 configuration file. Statements pointing to the following services
7505 are ignored (i.e., skipped without checking their ACL):
7506
7507 - services serving different vectoring points
7508 - "broken-but-bypassable" services
7509 - "up" services configured to ignore such transactions
7510 (e.g., based on the ICAP Transfer-Ignore header).
7511
7512 When a set_name is used, all services in the set are checked
7513 using the same rules, to find the first applicable one. See
7514 adaptation_service_set for details.
7515
7516 If an access list is checked and there is a match, the
7517 processing stops: For an "allow" rule, the corresponding
7518 adaptation service is used for the transaction. For a "deny"
7519 rule, no adaptation service is activated.
7520
7521 It is currently not possible to apply more than one adaptation
7522 service at the same vectoring point to the same HTTP transaction.
7523
7524 See also: icap_service and ecap_service
7525
7526Example:
7527adaptation_access service_1 allow all
7528DOC_END
7529
a22e6cd3
AR
7530NAME: adaptation_service_iteration_limit
7531TYPE: int
7532IFDEF: USE_ADAPTATION
7533LOC: Adaptation::Config::service_iteration_limit
7534DEFAULT: 16
7535DOC_START
7536 Limits the number of iterations allowed when applying adaptation
7537 services to a message. If your longest adaptation set or chain
7538 may have more than 16 services, increase the limit beyond its
7539 default value of 16. If detecting infinite iteration loops sooner
7540 is critical, make the iteration limit match the actual number
7541 of services in your longest adaptation set or chain.
7542
7543 Infinite adaptation loops are most likely with routing services.
7544
7545 See also: icap_service routing=1
7546DOC_END
7547
3ff65596
AR
7548NAME: adaptation_masterx_shared_names
7549TYPE: string
7550IFDEF: USE_ADAPTATION
7551LOC: Adaptation::Config::masterx_shared_name
7552DEFAULT: none
7553DOC_START
7554 For each master transaction (i.e., the HTTP request and response
7555 sequence, including all related ICAP and eCAP exchanges), Squid
7556 maintains a table of metadata. The table entries are (name, value)
7557 pairs shared among eCAP and ICAP exchanges. The table is destroyed
7558 with the master transaction.
7559
7560 This option specifies the table entry names that Squid must accept
7561 from and forward to the adaptation transactions.
7562
7563 An ICAP REQMOD or RESPMOD transaction may set an entry in the
7564 shared table by returning an ICAP header field with a name
6666da11
AR
7565 specified in adaptation_masterx_shared_names.
7566
7567 An eCAP REQMOD or RESPMOD transaction may set an entry in the
7568 shared table by implementing the libecap::visitEachOption() API
7569 to provide an option with a name specified in
7570 adaptation_masterx_shared_names.
5038f9d8
AR
7571
7572 Squid will store and forward the set entry to subsequent adaptation
3ff65596
AR
7573 transactions within the same master transaction scope.
7574
7575 Only one shared entry name is supported at this time.
7576
7577Example:
7578# share authentication information among ICAP services
7579adaptation_masterx_shared_names X-Subscriber-ID
7580DOC_END
7581
71be37e0 7582NAME: adaptation_meta
d7f4a0b7 7583TYPE: note
71be37e0
CT
7584IFDEF: USE_ADAPTATION
7585LOC: Adaptation::Config::metaHeaders
7586DEFAULT: none
7587DOC_START
7588 This option allows Squid administrator to add custom ICAP request
7589 headers or eCAP options to Squid ICAP requests or eCAP transactions.
7590 Use it to pass custom authentication tokens and other
7591 transaction-state related meta information to an ICAP/eCAP service.
7592
7593 The addition of a meta header is ACL-driven:
7594 adaptation_meta name value [!]aclname ...
7595
7596 Processing for a given header name stops after the first ACL list match.
7597 Thus, it is impossible to add two headers with the same name. If no ACL
7598 lists match for a given header name, no such header is added. For
7599 example:
7600
7601 # do not debug transactions except for those that need debugging
7602 adaptation_meta X-Debug 1 needs_debugging
7603
7604 # log all transactions except for those that must remain secret
7605 adaptation_meta X-Log 1 !keep_secret
7606
7607 # mark transactions from users in the "G 1" group
7608 adaptation_meta X-Authenticated-Groups "G 1" authed_as_G1
7609
7610 The "value" parameter may be a regular squid.conf token or a "double
7611 quoted string". Within the quoted string, use backslash (\) to escape
7612 any character, which is currently only useful for escaping backslashes
7613 and double quotes. For example,
7614 "this string has one backslash (\\) and two \"quotes\""
d7f4a0b7
CT
7615
7616 Used adaptation_meta header values may be logged via %note
7617 logformat code. If multiple adaptation_meta headers with the same name
7618 are used during master transaction lifetime, the header values are
7619 logged in the order they were used and duplicate values are ignored
7620 (only the first repeated value will be logged).
71be37e0
CT
7621DOC_END
7622
3ff65596
AR
7623NAME: icap_retry
7624TYPE: acl_access
7625IFDEF: ICAP_CLIENT
7626LOC: Adaptation::Icap::TheConfig.repeat
3ff65596
AR
7627DEFAULT_IF_NONE: deny all
7628DOC_START
7629 This ACL determines which retriable ICAP transactions are
7630 retried. Transactions that received a complete ICAP response
7631 and did not have to consume or produce HTTP bodies to receive
7632 that response are usually retriable.
7633
7634 icap_retry allow|deny [!]aclname ...
7635
7636 Squid automatically retries some ICAP I/O timeouts and errors
7637 due to persistent connection race conditions.
7638
7639 See also: icap_retry_limit
7640DOC_END
7641
7642NAME: icap_retry_limit
7643TYPE: int
7644IFDEF: ICAP_CLIENT
7645LOC: Adaptation::Icap::TheConfig.repeat_limit
7646DEFAULT: 0
7647DOC_START
7648 Limits the number of retries allowed. When set to zero (default),
7649 no retries are allowed.
7650
7651 Communication errors due to persistent connection race
7652 conditions are unavoidable, automatically retried, and do not
7653 count against this limit.
7654
7655 See also: icap_retry
7656DOC_END
7657
7658
5473c134 7659COMMENT_START
7660 DNS OPTIONS
7661 -----------------------------------------------------------------------------
7662COMMENT_END
7663
7664NAME: check_hostnames
cccac0a2 7665TYPE: onoff
cccac0a2 7666DEFAULT: off
5473c134 7667LOC: Config.onoff.check_hostnames
cccac0a2 7668DOC_START
5473c134 7669 For security and stability reasons Squid can check
7670 hostnames for Internet standard RFC compliance. If you want
7671 Squid to perform these checks turn this directive on.
cccac0a2 7672DOC_END
7673
5473c134 7674NAME: allow_underscore
cccac0a2 7675TYPE: onoff
cccac0a2 7676DEFAULT: on
5473c134 7677LOC: Config.onoff.allow_underscore
cccac0a2 7678DOC_START
5473c134 7679 Underscore characters is not strictly allowed in Internet hostnames
7680 but nevertheless used by many sites. Set this to off if you want
7681 Squid to be strict about the standard.
7682 This check is performed only when check_hostnames is set to on.
cccac0a2 7683DOC_END
7684
5473c134 7685NAME: cache_dns_program
cccac0a2 7686TYPE: string
f64091a7 7687IFDEF: USE_DNSHELPER
5473c134 7688DEFAULT: @DEFAULT_DNSSERVER@
7689LOC: Config.Program.dnsserver
cccac0a2 7690DOC_START
5473c134 7691 Specify the location of the executable for dnslookup process.
cccac0a2 7692DOC_END
7693
5473c134 7694NAME: dns_children
48d54e4d 7695TYPE: HelperChildConfig
f64091a7 7696IFDEF: USE_DNSHELPER
48d54e4d 7697DEFAULT: 32 startup=1 idle=1
5473c134 7698LOC: Config.dnsChildren
58850d15 7699DOC_START
48d54e4d
AJ
7700 The maximum number of processes spawn to service DNS name lookups.
7701 If you limit it too few Squid will have to wait for them to process
7702 a backlog of requests, slowing it down. If you allow too many they
7703 will use RAM and other system resources noticably.
7704 The maximum this may be safely set to is 32.
7705
7706 The startup= and idle= options allow some measure of skew in your
7707 tuning.
7708
7709 startup=
7710
7711 Sets a minimum of how many processes are to be spawned when Squid
7712 starts or reconfigures. When set to zero the first request will
7713 cause spawning of the first child process to handle it.
7714
7715 Starting too few will cause an initial slowdown in traffic as Squid
7716 attempts to simultaneously spawn enough processes to cope.
7717
7718 idle=
7719
7720 Sets a minimum of how many processes Squid is to try and keep available
7721 at all times. When traffic begins to rise above what the existing
7722 processes can handle this many more will be spawned up to the maximum
7723 configured. A minimum setting of 1 is required.
58850d15 7724DOC_END
7725
5473c134 7726NAME: dns_retransmit_interval
fd0f51c4 7727TYPE: time_msec
5473c134 7728DEFAULT: 5 seconds
7729LOC: Config.Timeout.idns_retransmit
f64091a7 7730IFDEF: !USE_DNSHELPER
cccac0a2 7731DOC_START
5473c134 7732 Initial retransmit interval for DNS queries. The interval is
7733 doubled each time all configured DNS servers have been tried.
cccac0a2 7734DOC_END
7735
5473c134 7736NAME: dns_timeout
fd0f51c4 7737TYPE: time_msec
a541c34e 7738DEFAULT: 30 seconds
5473c134 7739LOC: Config.Timeout.idns_query
f64091a7 7740IFDEF: !USE_DNSHELPER
cccac0a2 7741DOC_START
5473c134 7742 DNS Query timeout. If no response is received to a DNS query
7743 within this time all DNS servers for the queried domain
7744 are assumed to be unavailable.
cccac0a2 7745DOC_END
7746
e210930b
AJ
7747NAME: dns_packet_max
7748TYPE: b_ssize_t
7749DEFAULT: none
7750LOC: Config.dns.packet_max
f64091a7 7751IFDEF: !USE_DNSHELPER
e210930b
AJ
7752DOC_START
7753 Maximum number of bytes packet size to advertise via EDNS.
7754 Set to "none" to disable EDNS large packet support.
7755
7756 For legacy reasons DNS UDP replies will default to 512 bytes which
7757 is too small for many responses. EDNS provides a means for Squid to
7758 negotiate receiving larger responses back immediately without having
7759 to failover with repeat requests. Responses larger than this limit
7760 will retain the old behaviour of failover to TCP DNS.
7761
7762 Squid has no real fixed limit internally, but allowing packet sizes
7763 over 1500 bytes requires network jumbogram support and is usually not
7764 necessary.
7765
7766 WARNING: The RFC also indicates that some older resolvers will reply
7767 with failure of the whole request if the extension is added. Some
7768 resolvers have already been identified which will reply with mangled
7769 EDNS response on occasion. Usually in response to many-KB jumbogram
7770 sizes being advertised by Squid.
7771 Squid will currently treat these both as an unable-to-resolve domain
7772 even if it would be resolvable without EDNS.
7773DOC_END
7774
5473c134 7775NAME: dns_defnames
7776COMMENT: on|off
cccac0a2 7777TYPE: onoff
cccac0a2 7778DEFAULT: off
5473c134 7779LOC: Config.onoff.res_defnames
cccac0a2 7780DOC_START
5473c134 7781 Normally the RES_DEFNAMES resolver option is disabled
7782 (see res_init(3)). This prevents caches in a hierarchy
7783 from interpreting single-component hostnames locally. To allow
7784 Squid to handle single-component names, enable this option.
cccac0a2 7785DOC_END
7786
5473c134 7787NAME: dns_nameservers
7788TYPE: wordlist
7789DEFAULT: none
7790LOC: Config.dns_nameservers
cccac0a2 7791DOC_START
5473c134 7792 Use this if you want to specify a list of DNS name servers
7793 (IP addresses) to use instead of those given in your
7794 /etc/resolv.conf file.
7795 On Windows platforms, if no value is specified here or in
7796 the /etc/resolv.conf file, the list of DNS name servers are
7797 taken from the Windows registry, both static and dynamic DHCP
7798 configurations are supported.
cccac0a2 7799
5473c134 7800 Example: dns_nameservers 10.0.0.1 192.172.0.4
cccac0a2 7801DOC_END
7802
5473c134 7803NAME: hosts_file
cccac0a2 7804TYPE: string
5473c134 7805DEFAULT: @DEFAULT_HOSTS@
7806LOC: Config.etcHostsPath
cccac0a2 7807DOC_START
5473c134 7808 Location of the host-local IP name-address associations
7809 database. Most Operating Systems have such a file on different
7810 default locations:
7811 - Un*X & Linux: /etc/hosts
7812 - Windows NT/2000: %SystemRoot%\system32\drivers\etc\hosts
7813 (%SystemRoot% value install default is c:\winnt)
7814 - Windows XP/2003: %SystemRoot%\system32\drivers\etc\hosts
7815 (%SystemRoot% value install default is c:\windows)
7816 - Windows 9x/Me: %windir%\hosts
7817 (%windir% value is usually c:\windows)
7818 - Cygwin: /etc/hosts
cccac0a2 7819
5473c134 7820 The file contains newline-separated definitions, in the
7821 form ip_address_in_dotted_form name [name ...] names are
7822 whitespace-separated. Lines beginning with an hash (#)
7823 character are comments.
cccac0a2 7824
5473c134 7825 The file is checked at startup and upon configuration.
7826 If set to 'none', it won't be checked.
7827 If append_domain is used, that domain will be added to
7828 domain-local (i.e. not containing any dot character) host
7829 definitions.
cccac0a2 7830DOC_END
7831
5473c134 7832NAME: append_domain
7833TYPE: string
7834LOC: Config.appendDomain
7835DEFAULT: none
6a2f3fcf 7836DOC_START
5473c134 7837 Appends local domain name to hostnames without any dots in
7838 them. append_domain must begin with a period.
7839
7840 Be warned there are now Internet names with no dots in
7841 them using only top-domain names, so setting this may
7842 cause some Internet sites to become unavailable.
7843
7844Example:
7845 append_domain .yourdomain.com
6a2f3fcf 7846DOC_END
7847
5473c134 7848NAME: ignore_unknown_nameservers
7849TYPE: onoff
7850LOC: Config.onoff.ignore_unknown_nameservers
df6fd596 7851DEFAULT: on
f64091a7 7852IFDEF: !USE_DNSHELPER
df6fd596 7853DOC_START
5473c134 7854 By default Squid checks that DNS responses are received
7855 from the same IP addresses they are sent to. If they
7856 don't match, Squid ignores the response and writes a warning
7857 message to cache.log. You can allow responses from unknown
7858 nameservers by setting this option to 'off'.
df6fd596 7859DOC_END
7860
5a0da9ec
AJ
7861NAME: dns_v4_first
7862TYPE: onoff
7863DEFAULT: off
7864LOC: Config.dns.v4_first
f64091a7 7865IFDEF: !USE_DNSHELPER
5a0da9ec
AJ
7866DOC_START
7867 With the IPv6 Internet being as fast or faster than IPv4 Internet
7868 for most networks Squid prefers to contact websites over IPv6.
7869
7870 This option reverses the order of preference to make Squid contact
7871 dual-stack websites over IPv4 first. Squid will still perform both
7872 IPv6 and IPv4 DNS lookups before connecting.
7873
7874 WARNING:
7875 This option will restrict the situations under which IPv6
7876 connectivity is used (and tested). Hiding network problems
7877 which would otherwise be detected and warned about.
7878DOC_END
7879
6bc15a4f 7880NAME: ipcache_size
7881COMMENT: (number of entries)
7882TYPE: int
7883DEFAULT: 1024
7884LOC: Config.ipcache.size
7885DOC_NONE
7886
7887NAME: ipcache_low
7888COMMENT: (percent)
7889TYPE: int
7890DEFAULT: 90
7891LOC: Config.ipcache.low
7892DOC_NONE
7893
7894NAME: ipcache_high
7895COMMENT: (percent)
7896TYPE: int
7897DEFAULT: 95
7898LOC: Config.ipcache.high
7899DOC_START
7900 The size, low-, and high-water marks for the IP cache.
7901DOC_END
7902
7903NAME: fqdncache_size
7904COMMENT: (number of entries)
7905TYPE: int
7906DEFAULT: 1024
7907LOC: Config.fqdncache.size
7908DOC_START
7909 Maximum number of FQDN cache entries.
7910DOC_END
7911
a58ff010 7912COMMENT_START
5473c134 7913 MISCELLANEOUS
a58ff010 7914 -----------------------------------------------------------------------------
7915COMMENT_END
7916
5473c134 7917NAME: memory_pools
a58ff010 7918COMMENT: on|off
5473c134 7919TYPE: onoff
7920DEFAULT: on
7921LOC: Config.onoff.mem_pools
a58ff010 7922DOC_START
5473c134 7923 If set, Squid will keep pools of allocated (but unused) memory
7924 available for future use. If memory is a premium on your
7925 system and you believe your malloc library outperforms Squid
7926 routines, disable this.
a58ff010 7927DOC_END
7928
5473c134 7929NAME: memory_pools_limit
7930COMMENT: (bytes)
70be1349 7931TYPE: b_int64_t
5473c134 7932DEFAULT: 5 MB
7933LOC: Config.MemPools.limit
ec1245f8 7934DOC_START
5473c134 7935 Used only with memory_pools on:
7936 memory_pools_limit 50 MB
ec1245f8 7937
5473c134 7938 If set to a non-zero value, Squid will keep at most the specified
7939 limit of allocated (but unused) memory in memory pools. All free()
7940 requests that exceed this limit will be handled by your malloc
7941 library. Squid does not pre-allocate any memory, just safe-keeps
7942 objects that otherwise would be free()d. Thus, it is safe to set
7943 memory_pools_limit to a reasonably high value even if your
7944 configuration will use less memory.
ec1245f8 7945
89646bd7 7946 If set to none, Squid will keep all memory it can. That is, there
5473c134 7947 will be no limit on the total amount of memory used for safe-keeping.
ec1245f8 7948
5473c134 7949 To disable memory allocation optimization, do not set
70be1349 7950 memory_pools_limit to 0 or none. Set memory_pools to "off" instead.
5473c134 7951
7952 An overhead for maintaining memory pools is not taken into account
7953 when the limit is checked. This overhead is close to four bytes per
7954 object kept. However, pools may actually _save_ memory because of
7955 reduced memory thrashing in your malloc library.
ec1245f8 7956DOC_END
7957
5473c134 7958NAME: forwarded_for
67c06f0d
AJ
7959COMMENT: on|off|transparent|truncate|delete
7960TYPE: string
5473c134 7961DEFAULT: on
7962LOC: opt_forwarded_for
5f8252d2 7963DOC_START
67c06f0d
AJ
7964 If set to "on", Squid will append your client's IP address
7965 in the HTTP requests it forwards. By default it looks like:
5f8252d2 7966
5473c134 7967 X-Forwarded-For: 192.1.2.3
7968
67c06f0d 7969 If set to "off", it will appear as
5473c134 7970
7971 X-Forwarded-For: unknown
67c06f0d
AJ
7972
7973 If set to "transparent", Squid will not alter the
7974 X-Forwarded-For header in any way.
7975
7976 If set to "delete", Squid will delete the entire
7977 X-Forwarded-For header.
7978
7979 If set to "truncate", Squid will remove all existing
dd68402f 7980 X-Forwarded-For entries, and place the client IP as the sole entry.
5f8252d2 7981DOC_END
7982
5473c134 7983NAME: cachemgr_passwd
7984TYPE: cachemgrpasswd
7985DEFAULT: none
7986LOC: Config.passwd_list
5f8252d2 7987DOC_START
5473c134 7988 Specify passwords for cachemgr operations.
5f8252d2 7989
5473c134 7990 Usage: cachemgr_passwd password action action ...
7991
7992 Some valid actions are (see cache manager menu for a full list):
7993 5min
7994 60min
7995 asndb
7996 authenticator
7997 cbdata
7998 client_list
7999 comm_incoming
8000 config *
8001 counters
8002 delay
8003 digest_stats
8004 dns
8005 events
8006 filedescriptors
8007 fqdncache
8008 histograms
8009 http_headers
8010 info
8011 io
8012 ipcache
8013 mem
8014 menu
8015 netdb
8016 non_peers
8017 objects
8018 offline_toggle *
8019 pconn
8020 peer_select
b360c477 8021 reconfigure *
5473c134 8022 redirector
8023 refresh
8024 server_list
8025 shutdown *
8026 store_digest
8027 storedir
8028 utilization
8029 via_headers
8030 vm_objects
8031
8032 * Indicates actions which will not be performed without a
8033 valid password, others can be performed if not listed here.
8034
8035 To disable an action, set the password to "disable".
8036 To allow performing an action without a password, set the
8037 password to "none".
8038
8039 Use the keyword "all" to set the same password for all actions.
8040
8041Example:
8042 cachemgr_passwd secret shutdown
8043 cachemgr_passwd lesssssssecret info stats/objects
8044 cachemgr_passwd disable all
5f8252d2 8045DOC_END
8046
5473c134 8047NAME: client_db
a58ff010 8048COMMENT: on|off
5473c134 8049TYPE: onoff
8050DEFAULT: on
8051LOC: Config.onoff.client_db
a58ff010 8052DOC_START
5473c134 8053 If you want to disable collecting per-client statistics,
8054 turn off client_db here.
a58ff010 8055DOC_END
8056
5473c134 8057NAME: refresh_all_ims
8058COMMENT: on|off
8059TYPE: onoff
8060DEFAULT: off
8061LOC: Config.onoff.refresh_all_ims
a58ff010 8062DOC_START
5473c134 8063 When you enable this option, squid will always check
8064 the origin server for an update when a client sends an
8065 If-Modified-Since request. Many browsers use IMS
8066 requests when the user requests a reload, and this
8067 ensures those clients receive the latest version.
a58ff010 8068
5473c134 8069 By default (off), squid may return a Not Modified response
8070 based on the age of the cached version.
78e8cfc4 8071DOC_END
8072
5473c134 8073NAME: reload_into_ims
626096be 8074IFDEF: USE_HTTP_VIOLATIONS
12b91c99 8075COMMENT: on|off
5473c134 8076TYPE: onoff
8077DEFAULT: off
8078LOC: Config.onoff.reload_into_ims
12b91c99 8079DOC_START
5473c134 8080 When you enable this option, client no-cache or ``reload''
8081 requests will be changed to If-Modified-Since requests.
8082 Doing this VIOLATES the HTTP standard. Enabling this
8083 feature could make you liable for problems which it
8084 causes.
8085
8086 see also refresh_pattern for a more selective approach.
12b91c99 8087DOC_END
8088
31ef19cd 8089NAME: connect_retries
5473c134 8090TYPE: int
31ef19cd
AJ
8091LOC: Config.connect_retries
8092DEFAULT: 0
a58ff010 8093DOC_START
aed188fd
AJ
8094 This sets the maximum number of connection attempts made for each
8095 TCP connection. The connect_retries attempts must all still
8096 complete within the connection timeout period.
31ef19cd
AJ
8097
8098 The default is not to re-try if the first connection attempt fails.
8099 The (not recommended) maximum is 10 tries.
5473c134 8100
31ef19cd
AJ
8101 A warning message will be generated if it is set to a too-high
8102 value and the configured value will be over-ridden.
5473c134 8103
31ef19cd
AJ
8104 Note: These re-tries are in addition to forward_max_tries
8105 which limit how many different addresses may be tried to find
8106 a useful server.
a58ff010 8107DOC_END
8108
5473c134 8109NAME: retry_on_error
a58ff010 8110TYPE: onoff
5473c134 8111LOC: Config.retry.onerror
a58ff010 8112DEFAULT: off
8113DOC_START
aea8548b
AJ
8114 If set to ON Squid will automatically retry requests when
8115 receiving an error response with status 403 (Forbidden),
8116 500 (Internal Error), 501 or 503 (Service not available).
8117 Status 502 and 504 (Gateway errors) are always retried.
8118
8119 This is mainly useful if you are in a complex cache hierarchy to
8120 work around access control errors.
8121
8122 NOTE: This retry will attempt to find another working destination.
8123 Which is different from the server which just failed.
5f8252d2 8124DOC_END
8125
5473c134 8126NAME: as_whois_server
5f8252d2 8127TYPE: string
5473c134 8128LOC: Config.as_whois_server
8129DEFAULT: whois.ra.net
5f8252d2 8130DOC_START
5473c134 8131 WHOIS server to query for AS numbers. NOTE: AS numbers are
8132 queried only when Squid starts up, not for every request.
5f8252d2 8133DOC_END
8134
5473c134 8135NAME: offline_mode
5f8252d2 8136TYPE: onoff
5473c134 8137LOC: Config.onoff.offline
5f8252d2 8138DEFAULT: off
8139DOC_START
5473c134 8140 Enable this option and Squid will never try to validate cached
8141 objects.
a58ff010 8142DOC_END
8143
5473c134 8144NAME: uri_whitespace
8145TYPE: uri_whitespace
8146LOC: Config.uri_whitespace
8147DEFAULT: strip
a58ff010 8148DOC_START
5473c134 8149 What to do with requests that have whitespace characters in the
8150 URI. Options:
a58ff010 8151
5473c134 8152 strip: The whitespace characters are stripped out of the URL.
8153 This is the behavior recommended by RFC2396.
8154 deny: The request is denied. The user receives an "Invalid
8155 Request" message.
8156 allow: The request is allowed and the URI is not changed. The
8157 whitespace characters remain in the URI. Note the
8158 whitespace is passed to redirector processes if they
8159 are in use.
8160 encode: The request is allowed and the whitespace characters are
8161 encoded according to RFC1738. This could be considered
8162 a violation of the HTTP/1.1
8163 RFC because proxies are not allowed to rewrite URI's.
8164 chop: The request is allowed and the URI is chopped at the
8165 first whitespace. This might also be considered a
8166 violation.
8167DOC_END
a58ff010 8168
5473c134 8169NAME: chroot
8170TYPE: string
8171LOC: Config.chroot_dir
a58ff010 8172DEFAULT: none
8173DOC_START
9f37c18a 8174 Specifies a directory where Squid should do a chroot() while
2d89f399
HN
8175 initializing. This also causes Squid to fully drop root
8176 privileges after initializing. This means, for example, if you
8177 use a HTTP port less than 1024 and try to reconfigure, you may
8178 get an error saying that Squid can not open the port.
5473c134 8179DOC_END
a58ff010 8180
5473c134 8181NAME: balance_on_multiple_ip
8182TYPE: onoff
8183LOC: Config.onoff.balance_on_multiple_ip
cc192b50 8184DEFAULT: off
5473c134 8185DOC_START
cc192b50 8186 Modern IP resolvers in squid sort lookup results by preferred access.
8187 By default squid will use these IP in order and only rotates to
8188 the next listed when the most preffered fails.
8189
5473c134 8190 Some load balancing servers based on round robin DNS have been
8191 found not to preserve user session state across requests
8192 to different IP addresses.
a58ff010 8193
cc192b50 8194 Enabling this directive Squid rotates IP's per request.
a58ff010 8195DOC_END
8196
5473c134 8197NAME: pipeline_prefetch
8198TYPE: onoff
8199LOC: Config.onoff.pipeline_prefetch
8200DEFAULT: off
a58ff010 8201DOC_START
5473c134 8202 To boost the performance of pipelined requests to closer
8203 match that of a non-proxied environment Squid can try to fetch
8204 up to two requests in parallel from a pipeline.
a58ff010 8205
5473c134 8206 Defaults to off for bandwidth management and access logging
8207 reasons.
a0e23afd
AJ
8208
8209 WARNING: pipelining breaks NTLM and Negotiate/Kerberos authentication.
5473c134 8210DOC_END
a58ff010 8211
5473c134 8212NAME: high_response_time_warning
8213TYPE: int
8214COMMENT: (msec)
8215LOC: Config.warnings.high_rptm
8216DEFAULT: 0
8217DOC_START
8218 If the one-minute median response time exceeds this value,
8219 Squid prints a WARNING with debug level 0 to get the
8220 administrators attention. The value is in milliseconds.
a58ff010 8221DOC_END
8222
5473c134 8223NAME: high_page_fault_warning
8224TYPE: int
8225LOC: Config.warnings.high_pf
8226DEFAULT: 0
cc9f92d4 8227DOC_START
5473c134 8228 If the one-minute average page fault rate exceeds this
8229 value, Squid prints a WARNING with debug level 0 to get
8230 the administrators attention. The value is in page faults
8231 per second.
8232DOC_END
cc9f92d4 8233
5473c134 8234NAME: high_memory_warning
8235TYPE: b_size_t
8236LOC: Config.warnings.high_memory
904971da 8237DEFAULT: 0 KB
5473c134 8238DOC_START
8239 If the memory usage (as determined by mallinfo) exceeds
904971da 8240 this amount, Squid prints a WARNING with debug level 0 to get
5473c134 8241 the administrators attention.
8242DOC_END
cc9f92d4 8243
5473c134 8244NAME: sleep_after_fork
8245COMMENT: (microseconds)
8246TYPE: int
8247LOC: Config.sleep_after_fork
8248DEFAULT: 0
8249DOC_START
8250 When this is set to a non-zero value, the main Squid process
8251 sleeps the specified number of microseconds after a fork()
8252 system call. This sleep may help the situation where your
8253 system reports fork() failures due to lack of (virtual)
8254 memory. Note, however, if you have a lot of child
8255 processes, these sleep delays will add up and your
8256 Squid will not service requests for some amount of time
8257 until all the child processes have been started.
8258 On Windows value less then 1000 (1 milliseconds) are
8259 rounded to 1000.
cc9f92d4 8260DOC_END
8261
b6696974 8262NAME: windows_ipaddrchangemonitor
7aa9bb3e 8263IFDEF: _SQUID_WINDOWS_
b6696974
GS
8264COMMENT: on|off
8265TYPE: onoff
8266DEFAULT: on
8267LOC: Config.onoff.WIN32_IpAddrChangeMonitor
8268DOC_START
8269 On Windows Squid by default will monitor IP address changes and will
8270 reconfigure itself after any detected event. This is very useful for
8271 proxies connected to internet with dial-up interfaces.
8272 In some cases (a Proxy server acting as VPN gateway is one) it could be
8273 desiderable to disable this behaviour setting this to 'off'.
8274 Note: after changing this, Squid service must be restarted.
8275DOC_END
8276
a98c2da5
AJ
8277NAME: eui_lookup
8278TYPE: onoff
8279IFDEF: USE_SQUID_EUI
8280DEFAULT: on
8281LOC: Eui::TheConfig.euiLookup
8282DOC_START
8283 Whether to lookup the EUI or MAC address of a connected client.
8284DOC_END
8285
f3f0f563
AJ
8286NAME: max_filedescriptors max_filedesc
8287TYPE: int
8288DEFAULT: 0
8289LOC: Config.max_filedescriptors
8290DOC_START
8291 The maximum number of filedescriptors supported.
8292
8293 The default "0" means Squid inherits the current ulimit setting.
8294
8295 Note: Changing this requires a restart of Squid. Also
8296 not all comm loops supports large values.
8297DOC_END
8298
13aeac35 8299NAME: workers
007d775d 8300TYPE: int
13aeac35 8301LOC: Config.workers
007d775d
AR
8302DEFAULT: 1
8303DOC_START
13aeac35 8304 Number of main Squid processes or "workers" to fork and maintain.
007d775d
AR
8305 0: "no daemon" mode, like running "squid -N ..."
8306 1: "no SMP" mode, start one main Squid process daemon (default)
13aeac35
AR
8307 N: start N main Squid process daemons (i.e., SMP mode)
8308
b87f6632
AR
8309 In SMP mode, each worker does nearly all what a single Squid daemon
8310 does (e.g., listen on http_port and forward HTTP requests).
007d775d
AR
8311DOC_END
8312
96c2bb61
AR
8313NAME: cpu_affinity_map
8314TYPE: CpuAffinityMap
8315LOC: Config.cpuAffinityMap
8316DEFAULT: none
8317DOC_START
8318 Usage: cpu_affinity_map process_numbers=P1,P2,... cores=C1,C2,...
8319
8320 Sets 1:1 mapping between Squid processes and CPU cores. For example,
8321
8322 cpu_affinity_map process_numbers=1,2,3,4 cores=1,3,5,7
8323
8324 affects processes 1 through 4 only and places them on the first
8325 four even cores, starting with core #1.
8326
8327 CPU cores are numbered starting from 1. Requires support for
8328 sched_getaffinity(2) and sched_setaffinity(2) system calls.
8329
8330 Multiple cpu_affinity_map options are merged.
8331
8332 See also: workers
8333DOC_END
8334
cccac0a2 8335EOF