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