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