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