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