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