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