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