]> git.ipfire.org Git - thirdparty/squid.git/blame - src/cf.data.pre
Documentation: Update stale SMP cache_dir caveats (#1394)
[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
62d711a8
AR
4307 Rock is currently the only SMP-aware cache_dir type. Using other
4308 store types in configurations with multiple workers is not
4309 supported and may lead to HTTP violations or undefined behavior,
4310 even when each such cache_dir is given a dedicated worker using
4311 configuration conditionals.
acf69d74 4312
638402dd
AJ
4313
4314 ==== The ufs store type ====
0976f8db 4315
41bd17a4 4316 "ufs" is the old well-known Squid storage format that has always
4317 been there.
0976f8db 4318
638402dd
AJ
4319 Usage:
4320 cache_dir ufs Directory-Name Mbytes L1 L2 [options]
0976f8db 4321
41bd17a4 4322 'Mbytes' is the amount of disk space (MB) to use under this
4323 directory. The default is 100 MB. Change this to suit your
4324 configuration. Do NOT put the size of your disk drive here.
4325 Instead, if you want Squid to use the entire disk drive,
4326 subtract 20% and use that value.
0976f8db 4327
56fba4d0 4328 'L1' is the number of first-level subdirectories which
41bd17a4 4329 will be created under the 'Directory'. The default is 16.
0976f8db 4330
56fba4d0 4331 'L2' is the number of second-level subdirectories which
41bd17a4 4332 will be created under each first-level directory. The default
4333 is 256.
0976f8db 4334
638402dd
AJ
4335
4336 ==== The aufs store type ====
7f7db318 4337
41bd17a4 4338 "aufs" uses the same storage format as "ufs", utilizing
4339 POSIX-threads to avoid blocking the main Squid process on
4340 disk-I/O. This was formerly known in Squid as async-io.
38f9c547 4341
638402dd
AJ
4342 Usage:
4343 cache_dir aufs Directory-Name Mbytes L1 L2 [options]
38f9c547 4344
41bd17a4 4345 see argument descriptions under ufs above
38f9c547 4346
638402dd
AJ
4347
4348 ==== The diskd store type ====
38f9c547 4349
41bd17a4 4350 "diskd" uses the same storage format as "ufs", utilizing a
4351 separate process to avoid blocking the main Squid process on
4352 disk-I/O.
4c3ef9b2 4353
638402dd
AJ
4354 Usage:
4355 cache_dir diskd Directory-Name Mbytes L1 L2 [options] [Q1=n] [Q2=n]
0976f8db 4356
41bd17a4 4357 see argument descriptions under ufs above
0976f8db 4358
41bd17a4 4359 Q1 specifies the number of unacknowledged I/O requests when Squid
4360 stops opening new files. If this many messages are in the queues,
4361 Squid won't open new files. Default is 64
0976f8db 4362
41bd17a4 4363 Q2 specifies the number of unacknowledged messages when Squid
4364 starts blocking. If this many messages are in the queues,
4365 Squid blocks until it receives some replies. Default is 72
0976f8db 4366
41bd17a4 4367 When Q1 < Q2 (the default), the cache directory is optimized
4368 for lower response time at the expense of a decrease in hit
4369 ratio. If Q1 > Q2, the cache directory is optimized for
4370 higher hit ratio at the expense of an increase in response
4371 time.
0976f8db 4372
e2851fe7 4373
638402dd
AJ
4374 ==== The rock store type ====
4375
4376 Usage:
e51ce7da 4377 cache_dir rock Directory-Name Mbytes [options]
e2851fe7 4378
2e55f083 4379 The Rock Store type is a database-style storage. All cached
e51ce7da
AR
4380 entries are stored in a "database" file, using fixed-size slots.
4381 A single entry occupies one or more slots.
e2851fe7 4382
3e1dfe3d
AR
4383 If possible, Squid using Rock Store creates a dedicated kid
4384 process called "disker" to avoid blocking Squid worker(s) on disk
4385 I/O. One disker kid is created for each rock cache_dir. Diskers
4386 are created only when Squid, running in daemon mode, has support
4387 for the IpcIo disk I/O module.
4388
43ebbac3
AR
4389 swap-timeout=msec: Squid will not start writing a miss to or
4390 reading a hit from disk if it estimates that the swap operation
4391 will take more than the specified number of milliseconds. By
4392 default and when set to zero, disables the disk I/O time limit
4393 enforcement. Ignored when using blocking I/O module because
4394 blocking synchronous I/O does not allow Squid to estimate the
4395 expected swap wait time.
4396
df881a0f 4397 max-swap-rate=swaps/sec: Artificially limits disk access using
1e614370 4398 the specified I/O rate limit. Swap out requests that
df881a0f 4399 would cause the average I/O rate to exceed the limit are
1e614370
DK
4400 delayed. Individual swap in requests (i.e., hits or reads) are
4401 not delayed, but they do contribute to measured swap rate and
4402 since they are placed in the same FIFO queue as swap out
4403 requests, they may wait longer if max-swap-rate is smaller.
4404 This is necessary on file systems that buffer "too
df881a0f
AR
4405 many" writes and then start blocking Squid and other processes
4406 while committing those writes to disk. Usually used together
4407 with swap-timeout to avoid excessive delays and queue overflows
4408 when disk demand exceeds available disk "bandwidth". By default
4409 and when set to zero, disables the disk I/O rate limit
4410 enforcement. Currently supported by IpcIo module only.
4411
e51ce7da
AR
4412 slot-size=bytes: The size of a database "record" used for
4413 storing cached responses. A cached response occupies at least
4414 one slot and all database I/O is done using individual slots so
4415 increasing this parameter leads to more disk space waste while
4416 decreasing it leads to more disk I/O overheads. Should be a
4417 multiple of your operating system I/O page size. Defaults to
4418 16KBytes. A housekeeping header is stored with each slot and
4419 smaller slot-sizes will be rejected. The header is smaller than
4420 100 bytes.
4421
df881a0f 4422
638402dd 4423 ==== COMMON OPTIONS ====
0976f8db 4424
638402dd
AJ
4425 no-store no new objects should be stored to this cache_dir.
4426
4427 min-size=n the minimum object size in bytes this cache_dir
4428 will accept. It's used to restrict a cache_dir
4429 to only store large objects (e.g. AUFS) while
4430 other stores are optimized for smaller objects
73656056 4431 (e.g. Rock).
638402dd 4432 Defaults to 0.
0976f8db 4433
638402dd
AJ
4434 max-size=n the maximum object size in bytes this cache_dir
4435 supports.
499f852c
A
4436 The value in maximum_object_size directive sets
4437 the default unless more specific details are
4438 available (ie a small store capacity).
b6662ffd 4439
41bd17a4 4440 Note: To make optimal use of the max-size limits you should order
638402dd 4441 the cache_dir lines with the smallest max-size value first.
0976f8db 4442
47f0eaea 4443CONFIG_START
e0855596
AJ
4444
4445# Uncomment and adjust the following to add a disk cache directory.
4446#cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
47f0eaea 4447CONFIG_END
6b698a21 4448DOC_END
0976f8db 4449
41bd17a4 4450NAME: store_dir_select_algorithm
4451TYPE: string
4452LOC: Config.store_dir_select_algorithm
4453DEFAULT: least-load
6b698a21 4454DOC_START
638402dd
AJ
4455 How Squid selects which cache_dir to use when the response
4456 object will fit into more than one.
4457
4458 Regardless of which algorithm is used the cache_dir min-size
4459 and max-size parameters are obeyed. As such they can affect
4460 the selection algorithm by limiting the set of considered
4461 cache_dir.
4462
4463 Algorithms:
4464
4465 least-load
4466
4467 This algorithm is suited to caches with similar cache_dir
4468 sizes and disk speeds.
4469
4470 The disk with the least I/O pending is selected.
4471 When there are multiple disks with the same I/O load ranking
4472 the cache_dir with most available capacity is selected.
4473
4474 When a mix of cache_dir sizes are configured the faster disks
4475 have a naturally lower I/O loading and larger disks have more
4476 capacity. So space used to store objects and data throughput
4477 may be very unbalanced towards larger disks.
4478
4479
4480 round-robin
4481
4482 This algorithm is suited to caches with unequal cache_dir
4483 disk sizes.
4484
4485 Each cache_dir is selected in a rotation. The next suitable
4486 cache_dir is used.
4487
4488 Available cache_dir capacity is only considered in relation
4489 to whether the object will fit and meets the min-size and
4490 max-size parameters.
4491
4492 Disk I/O loading is only considered to prevent overload on slow
4493 disks. This algorithm does not spread objects by size, so any
4494 I/O loading per-disk may appear very unbalanced and volatile.
4495
29a238a3
AR
4496 If several cache_dirs use similar min-size, max-size, or other
4497 limits to to reject certain responses, then do not group such
4498 cache_dir lines together, to avoid round-robin selection bias
4499 towards the first cache_dir after the group. Instead, interleave
4500 cache_dir lines from different groups. For example:
4501
4502 store_dir_select_algorithm round-robin
4503 cache_dir rock /hdd1 ... min-size=100000
4504 cache_dir rock /ssd1 ... max-size=99999
4505 cache_dir rock /hdd2 ... min-size=100000
4506 cache_dir rock /ssd2 ... max-size=99999
4507 cache_dir rock /hdd3 ... min-size=100000
4508 cache_dir rock /ssd3 ... max-size=99999
6b698a21 4509DOC_END
0976f8db 4510
b2aca62a
EB
4511NAME: paranoid_hit_validation
4512COMMENT: time-units-small
4513TYPE: time_nanoseconds
4514DEFAULT: 0
4515DEFAULT_DOC: validation disabled
4516LOC: Config.paranoid_hit_validation
4517DOC_START
4518 Controls whether Squid should perform paranoid validation of cache entry
4519 metadata integrity every time a cache entry is hit. This low-level
4520 validation should always succeed. Each failed validation results in a
4521 cache miss, a BUG line reported to cache.log, and the invalid entry
4522 marked as unusable (and eventually purged from the cache).
4523
4524 Squid can only validate shared cache memory and rock cache_dir entries.
4525
4526 * Zero (default) value means that the validation is disabled.
4527
4528 * Positive values enable validation:
4529 - values less than 1 day approximate the maximum time that Squid is allowed
4530 to spend validating a single cache hit.
4531 - values greater or equal to 1 day are considered as no limitation:
4532 in this case all checks will be performed, regardless of how much time
4533 they take.
4534
4535 Hits are usually stored using 16KB slots (for rock, the size is
4536 configurable via cache_dir slot-size). Larger hits require scanning more
4537 slots and, hence, take more time. When validation is enabled, at least one
4538 slot is always validated, regardless of the configured time limit.
4539
4540 A worker process validating an entry cannot do anything else (i.e. the
4541 validation is blocking). The validation overhead is environment dependent,
4542 but developers have observed Squid spending 3-10 microseconds to check each
4543 slot of a Rock or shared memory hit entry. If Squid cuts validation short
4544 because it runs out of configured time, it treats the entry as valid.
4545
4546 When hit validation is enabled, its statistics is included in Cache
4547 Manager mgr:counters, mgr:5min, and mgr:60min reports.
4548DOC_END
4549
41bd17a4 4550NAME: max_open_disk_fds
4551TYPE: int
4552LOC: Config.max_open_disk_fds
4553DEFAULT: 0
638402dd 4554DEFAULT_DOC: no limit
6b698a21 4555DOC_START
41bd17a4 4556 To avoid having disk as the I/O bottleneck Squid can optionally
4557 bypass the on-disk cache if more than this amount of disk file
4558 descriptors are open.
4559
4560 A value of 0 indicates no limit.
6b698a21 4561DOC_END
0976f8db 4562
41bd17a4 4563NAME: cache_swap_low
4564COMMENT: (percent, 0-100)
5473c134 4565TYPE: int
41bd17a4 4566DEFAULT: 90
4567LOC: Config.Swap.lowWaterMark
638402dd 4568DOC_START
5f662601
AJ
4569 The low-water mark for AUFS/UFS/diskd cache object eviction by
4570 the cache_replacement_policy algorithm.
4571
4572 Removal begins when the swap (disk) usage of a cache_dir is
4573 above this low-water mark and attempts to maintain utilization
4574 near the low-water mark.
4575
4576 As swap utilization increases towards the high-water mark set
2f8abb64 4577 by cache_swap_high object eviction becomes more aggressive.
5f662601
AJ
4578
4579 The value difference in percentages between low- and high-water
7bcaf76f 4580 marks represent an eviction rate of 300 objects per second and
2f8abb64 4581 the rate continues to scale in aggressiveness by multiples of
5f662601 4582 this above the high-water mark.
638402dd
AJ
4583
4584 Defaults are 90% and 95%. If you have a large cache, 5% could be
4585 hundreds of MB. If this is the case you may wish to set these
4586 numbers closer together.
4587
5f662601 4588 See also cache_swap_high and cache_replacement_policy
638402dd 4589DOC_END
41bd17a4 4590
4591NAME: cache_swap_high
4592COMMENT: (percent, 0-100)
4593TYPE: int
4594DEFAULT: 95
4595LOC: Config.Swap.highWaterMark
6b698a21 4596DOC_START
5f662601
AJ
4597 The high-water mark for AUFS/UFS/diskd cache object eviction by
4598 the cache_replacement_policy algorithm.
4599
4600 Removal begins when the swap (disk) usage of a cache_dir is
4601 above the low-water mark set by cache_swap_low and attempts to
4602 maintain utilization near the low-water mark.
4603
4604 As swap utilization increases towards this high-water mark object
2f8abb64 4605 eviction becomes more aggressive.
5f662601
AJ
4606
4607 The value difference in percentages between low- and high-water
7bcaf76f 4608 marks represent an eviction rate of 300 objects per second and
2f8abb64 4609 the rate continues to scale in aggressiveness by multiples of
5f662601 4610 this above the high-water mark.
41bd17a4 4611
4612 Defaults are 90% and 95%. If you have a large cache, 5% could be
4613 hundreds of MB. If this is the case you may wish to set these
4614 numbers closer together.
638402dd 4615
5f662601 4616 See also cache_swap_low and cache_replacement_policy
6b698a21 4617DOC_END
0976f8db 4618
5473c134 4619COMMENT_START
41bd17a4 4620 LOGFILE OPTIONS
5473c134 4621 -----------------------------------------------------------------------------
4622COMMENT_END
0976f8db 4623
41bd17a4 4624NAME: logformat
4625TYPE: logformat
20efa1c2 4626LOC: Log::TheConfig
5473c134 4627DEFAULT: none
638402dd 4628DEFAULT_DOC: The format definitions squid, common, combined, referrer, useragent are built in.
6b698a21 4629DOC_START
41bd17a4 4630 Usage:
0976f8db 4631
41bd17a4 4632 logformat <name> <format specification>
0976f8db 4633
41bd17a4 4634 Defines an access log format.
6b698a21 4635
41bd17a4 4636 The <format specification> is a string with embedded % format codes
5473c134 4637
bec110e4
EB
4638 % format codes all follow the same basic structure where all
4639 components but the formatcode are optional and usually unnecessary,
4640 especially when dealing with common codes.
6b698a21 4641
bec110e4 4642 % [encoding] [-] [[0]width] [{arg}] formatcode [{arg}]
0976f8db 4643
bec110e4
EB
4644 encoding escapes or otherwise protects "special" characters:
4645
4646 " Quoted string encoding where quote(") and
4647 backslash(\) characters are \-escaped while
4648 CR, LF, and TAB characters are encoded as \r,
4649 \n, and \t two-character sequences.
4650
4651 [ Custom Squid encoding where percent(%), square
4652 brackets([]), backslash(\) and characters with
4653 codes outside of [32,126] range are %-encoded.
4654 SP is not encoded. Used by log_mime_hdrs.
4655
4656 # URL encoding (a.k.a. percent-encoding) where
4657 all URL unsafe and control characters (per RFC
4658 1738) are %-encoded.
4659
4660 / Shell-like encoding where quote(") and
4661 backslash(\) characters are \-escaped while CR
4662 and LF characters are encoded as \r and \n
4663 two-character sequences. Values containing SP
4664 character(s) are surrounded by quotes(").
4665
4666 ' Raw/as-is encoding with no escaping/quoting.
4667
4668 Default encoding: When no explicit encoding is
4669 specified, each %code determines its own encoding.
4670 Most %codes use raw/as-is encoding, but some codes use
4671 a so called "pass-through URL encoding" where all URL
4672 unsafe and control characters (per RFC 1738) are
4673 %-encoded, but the percent character(%) is left as is.
5473c134 4674
41bd17a4 4675 - left aligned
c32c6db7
AR
4676
4677 width minimum and/or maximum field width:
4678 [width_min][.width_max]
e2851fe7
AR
4679 When minimum starts with 0, the field is zero-padded.
4680 String values exceeding maximum width are truncated.
c32c6db7 4681
4e56d7f6
AJ
4682 {arg} argument such as header name etc. This field may be
4683 placed before or after the token, but not both at once.
5473c134 4684
41bd17a4 4685 Format codes:
5473c134 4686
3ff65596 4687 % a literal % character
f4b68e1a
AJ
4688 sn Unique sequence number per log line entry
4689 err_code The ID of an error response served by Squid or
4690 a similar internal error identifier.
4691 err_detail Additional err_code-dependent error information.
c7bcf010 4692 note The annotation specified by the argument. Also
d7f4a0b7
CT
4693 logs the adaptation meta headers set by the
4694 adaptation_meta configuration parameter.
c7bcf010
CT
4695 If no argument given all annotations logged.
4696 The argument may include a separator to use with
4697 annotation values:
4698 name[:separator]
4699 By default, multiple note values are separated with ","
4700 and multiple notes are separated with "\r\n".
4701 When logging named notes with %{name}note, the
4702 explicitly configured separator is used between note
4703 values. When logging all notes with %note, the
4704 explicitly configured separator is used between
4705 individual notes. There is currently no way to
4706 specify both value and notes separators when logging
4707 all notes with %note.
7cfd3a41
EB
4708 master_xaction The master transaction identifier is an unsigned
4709 integer. These IDs are guaranteed to monotonically
4710 increase within a single worker process lifetime, with
4711 higher values corresponding to transactions that were
4712 accepted or initiated later. Due to current implementation
4713 deficiencies, some IDs are skipped (i.e. never logged).
4714 Concurrent workers and restarted workers use similar,
4715 overlapping sequences of master transaction IDs.
f4b68e1a
AJ
4716
4717 Connection related format codes:
4718
41bd17a4 4719 >a Client source IP address
4720 >A Client FQDN
4721 >p Client source port
8652f8e7
AJ
4722 >eui Client source EUI (MAC address, EUI-48 or EUI-64 identifier)
4723 >la Local IP address the client connected to
4724 >lp Local port number the client connected to
f123f5e9 4725 >qos Client connection TOS/DSCP value set by Squid
244da4ad 4726 >nfmark Client connection netfilter packet MARK set by Squid
8652f8e7 4727
a120b7a8
CT
4728 transport::>connection_id Identifies a transport connection
4729 accepted by Squid (e.g., a connection carrying the
4730 logged HTTP request). Currently, Squid only supports
4731 TCP transport connections.
4732
4733 The logged identifier is an unsigned integer. These
4734 IDs are guaranteed to monotonically increase within a
4735 single worker process lifetime, with higher values
4736 corresponding to connections that were accepted later.
4737 Many IDs are skipped (i.e. never logged). Concurrent
4738 workers and restarted workers use similar, partially
4739 overlapping sequences of IDs.
4740
28417506
CT
4741 la Local listening IP address the client connection was connected to.
4742 lp Local listening port number the client connection was connected to.
4743
8652f8e7
AJ
4744 <a Server IP address of the last server or peer connection
4745 <A Server FQDN or peer name
4746 <p Server port number of the last server or peer connection
c3a082ae 4747 <la Local IP address of the last server or peer connection
152e24b3 4748 <lp Local port number of the last server or peer connection
f123f5e9 4749 <qos Server connection TOS/DSCP value set by Squid
244da4ad 4750 <nfmark Server connection netfilter packet MARK set by Squid
f4b68e1a 4751
6131103b
CT
4752 >handshake Raw client handshake
4753 Initial client bytes received by Squid on a newly
4754 accepted TCP connection or inside a just established
4755 CONNECT tunnel. Squid stops accumulating handshake
4756 bytes as soon as the handshake parser succeeds or
4757 fails (determining whether the client is using the
4758 expected protocol).
4759
4760 For HTTP clients, the handshake is the request line.
4761 For TLS clients, the handshake consists of all TLS
4762 records up to and including the TLS record that
4763 contains the last byte of the first ClientHello
4764 message. For clients using an unsupported protocol,
4765 this field contains the bytes received by Squid at the
4766 time of the handshake parsing failure.
4767
4768 See the on_unsupported_protocol directive for more
4769 information on Squid handshake traffic expectations.
4770
4771 Current support is limited to these contexts:
4772 - http_port connections, but only when the
4773 on_unsupported_protocol directive is in use.
4774 - https_port connections (and CONNECT tunnels) that
4775 are subject to the ssl_bump peek or stare action.
4776
4777 To protect binary handshake data, this field is always
4778 base64-encoded (RFC 4648 Section 4). If logformat
4779 field encoding is configured, that encoding is applied
4780 on top of base64. Otherwise, the computed base64 value
4781 is recorded as is.
4782
f4b68e1a
AJ
4783 Time related format codes:
4784
41bd17a4 4785 ts Seconds since epoch
4786 tu subsecond time (milliseconds)
4787 tl Local time. Optional strftime format argument
3ff65596 4788 default %d/%b/%Y:%H:%M:%S %z
41bd17a4 4789 tg GMT time. Optional strftime format argument
3ff65596 4790 default %d/%b/%Y:%H:%M:%S %z
41bd17a4 4791 tr Response time (milliseconds)
3ff65596 4792 dt Total time spent making DNS lookups (milliseconds)
9603207d 4793 tS Approximate master transaction start time in
af0ded40
CT
4794 <full seconds since epoch>.<fractional seconds> format.
4795 Currently, Squid considers the master transaction
4796 started when a complete HTTP request header initiating
4797 the transaction is received from the client. This is
4798 the same value that Squid uses to calculate transaction
4799 response time when logging %tr to access.log. Currently,
4800 Squid uses millisecond resolution for %tS values,
4801 similar to the default access.log "current time" field
4802 (%ts.%03tu).
3ff65596 4803
0cd2a1b6
AR
4804 busy_time Time spent in transaction-related code (nanoseconds)
4805 This cumulative measurement excludes periods of time when the
4806 transaction was waiting (e.g., for a server or helper response)
4807 while Squid worked on other transactions or was engaged in
4808 transaction-unrelated activities (e.g., generating a cache index).
4809 In other words, this measurement represents the total amount of
4810 physical time when Squid was busy working on this transaction.
4811
4812 WARNING: This measurement relies on Squid transaction context
4813 tracking features that currently have known context leak bugs and
4814 coverage gaps. Until those features are fully implemented, logged
4815 values may significantly understate or exaggerate actual times.
4816 Do not use this measurement unless you know it works in your case.
4817
8652f8e7
AJ
4818 Access Control related format codes:
4819
4820 et Tag returned by external acl
4821 ea Log string returned by external acl
4822 un User name (any available)
4823 ul User name from authentication
4824 ue User name from external acl helper
4825 ui User name from ident
50b5c983
AJ
4826 un A user name. Expands to the first available name
4827 from the following list of information sources:
4828 - authenticated user name, like %ul
4829 - user name supplied by an external ACL, like %ue
4830 - SSL client name, like %us
4831 - ident user name, like %ui
d4806c91
CT
4832 credentials Client credentials. The exact meaning depends on
4833 the authentication scheme: For Basic authentication,
4834 it is the password; for Digest, the realm sent by the
4835 client; for NTLM and Negotiate, the client challenge
4836 or client credentials prefixed with "YR " or "KK ".
8652f8e7
AJ
4837
4838 HTTP related format codes:
3ff65596 4839
d6df21d2
AJ
4840 REQUEST
4841
4842 [http::]rm Request method (GET/POST etc)
4843 [http::]>rm Request method from client
4844 [http::]<rm Request method sent to server or peer
bec110e4
EB
4845
4846 [http::]ru Request URL received (or computed) and sanitized
4847
4848 Logs request URI received from the client, a
4849 request adaptation service, or a request
4850 redirector (whichever was applied last).
4851
4852 Computed URLs are URIs of internally generated
4853 requests and various "error:..." URIs.
4854
4855 Honors strip_query_terms and uri_whitespace.
4856
4857 This field is not encoded by default. Encoding
4858 this field using variants of %-encoding will
4859 clash with uri_whitespace modifications that
4860 also use %-encoding.
4861
4862 [http::]>ru Request URL received from the client (or computed)
4863
4864 Computed URLs are URIs of internally generated
4865 requests and various "error:..." URIs.
4866
4867 Unlike %ru, this request URI is not affected
4868 by request adaptation, URL rewriting services,
4869 and strip_query_terms.
4870
4871 Honors uri_whitespace.
4872
4873 This field is using pass-through URL encoding
4874 by default. Encoding this field using other
4875 variants of %-encoding will clash with
4876 uri_whitespace modifications that also use
4877 %-encoding.
4878
d6df21d2 4879 [http::]<ru Request URL sent to server or peer
5aca9cf2
AJ
4880 [http::]>rs Request URL scheme from client
4881 [http::]<rs Request URL scheme sent to server or peer
fa450988 4882 [http::]>rd Request URL domain from client
f42ac6e6 4883 [http::]<rd Request URL domain sent to server or peer
5aca9cf2
AJ
4884 [http::]>rP Request URL port from client
4885 [http::]<rP Request URL port sent to server or peer
4886 [http::]rp Request URL path excluding hostname
4887 [http::]>rp Request URL path excluding hostname from client
4888 [http::]<rp Request URL path excluding hostname sent to server or peer
d6df21d2
AJ
4889 [http::]rv Request protocol version
4890 [http::]>rv Request protocol version from client
4891 [http::]<rv Request protocol version sent to server or peer
4892
5aca9cf2 4893 [http::]>h Original received request header.
19483c50
AR
4894 Usually differs from the request header sent by
4895 Squid, although most fields are often preserved.
4896 Accepts optional header field name/value filter
4897 argument using name[:[separator]element] format.
4898 [http::]>ha Received request header after adaptation and
4899 redirection (pre-cache REQMOD vectoring point).
4900 Usually differs from the request header sent by
4901 Squid, although most fields are often preserved.
6fca33e0 4902 Optional header name argument as for >h
d6df21d2 4903
d6df21d2
AJ
4904 RESPONSE
4905
4906 [http::]<Hs HTTP status code received from the next hop
4907 [http::]>Hs HTTP status code sent to the client
4908
3ff65596
AR
4909 [http::]<h Reply header. Optional header name argument
4910 as for >h
d6df21d2
AJ
4911
4912 [http::]mt MIME content type
4913
4914
4915 SIZE COUNTERS
4916
4917 [http::]st Total size of request + reply traffic with client
4918 [http::]>st Total size of request received from client.
4919 Excluding chunked encoding bytes.
4920 [http::]<st Total size of reply sent to client (after adaptation)
4921
4922 [http::]>sh Size of request headers received from client
4923 [http::]<sh Size of reply headers sent to client (after adaptation)
4924
4925 [http::]<sH Reply high offset sent
4926 [http::]<sS Upstream object size
4927
9603207d 4928 [http::]<bs Number of HTTP-equivalent message body bytes
bae917ac
CT
4929 received from the next hop, excluding chunked
4930 transfer encoding and control messages.
6ea12e8f 4931 Generated FTP listings are treated as
bae917ac 4932 received bodies.
d6df21d2 4933
d6df21d2
AJ
4934 TIMING
4935
3ff65596
AR
4936 [http::]<pt Peer response time in milliseconds. The timer starts
4937 when the last request byte is sent to the next hop
4938 and stops when the last response byte is received.
9603207d 4939 [http::]<tt Total time in milliseconds. The timer
3ff65596
AR
4940 starts with the first connect request (or write I/O)
4941 sent to the first selected peer. The timer stops
4942 with the last I/O with the last peer.
4943
8652f8e7
AJ
4944 Squid handling related format codes:
4945
4946 Ss Squid request status (TCP_MISS etc)
4947 Sh Squid hierarchy status (DEFAULT_PARENT etc)
4948
e7a9b7a8
EB
4949 [http::]request_attempts Number of request forwarding attempts
4950
4951 See forward_max_tries documentation that details what Squid counts
4952 as a forwarding attempt. Pure cache hits log zero, but cache hits
4953 that triggered HTTP cache revalidation log the number of attempts
4954 made when sending an internal revalidation request. DNS, ICMP,
4955 ICP, HTCP, ESI, ICAP, eCAP, helper, and other secondary requests
4956 sent by Squid as a part of a master transaction do not increment
4957 the counter logged for the received request.
4958
08097970
AR
4959 SSL-related format codes:
4960
4961 ssl::bump_mode SslBump decision for the transaction:
4962
4963 For CONNECT requests that initiated bumping of
4964 a connection and for any request received on
4965 an already bumped connection, Squid logs the
bf352fb2
CT
4966 corresponding SslBump mode ("splice", "bump",
4967 "peek", "stare", "terminate", "server-first"
9603207d 4968 or "client-first"). See the ssl_bump option
bf352fb2 4969 for more information about these modes.
08097970
AR
4970
4971 A "none" token is logged for requests that
4972 triggered "ssl_bump" ACL evaluation matching
bf352fb2 4973 a "none" rule.
08097970
AR
4974
4975 In all other cases, a single dash ("-") is
4976 logged.
4977
4f6990ec 4978 ssl::>sni SSL client SNI sent to Squid.
cedca6e7 4979
c28b9a0e
AJ
4980 ssl::>cert_subject
4981 The Subject field of the received client
4982 SSL certificate or a dash ('-') if Squid has
4983 received an invalid/malformed certificate or
4984 no certificate at all. Consider encoding the
4985 logged value because Subject often has spaces.
4986
4987 ssl::>cert_issuer
4988 The Issuer field of the received client
4989 SSL certificate or a dash ('-') if Squid has
4990 received an invalid/malformed certificate or
4991 no certificate at all. Consider encoding the
4992 logged value because Issuer often has spaces.
4993
e2e33acc
CT
4994 ssl::<cert_subject
4995 The Subject field of the received server
4996 TLS certificate or a dash ('-') if this is
4997 not available. Consider encoding the logged
4998 value because Subject often has spaces.
4999
8f1c6091 5000 ssl::<cert_issuer
e2e33acc
CT
5001 The Issuer field of the received server
5002 TLS certificate or a dash ('-') if this is
5003 not available. Consider encoding the logged
5004 value because Issuer often has spaces.
5005
12b5040f
DN
5006 ssl::<cert
5007 The received server x509 certificate in PEM
5008 format, including BEGIN and END lines (or a
5009 dash ('-') if the certificate is unavailable).
5010
5011 WARNING: Large certificates will exceed the
5012 current 8KB access.log record limit, resulting
5013 in truncated records. Such truncation usually
5014 happens in the middle of a record field. The
5015 limit applies to all access logging modules.
5016
5017 The logged certificate may have failed
5018 validation and may not be trusted by Squid.
5019 This field does not include any intermediate
5020 certificates that may have been received from
5021 the server or fetched during certificate
5022 validation process.
5023
5024 Currently, Squid only collects server
5025 certificates during step3 of SslBump
5026 processing; connections that were not subject
5027 to ssl_bump rules or that did not match a peek
5028 or stare rule at step2 will not have the
5029 server certificate information.
5030
5031 This field is using pass-through URL encoding
5032 by default.
5033
c28b9a0e
AJ
5034 ssl::<cert_errors
5035 The list of certificate validation errors
5036 detected by Squid (including OpenSSL and
5037 certificate validation helper components). The
5038 errors are listed in the discovery order. By
5039 default, the error codes are separated by ':'.
5040 Accepts an optional separator argument.
5041
2bcab852
CT
5042 %ssl::>negotiated_version The negotiated TLS version of the
5043 client connection.
5044
5045 %ssl::<negotiated_version The negotiated TLS version of the
5046 last server or peer connection.
5047
5048 %ssl::>received_hello_version The TLS version of the Hello
5049 message received from TLS client.
5050
5051 %ssl::<received_hello_version The TLS version of the Hello
5052 message received from TLS server.
5053
5054 %ssl::>received_supported_version The maximum TLS version
5055 supported by the TLS client.
5056
5057 %ssl::<received_supported_version The maximum TLS version
5058 supported by the TLS server.
5059
5060 %ssl::>negotiated_cipher The negotiated cipher of the
5061 client connection.
5062
5063 %ssl::<negotiated_cipher The negotiated cipher of the
5064 last server or peer connection.
5065
5038f9d8 5066 If ICAP is enabled, the following code becomes available (as
3ff65596
AR
5067 well as ICAP log codes documented with the icap_log option):
5068
40dc90df
AR
5069 icap::tt Total ICAP "blocking" time for the HTTP transaction. The
5070 timer ticks while Squid checks adaptation_access and while
5071 ICAP transaction(s) expect ICAP response headers, including
5072 the embedded adapted HTTP message headers (where applicable).
5073 This measurement is meant to estimate ICAP impact on HTTP
5074 transaction response times, but it does not currently account
5075 for slow ICAP response body delivery blocking HTTP progress.
5076
5077 Once Squid receives the final ICAP response headers (e.g.,
5078 ICAP 200 or 204) and the associated adapted HTTP message
5079 headers (if any) from the ICAP service, the corresponding ICAP
5080 transaction stops affecting this measurement, even though the
5081 transaction itself may continue for a long time (e.g., to
5082 finish sending the ICAP request and/or to finish receiving the
5083 ICAP response body).
5084
5085 When "blocking" sections of multiple concurrent ICAP
5086 transactions overlap in time, the overlapping segment is
5087 counted only once.
5088
5089 To see complete ICAP transaction response times (rather than
5090 the cumulative effect of their blocking sections) use the
5091 %adapt::all_trs logformat code or the icap_log directive.
3ff65596 5092
c28b9a0e 5093 If adaptation is enabled the following codes become available:
3ff65596 5094
5038f9d8
AR
5095 adapt::<last_h The header of the last ICAP response or
5096 meta-information from the last eCAP
5097 transaction related to the HTTP transaction.
5098 Like <h, accepts an optional header name
5099 argument.
3ff65596
AR
5100
5101 adapt::sum_trs Summed adaptation transaction response
5102 times recorded as a comma-separated list in
5103 the order of transaction start time. Each time
5104 value is recorded as an integer number,
5105 representing response time of one or more
5106 adaptation (ICAP or eCAP) transaction in
5107 milliseconds. When a failed transaction is
5108 being retried or repeated, its time is not
5109 logged individually but added to the
40dc90df
AR
5110 replacement (next) transaction. Lifetimes of individually
5111 listed adaptation transactions may overlap.
5112 See also: %icap::tt and %adapt::all_trs.
3ff65596
AR
5113
5114 adapt::all_trs All adaptation transaction response times.
40dc90df 5115 Same as %adapt::sum_trs but response times of
3ff65596
AR
5116 individual transactions are never added
5117 together. Instead, all transaction response
5118 times are recorded individually.
5119
5120 You can prefix adapt::*_trs format codes with adaptation
5121 service name in curly braces to record response time(s) specific
5122 to that service. For example: %{my_service}adapt::sum_trs
5473c134 5123
36c774f7
EB
5124 Format codes related to the PROXY protocol:
5125
5126 proxy_protocol::>h PROXY protocol header, including optional TLVs.
5127
5128 Supports the same field and element reporting/extraction logic
5129 as %http::>h. For configuration and reporting purposes, Squid
5130 maps each PROXY TLV to an HTTP header field: the TLV type
5131 (configured as a decimal integer) is the field name, and the
5132 TLV value is the field value. All TLVs of "LOCAL" connections
5133 (in PROXY protocol terminology) are currently skipped/ignored.
5134
5135 Squid also maps the following standard PROXY protocol header
5136 blocks to pseudo HTTP headers (their names use PROXY
5137 terminology and start with a colon, following HTTP tradition
5138 for pseudo headers): :command, :version, :src_addr, :dst_addr,
5139 :src_port, and :dst_port.
5140
5141 Without optional parameters, this logformat code logs
5142 pseudo headers and TLVs.
5143
5144 This format code uses pass-through URL encoding by default.
5145
5146 Example:
5147 # relay custom PROXY TLV #224 to adaptation services
5148 adaptation_meta Client-Foo "%proxy_protocol::>h{224}"
5149
5150 See also: %http::>h
5151
7d9acc3c
AJ
5152 The default formats available (which do not need re-defining) are:
5153
bd85ea1f
AJ
5154logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
5155logformat common %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
5156logformat combined %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
20efa1c2
AJ
5157logformat referrer %ts.%03tu %>a %{Referer}>h %ru
5158logformat useragent %>a [%tl] "%{User-Agent}>h"
5159
8652f8e7
AJ
5160 NOTE: When the log_mime_hdrs directive is set to ON.
5161 The squid, common and combined formats have a safely encoded copy
5162 of the mime headers appended to each line within a pair of brackets.
5163
5164 NOTE: The common and combined formats are not quite true to the Apache definition.
5165 The logs from Squid contain an extra status and hierarchy code appended.
20efa1c2 5166
5473c134 5167DOC_END
5168
41bd17a4 5169NAME: access_log cache_access_log
5170TYPE: access_log
5171LOC: Config.Log.accesslogs
82b7abe3 5172DEFAULT_IF_NONE: daemon:@DEFAULT_ACCESS_LOG@ squid
5473c134 5173DOC_START
fb0c2f17 5174 Configures whether and how Squid logs HTTP and ICP transactions.
9603207d 5175 If access logging is enabled, a single line is logged for every
fb0c2f17
NH
5176 matching HTTP or ICP request. The recommended directive formats are:
5177
5178 access_log <module>:<place> [option ...] [acl acl ...]
5179 access_log none [acl acl ...]
5180
5181 The following directive format is accepted but may be deprecated:
82b7abe3 5182 access_log <module>:<place> [<logformat name> [acl acl ...]]
fb0c2f17
NH
5183
5184 In most cases, the first ACL name must not contain the '=' character
5185 and should not be equal to an existing logformat name. You can always
5186 start with an 'all' ACL to work around those restrictions.
9603207d 5187
82b7abe3 5188 Will log to the specified module:place using the specified format (which
41bd17a4 5189 must be defined in a logformat directive) those entries which match
5190 ALL the acl's specified (which must be defined in acl clauses).
82b7abe3 5191 If no acl is specified, all requests will be logged to this destination.
9603207d 5192
fb0c2f17
NH
5193 ===== Available options for the recommended directive format =====
5194
5195 logformat=name Names log line format (either built-in or
5196 defined by a logformat directive). Defaults
5197 to 'squid'.
5198
5199 buffer-size=64KB Defines approximate buffering limit for log
5200 records (see buffered_logs). Squid should not
5201 keep more than the specified size and, hence,
5202 should flush records before the buffer becomes
5203 full to avoid overflows under normal
5204 conditions (the exact flushing algorithm is
5205 module-dependent though). The on-error option
5206 controls overflow handling.
5207
5208 on-error=die|drop Defines action on unrecoverable errors. The
5209 'drop' action ignores (i.e., does not log)
5210 affected log records. The default 'die' action
9603207d 5211 kills the affected worker. The drop action
fb0c2f17
NH
5212 support has not been tested for modules other
5213 than tcp.
5214
efc23871
AJ
5215 rotate=N Specifies the number of log file rotations to
5216 make when you run 'squid -k rotate'. The default
5217 is to obey the logfile_rotate directive. Setting
5218 rotate=0 will disable the file name rotation,
5219 but the log files are still closed and re-opened.
5220 This will enable you to rename the logfiles
5221 yourself just before sending the rotate signal.
5222 Only supported by the stdio module.
5223
82b7abe3 5224 ===== Modules Currently available =====
9603207d 5225
bb7a1781 5226 none Do not log any requests matching these ACL.
82b7abe3 5227 Do not specify Place or logformat name.
9603207d 5228
82b7abe3
AJ
5229 stdio Write each log line to disk immediately at the completion of
5230 each request.
5231 Place: the filename and path to be written.
9603207d 5232
82b7abe3
AJ
5233 daemon Very similar to stdio. But instead of writing to disk the log
5234 line is passed to a daemon helper for asychronous handling instead.
5235 Place: varies depending on the daemon.
9603207d 5236
82b7abe3 5237 log_file_daemon Place: the file name and path to be written.
9603207d 5238
82b7abe3
AJ
5239 syslog To log each request via syslog facility.
5240 Place: The syslog facility and priority level for these entries.
5241 Place Format: facility.priority
5473c134 5242
82b7abe3
AJ
5243 where facility could be any of:
5244 authpriv, daemon, local0 ... local7 or user.
5473c134 5245
82b7abe3
AJ
5246 And priority could be any of:
5247 err, warning, notice, info, debug.
9603207d 5248
82b7abe3
AJ
5249 udp To send each log line as text data to a UDP receiver.
5250 Place: The destination host name or IP and port.
f4fc8610 5251 Place Format: //host:port
df2eec10 5252
2bf4e8fa 5253 tcp To send each log line as text data to a TCP receiver.
fb0c2f17 5254 Lines may be accumulated before sending (see buffered_logs).
2bf4e8fa 5255 Place: The destination host name or IP and port.
f4fc8610 5256 Place Format: //host:port
df2eec10
AJ
5257
5258 Default:
82b7abe3 5259 access_log daemon:@DEFAULT_ACCESS_LOG@ squid
41bd17a4 5260DOC_END
5473c134 5261
3ff65596
AR
5262NAME: icap_log
5263TYPE: access_log
5264IFDEF: ICAP_CLIENT
5265LOC: Config.Log.icaplogs
5266DEFAULT: none
5267DOC_START
5268 ICAP log files record ICAP transaction summaries, one line per
5269 transaction.
5270
5271 The icap_log option format is:
5272 icap_log <filepath> [<logformat name> [acl acl ...]]
5273 icap_log none [acl acl ...]]
9603207d 5274
3ff65596
AR
5275 Please see access_log option documentation for details. The two
5276 kinds of logs share the overall configuration approach and many
5277 features.
5278
5279 ICAP processing of a single HTTP message or transaction may
5280 require multiple ICAP transactions. In such cases, multiple
5281 ICAP transaction log lines will correspond to a single access
5282 log line.
5283
bd59d61c
EB
5284 ICAP log supports many access.log logformat %codes. In ICAP context,
5285 HTTP message-related %codes are applied to the HTTP message embedded
5286 in an ICAP message. Logformat "%http::>..." codes are used for HTTP
5287 messages embedded in ICAP requests while "%http::<..." codes are used
5288 for HTTP messages embedded in ICAP responses. For example:
5289
5290 http::>h To-be-adapted HTTP message headers sent by Squid to
5291 the ICAP service. For REQMOD transactions, these are
5292 HTTP request headers. For RESPMOD, these are HTTP
5293 response headers, but Squid currently cannot log them
5294 (i.e., %http::>h will expand to "-" for RESPMOD).
5295
5296 http::<h Adapted HTTP message headers sent by the ICAP
5297 service to Squid (i.e., HTTP request headers in regular
5298 REQMOD; HTTP response headers in RESPMOD and during
5299 request satisfaction in REQMOD).
5300
5301 ICAP OPTIONS transactions do not embed HTTP messages.
5302
5303 Several logformat codes below deal with ICAP message bodies. An ICAP
5304 message body, if any, typically includes a complete HTTP message
5305 (required HTTP headers plus optional HTTP message body). When
5306 computing HTTP message body size for these logformat codes, Squid
5307 either includes or excludes chunked encoding overheads; see
5308 code-specific documentation for details.
5309
5310 For Secure ICAP services, all size-related information is currently
5311 computed before/after TLS encryption/decryption, as if TLS was not
5312 in use at all.
3ff65596
AR
5313
5314 The following format codes are also available for ICAP logs:
5315
5316 icap::<A ICAP server IP address. Similar to <A.
5317
5318 icap::<service_name ICAP service name from the icap_service
5319 option in Squid configuration file.
5320
5321 icap::ru ICAP Request-URI. Similar to ru.
5322
9603207d 5323 icap::rm ICAP request method (REQMOD, RESPMOD, or
3ff65596
AR
5324 OPTIONS). Similar to existing rm.
5325
bd59d61c
EB
5326 icap::>st The total size of the ICAP request sent to the ICAP
5327 server (ICAP headers + ICAP body), including chunking
5328 metadata (if any).
3ff65596 5329
bd59d61c
EB
5330 icap::<st The total size of the ICAP response received from the
5331 ICAP server (ICAP headers + ICAP body), including
5332 chunking metadata (if any).
3ff65596 5333
bd59d61c
EB
5334 icap::<bs The size of the ICAP response body received from the
5335 ICAP server, excluding chunking metadata (if any).
bae917ac 5336
3ff65596
AR
5337 icap::tr Transaction response time (in
5338 milliseconds). The timer starts when
5339 the ICAP transaction is created and
5340 stops when the transaction is completed.
5341 Similar to tr.
5342
5343 icap::tio Transaction I/O time (in milliseconds). The
5344 timer starts when the first ICAP request
5345 byte is scheduled for sending. The timers
5346 stops when the last byte of the ICAP response
5347 is received.
5348
5349 icap::to Transaction outcome: ICAP_ERR* for all
5350 transaction errors, ICAP_OPT for OPTION
5351 transactions, ICAP_ECHO for 204
5352 responses, ICAP_MOD for message
5353 modification, and ICAP_SAT for request
5354 satisfaction. Similar to Ss.
5355
5356 icap::Hs ICAP response status code. Similar to Hs.
5357
5358 icap::>h ICAP request header(s). Similar to >h.
5359
5360 icap::<h ICAP response header(s). Similar to <h.
5361
5362 The default ICAP log format, which can be used without an explicit
5363 definition, is called icap_squid:
5364
bd59d61c 5365logformat icap_squid %ts.%03tu %6icap::tr %>A %icap::to/%03icap::Hs %icap::<st %icap::rm %icap::ru %un -/%icap::<A -
3ff65596 5366
bd59d61c 5367 See also: logformat and %adapt::<last_h
3ff65596
AR
5368DOC_END
5369
82b7abe3
AJ
5370NAME: logfile_daemon
5371TYPE: string
5372DEFAULT: @DEFAULT_LOGFILED@
5373LOC: Log::TheConfig.logfile_daemon
5374DOC_START
5375 Specify the path to the logfile-writing daemon. This daemon is
5376 used to write the access and store logs, if configured.
14b24caf
HN
5377
5378 Squid sends a number of commands to the log daemon:
5379 L<data>\n - logfile data
5380 R\n - rotate file
5381 T\n - truncate file
dd68402f 5382 O\n - reopen file
14b24caf
HN
5383 F\n - flush file
5384 r<n>\n - set rotate count to <n>
5385 b<n>\n - 1 = buffer output, 0 = don't buffer output
5386
5387 No responses is expected.
82b7abe3
AJ
5388DOC_END
5389
8ebad780 5390NAME: stats_collection
3ff65596 5391TYPE: acl_access
8ebad780 5392LOC: Config.accessList.stats_collection
3ff65596 5393DEFAULT: none
638402dd 5394DEFAULT_DOC: Allow logging for all transactions.
5b0f5383 5395COMMENT: allow|deny acl acl...
3ff65596 5396DOC_START
8ebad780
CT
5397 This options allows you to control which requests gets accounted
5398 in performance counters.
b3567eb5
FC
5399
5400 This clause only supports fast acl types.
5401 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
3ff65596
AR
5402DOC_END
5403
41bd17a4 5404NAME: cache_store_log
5405TYPE: string
df2eec10 5406DEFAULT: none
41bd17a4 5407LOC: Config.Log.store
5408DOC_START
5409 Logs the activities of the storage manager. Shows which
5410 objects are ejected from the cache, and which objects are
6d1dfcfc 5411 saved and for how long.
df2eec10 5412 There are not really utilities to analyze this data, so you can safely
6d1dfcfc 5413 disable it (the default).
9603207d 5414
6d1dfcfc
AJ
5415 Store log uses modular logging outputs. See access_log for the list
5416 of modules supported.
9603207d 5417
e0855596 5418 Example:
6d1dfcfc
AJ
5419 cache_store_log stdio:@DEFAULT_STORE_LOG@
5420 cache_store_log daemon:@DEFAULT_STORE_LOG@
5473c134 5421DOC_END
5422
41bd17a4 5423NAME: cache_swap_state cache_swap_log
5424TYPE: string
5425LOC: Config.Log.swap
5473c134 5426DEFAULT: none
638402dd 5427DEFAULT_DOC: Store the journal inside its cache_dir
5473c134 5428DOC_START
41bd17a4 5429 Location for the cache "swap.state" file. This index file holds
5430 the metadata of objects saved on disk. It is used to rebuild
5431 the cache during startup. Normally this file resides in each
5432 'cache_dir' directory, but you may specify an alternate
5433 pathname here. Note you must give a full filename, not just
5434 a directory. Since this is the index for the whole object
5435 list you CANNOT periodically rotate it!
5473c134 5436
41bd17a4 5437 If %s can be used in the file name it will be replaced with a
5438 a representation of the cache_dir name where each / is replaced
5439 with '.'. This is needed to allow adding/removing cache_dir
5440 lines when cache_swap_log is being used.
5473c134 5441
41bd17a4 5442 If have more than one 'cache_dir', and %s is not used in the name
5443 these swap logs will have names such as:
5473c134 5444
41bd17a4 5445 cache_swap_log.00
5446 cache_swap_log.01
5447 cache_swap_log.02
5473c134 5448
41bd17a4 5449 The numbered extension (which is added automatically)
5450 corresponds to the order of the 'cache_dir' lines in this
5451 configuration file. If you change the order of the 'cache_dir'
5452 lines in this file, these index files will NOT correspond to
5453 the correct 'cache_dir' entry (unless you manually rename
5454 them). We recommend you do NOT use this option. It is
5455 better to keep these index files in each 'cache_dir' directory.
5473c134 5456DOC_END
5457
41bd17a4 5458NAME: logfile_rotate
5459TYPE: int
5460DEFAULT: 10
5461LOC: Config.Log.rotateNumber
5473c134 5462DOC_START
efc23871 5463 Specifies the default number of logfile rotations to make when you
41bd17a4 5464 type 'squid -k rotate'. The default is 10, which will rotate
5465 with extensions 0 through 9. Setting logfile_rotate to 0 will
5466 disable the file name rotation, but the logfiles are still closed
5467 and re-opened. This will enable you to rename the logfiles
5468 yourself just before sending the rotate signal.
5473c134 5469
efc23871
AJ
5470 Note, from Squid-3.1 this option is only a default for cache.log,
5471 that log can be rotated separately by using debug_options.
5472
66f92ffc 5473 Note, from Squid-4 this option is only a default for access.log
efc23871
AJ
5474 recorded by stdio: module. Those logs can be rotated separately by
5475 using the rotate=N option on their access_log directive.
5476
41bd17a4 5477 Note, the 'squid -k rotate' command normally sends a USR1
5478 signal to the running squid process. In certain situations
5479 (e.g. on Linux with Async I/O), USR1 is used for other
5480 purposes, so -k rotate uses another signal. It is best to get
5481 in the habit of using 'squid -k rotate' instead of 'kill -USR1
5482 <pid>'.
62493678 5483
41bd17a4 5484DOC_END
5473c134 5485
41bd17a4 5486NAME: mime_table
5487TYPE: string
5488DEFAULT: @DEFAULT_MIME_TABLE@
5489LOC: Config.mimeTablePathname
5490DOC_START
638402dd
AJ
5491 Path to Squid's icon configuration file.
5492
5493 You shouldn't need to change this, but the default file contains
5494 examples and formatting information if you do.
5473c134 5495DOC_END
5496
41bd17a4 5497NAME: log_mime_hdrs
5498COMMENT: on|off
5499TYPE: onoff
5500LOC: Config.onoff.log_mime_hdrs
5501DEFAULT: off
5502DOC_START
5503 The Cache can record both the request and the response MIME
5504 headers for each HTTP transaction. The headers are encoded
5505 safely and will appear as two bracketed fields at the end of
5506 the access log (for either the native or httpd-emulated log
5507 formats). To enable this logging set log_mime_hdrs to 'on'.
5508DOC_END
5473c134 5509
41bd17a4 5510NAME: pid_filename
5511TYPE: string
5512DEFAULT: @DEFAULT_PID_FILE@
5513LOC: Config.pidFilename
5473c134 5514DOC_START
41bd17a4 5515 A filename to write the process-id to. To disable, enter "none".
5473c134 5516DOC_END
5517
41bd17a4 5518NAME: client_netmask
5519TYPE: address
5520LOC: Config.Addrs.client_netmask
0eb08770 5521DEFAULT: no_addr
638402dd 5522DEFAULT_DOC: Log full client IP address
5473c134 5523DOC_START
41bd17a4 5524 A netmask for client addresses in logfiles and cachemgr output.
5525 Change this to protect the privacy of your cache clients.
5526 A netmask of 255.255.255.0 will log all IP's in that range with
5527 the last digit set to '0'.
5473c134 5528DOC_END
5529
41bd17a4 5530NAME: strip_query_terms
5473c134 5531TYPE: onoff
41bd17a4 5532LOC: Config.onoff.strip_query_terms
5473c134 5533DEFAULT: on
5534DOC_START
41bd17a4 5535 By default, Squid strips query terms from requested URLs before
638402dd
AJ
5536 logging. This protects your user's privacy and reduces log size.
5537
5538 When investigating HIT/MISS or other caching behaviour you
5539 will need to disable this to see the full URL used by Squid.
5473c134 5540DOC_END
5541
41bd17a4 5542NAME: buffered_logs
5543COMMENT: on|off
5544TYPE: onoff
5545DEFAULT: off
5546LOC: Config.onoff.buffered_logs
5473c134 5547DOC_START
638402dd
AJ
5548 Whether to write/send access_log records ASAP or accumulate them and
5549 then write/send them in larger chunks. Buffering may improve
5550 performance because it decreases the number of I/Os. However,
5551 buffering increases the delay before log records become available to
5552 the final recipient (e.g., a disk file or logging daemon) and,
5553 hence, increases the risk of log records loss.
5554
5555 Note that even when buffered_logs are off, Squid may have to buffer
5556 records if it cannot write/send them immediately due to pending I/Os
5557 (e.g., the I/O writing the previous log record) or connectivity loss.
5558
dc797de0 5559 Currently honored by 'daemon', 'tcp' and 'udp' access_log modules only.
6b698a21 5560DOC_END
0976f8db 5561
2b753521 5562NAME: netdb_filename
5563TYPE: string
221faecb 5564DEFAULT: stdio:@DEFAULT_NETDB_FILE@
2b753521 5565LOC: Config.netdbFilename
fb6a61d1 5566IFDEF: USE_ICMP
2b753521 5567DOC_START
638402dd
AJ
5568 Where Squid stores it's netdb journal.
5569 When enabled this journal preserves netdb state between restarts.
5570
2b753521 5571 To disable, enter "none".
5572DOC_END
5573
e227da8d
AR
5574NAME: tls_key_log
5575TYPE: Security::KeyLog*
5576DEFAULT: none
5577LOC: Config.Log.tlsKeys
5578IFDEF: USE_OPENSSL
5579DOC_START
5580 Configures whether and where Squid records pre-master secret and
5581 related encryption details for TLS connections accepted or established
5582 by Squid. These connections include connections accepted at
5583 https_port, TLS connections opened to origin servers/cache_peers/ICAP
5584 services, and TLS tunnels bumped by Squid using the SslBump feature.
5585 This log (a.k.a. SSLKEYLOGFILE) is meant for triage with traffic
5586 inspection tools like Wireshark.
5587
5588 tls_key_log <destination> [options] [if [!]<acl>...]
5589
5590 WARNING: This log allows anybody to decrypt the corresponding
5591 encrypted TLS connections, both in-flight and postmortem.
5592
5593 At most one log file is supported at this time. Repeated tls_key_log
5594 directives are treated as fatal configuration errors. By default, no
5595 log is created or updated.
5596
5597 If the log file does not exist, Squid creates it. Otherwise, Squid
5598 appends an existing log file.
5599
5600 The directive is consulted whenever a TLS connection is accepted or
5601 established by Squid. TLS connections that fail the handshake may be
5602 logged if Squid got enough information to form a log record. A record
5603 is logged only if all of the configured ACLs match.
5604
5605 While transport-related ACLs like src and dst should work, Squid may
5606 not have access to higher-level information. For example, when logging
5607 accepted https_port connections, Squid does not yet have access to the
5608 expected HTTPS request. Similarly, an HTTPS response is not available
5609 when logging most TLS connections established by Squid.
5610
5611 The log record format is meant to be compatible with TLS deciphering
5612 features of Wireshark which relies on fields like CLIENT_RANDOM and
5613 RSA Master-Key. A single log record usually spans multiple lines.
5614 Technical documentation for that format is maintained inside the
5615 Wireshark code (e.g., see tls_keylog_process_lines() comments as of
5616 Wireshark commit e3d44136f0f0026c5e893fa249f458073f3b7328). TLS key
5617 log does not support custom record formats.
5618
5619 This clause only supports fast acl types.
5620 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
5621
5622 See access_log's <module>:<place> parameter for a list of supported
5623 logging destinations.
5624
5625 TLS key log supports all access_log key=value options with the
5626 exception of logformat=name.
5627
5628 Requires Squid built with OpenSSL support.
5629DOC_END
5630
5631
62493678
AJ
5632COMMENT_START
5633 OPTIONS FOR TROUBLESHOOTING
5634 -----------------------------------------------------------------------------
5635COMMENT_END
5636
5637NAME: cache_log
5638TYPE: string
62493678
AJ
5639DEFAULT_IF_NONE: @DEFAULT_CACHE_LOG@
5640LOC: Debug::cache_log
5641DOC_START
638402dd
AJ
5642 Squid administrative logging file.
5643
5644 This is where general information about Squid behavior goes. You can
5645 increase the amount of data logged to this file and how often it is
5646 rotated with "debug_options"
62493678
AJ
5647DOC_END
5648
c59baaa8
EB
5649NAME: cache_log_message
5650TYPE: cache_log_message
5651DEFAULT: none
5652DEFAULT_DOC: Use debug_options.
9259c796 5653LOC: DebugMessagesConfig
c59baaa8
EB
5654DOC_START
5655 Configures logging of individual cache.log messages.
5656
5657 cache_log_message id=<number> option...
5658 cache_log_message ids=<number>-<number> option...
5659
5660 Most messages have _not_ been instrumented to support this directive
5661 yet. For the list of instrumented messages and their IDs, please see
5662 the doc/debug-messages.txt file.
5663
5664 Message ID corresponds to the message semantics rather than message
5665 text or source code location. The ID is stable across Squid
5666 instances and versions. Substantial changes in message semantics
5667 result in a new ID assignment. To reduce the danger of suppressing
5668 an important log message, the old IDs of removed (or substantially
5669 changed) messages are never reused.
5670
5671 If more than one cache_log_message directive refers to the same
5672 message ID, the last directive wins.
5673
5674 Use ids=min-max syntax to apply the same message configuration to an
5675 inclusive range of message IDs. An ID range with N values has
5676 exactly the same effect as typing N cache_log_message lines.
5677
5678 At least one option is required. Supported options are:
5679
5680 level=<number>: The logging level to use for the message. Squid
5681 command line options (-s and -d) as well as the debug_options
5682 directive control which levels go to syslog, stderr, and/or
5683 cache.log. In most environments, using level=2 or higher stops
5684 Squid from logging the message anywhere. By default, the
5685 hard-coded message-specific level is used.
5686
5687 limit=<number>: After logging the specified number of messages at
5688 the configured (or default) debugging level DL, start using
5689 level 3 (for DL 0 and 1) or 8 (for higher DL values). Usually,
5690 level-3+ messages are not logged anywhere so this option can
5691 often be used to effectively suppress the message. Each SMP
5692 Squid process gets the same limit.
5693DOC_END
5694
62493678
AJ
5695NAME: debug_options
5696TYPE: eol
47df1aa7 5697DEFAULT: ALL,1
638402dd 5698DEFAULT_DOC: Log all critical and important messages.
62493678
AJ
5699LOC: Debug::debugOptions
5700DOC_START
5701 Logging options are set as section,level where each source file
5702 is assigned a unique section. Lower levels result in less
5703 output, Full debugging (level 9) can result in a very large
5704 log file, so be careful.
5705
5706 The magic word "ALL" sets debugging levels for all sections.
638402dd 5707 The default is to run with "ALL,1" to record important warnings.
62493678 5708
47df1aa7
AJ
5709 The rotate=N option can be used to keep more or less of these logs
5710 than would otherwise be kept by logfile_rotate.
62493678
AJ
5711 For most uses a single log should be enough to monitor current
5712 events affecting Squid.
5713DOC_END
5714
5715NAME: coredump_dir
5716TYPE: string
5717LOC: Config.coredump_dir
62493678 5718DEFAULT_IF_NONE: none
638402dd 5719DEFAULT_DOC: Use the directory from where Squid was started.
62493678
AJ
5720DOC_START
5721 By default Squid leaves core files in the directory from where
5722 it was started. If you set 'coredump_dir' to a directory
5723 that exists, Squid will chdir() to that directory at startup
5724 and coredump files will be left there.
5725
321223fe
DC
5726 In addition to changing the directory, the process permissions are updated
5727 to enable process tracing and/or coredump file generation. The details are
5728 OS-specific, but look for prctl(2) PR_SET_DUMPABLE and procctl(2)
5729 PROC_TRACE_CTL documentation as guiding examples.
5730
47f0eaea 5731CONFIG_START
e0855596 5732
62493678
AJ
5733# Leave coredumps in the first cache dir
5734coredump_dir @DEFAULT_SWAP_DIR@
47f0eaea 5735CONFIG_END
62493678
AJ
5736DOC_END
5737
5738
41bd17a4 5739COMMENT_START
5740 OPTIONS FOR FTP GATEWAYING
5741 -----------------------------------------------------------------------------
5742COMMENT_END
5743
5744NAME: ftp_user
5745TYPE: string
5746DEFAULT: Squid@
5747LOC: Config.Ftp.anon_user
6b698a21 5748DOC_START
41bd17a4 5749 If you want the anonymous login password to be more informative
638402dd 5750 (and enable the use of picky FTP servers), set this to something
41bd17a4 5751 reasonable for your domain, like wwwuser@somewhere.net
7f7db318 5752
41bd17a4 5753 The reason why this is domainless by default is the
5754 request can be made on the behalf of a user in any domain,
5755 depending on how the cache is used.
638402dd 5756 Some FTP server also validate the email address is valid
41bd17a4 5757 (for example perl.com).
6b698a21 5758DOC_END
0976f8db 5759
41bd17a4 5760NAME: ftp_passive
5761TYPE: onoff
5762DEFAULT: on
5763LOC: Config.Ftp.passive
6b698a21 5764DOC_START
41bd17a4 5765 If your firewall does not allow Squid to use passive
5766 connections, turn off this option.
a689bd4e 5767
5768 Use of ftp_epsv_all option requires this to be ON.
5769DOC_END
5770
5771NAME: ftp_epsv_all
5772TYPE: onoff
5773DEFAULT: off
5774LOC: Config.Ftp.epsv_all
5775DOC_START
5776 FTP Protocol extensions permit the use of a special "EPSV ALL" command.
5777
5778 NATs may be able to put the connection on a "fast path" through the
5779 translator, as the EPRT command will never be used and therefore,
5780 translation of the data portion of the segments will never be needed.
5781
b3567eb5
FC
5782 When a client only expects to do two-way FTP transfers this may be
5783 useful.
a689bd4e 5784 If squid finds that it must do a three-way FTP transfer after issuing
5785 an EPSV ALL command, the FTP session will fail.
5786
5787 If you have any doubts about this option do not use it.
5788 Squid will nicely attempt all other connection methods.
5789
51ee534d
AJ
5790 Requires ftp_passive to be ON (default) for any effect.
5791DOC_END
5792
5793NAME: ftp_epsv
ddf5aa2b
CT
5794TYPE: ftp_epsv
5795DEFAULT: none
5796LOC: Config.accessList.ftp_epsv
51ee534d
AJ
5797DOC_START
5798 FTP Protocol extensions permit the use of a special "EPSV" command.
5799
5800 NATs may be able to put the connection on a "fast path" through the
b3567eb5 5801 translator using EPSV, as the EPRT command will never be used
9603207d 5802 and therefore, translation of the data portion of the segments
b3567eb5 5803 will never be needed.
51ee534d 5804
ddf5aa2b
CT
5805 EPSV is often required to interoperate with FTP servers on IPv6
5806 networks. On the other hand, it may break some IPv4 servers.
5807
5808 By default, EPSV may try EPSV with any FTP server. To fine tune
5809 that decision, you may restrict EPSV to certain clients or servers
5810 using ACLs:
5811
5812 ftp_epsv allow|deny al1 acl2 ...
5813
5814 WARNING: Disabling EPSV may cause problems with external NAT and IPv6.
51ee534d 5815
ddf5aa2b 5816 Only fast ACLs are supported.
51ee534d 5817 Requires ftp_passive to be ON (default) for any effect.
41bd17a4 5818DOC_END
9e7dbc51 5819
63ee5443
AJ
5820NAME: ftp_eprt
5821TYPE: onoff
5822DEFAULT: on
5823LOC: Config.Ftp.eprt
5824DOC_START
5825 FTP Protocol extensions permit the use of a special "EPRT" command.
5826
5827 This extension provides a protocol neutral alternative to the
5828 IPv4-only PORT command. When supported it enables active FTP data
5829 channels over IPv6 and efficient NAT handling.
5830
5831 Turning this OFF will prevent EPRT being attempted and will skip
5832 straight to using PORT for IPv4 servers.
5833
5834 Some devices are known to not handle this extension correctly and
2f8abb64 5835 may result in crashes. Devices which support EPRT enough to fail
63ee5443
AJ
5836 cleanly will result in Squid attempting PORT anyway. This directive
5837 should only be disabled when EPRT results in device failures.
5838
5839 WARNING: Doing so will convert Squid back to the old behavior with all
5840 the related problems with external NAT devices/layers and IPv4-only FTP.
5841DOC_END
5842
41bd17a4 5843NAME: ftp_sanitycheck
5844TYPE: onoff
5845DEFAULT: on
5846LOC: Config.Ftp.sanitycheck
5847DOC_START
5848 For security and data integrity reasons Squid by default performs
5849 sanity checks of the addresses of FTP data connections ensure the
5850 data connection is to the requested server. If you need to allow
5851 FTP connections to servers using another IP address for the data
5852 connection turn this off.
5853DOC_END
9e7dbc51 5854
41bd17a4 5855NAME: ftp_telnet_protocol
5856TYPE: onoff
5857DEFAULT: on
5858LOC: Config.Ftp.telnet
5859DOC_START
5860 The FTP protocol is officially defined to use the telnet protocol
5861 as transport channel for the control connection. However, many
5862 implementations are broken and does not respect this aspect of
5863 the FTP protocol.
5864
5865 If you have trouble accessing files with ASCII code 255 in the
5866 path or similar problems involving this ASCII code you can
5867 try setting this directive to off. If that helps, report to the
5868 operator of the FTP server in question that their FTP server
5869 is broken and does not follow the FTP standard.
5870DOC_END
5871
5872COMMENT_START
5873 OPTIONS FOR EXTERNAL SUPPORT PROGRAMS
5874 -----------------------------------------------------------------------------
5875COMMENT_END
5876
5877NAME: diskd_program
5878TYPE: string
5879DEFAULT: @DEFAULT_DISKD@
5880LOC: Config.Program.diskd
5881DOC_START
5882 Specify the location of the diskd executable.
5883 Note this is only useful if you have compiled in
5884 diskd as one of the store io modules.
5885DOC_END
5886
5887NAME: unlinkd_program
5888IFDEF: USE_UNLINKD
5889TYPE: string
5890DEFAULT: @DEFAULT_UNLINKD@
5891LOC: Config.Program.unlinkd
5892DOC_START
5893 Specify the location of the executable for file deletion process.
5894DOC_END
5895
5896NAME: pinger_program
41bd17a4 5897IFDEF: USE_ICMP
7a9d36e3
AJ
5898TYPE: icmp
5899DEFAULT: @DEFAULT_PINGER@
5900LOC: IcmpCfg
41bd17a4 5901DOC_START
5902 Specify the location of the executable for the pinger process.
5903DOC_END
5904
cc192b50 5905NAME: pinger_enable
5906TYPE: onoff
5907DEFAULT: on
7a9d36e3 5908LOC: IcmpCfg.enable
cc192b50 5909IFDEF: USE_ICMP
5910DOC_START
5911 Control whether the pinger is active at run-time.
b3567eb5
FC
5912 Enables turning ICMP pinger on and off with a simple
5913 squid -k reconfigure.
cc192b50 5914DOC_END
5915
5916
41bd17a4 5917COMMENT_START
5918 OPTIONS FOR URL REWRITING
5919 -----------------------------------------------------------------------------
5920COMMENT_END
5921
5922NAME: url_rewrite_program redirect_program
5923TYPE: wordlist
5924LOC: Config.Program.redirect
5925DEFAULT: none
5926DOC_START
32f90fcf
PSB
5927 The name and command line parameters of an admin-provided executable
5928 for redirecting clients or adjusting/replacing client request URLs.
41bd17a4 5929
32f90fcf
PSB
5930 This helper is consulted after the received request is cleared by
5931 http_access and adapted using eICAP/ICAP services (if any). If the
5932 helper does not redirect the client, Squid checks adapted_http_access
5933 and may consult the cache or forward the request to the next hop.
41bd17a4 5934
5269ec0e 5935
32f90fcf 5936 For each request, the helper gets one line in the following format:
5269ec0e 5937
32f90fcf 5938 [channel-ID <SP>] request-URL [<SP> extras] <NL>
5269ec0e 5939
32f90fcf 5940 Use url_rewrite_extras to configure what Squid sends as 'extras'.
5269ec0e 5941
32f90fcf
PSB
5942
5943 The helper must reply to each query using a single line:
5944
5945 [channel-ID <SP>] result [<SP> kv-pairs] <NL>
5946
5947 The result section must match exactly one of the following outcomes:
5948
5949 OK [status=30N] url="..."
5950
5951 Redirect the client to a URL supplied in the 'url' parameter.
5952 Optional 'status' specifies the status code to send to the
5953 client in Squid's HTTP redirect response. It must be one of
5954 the standard HTTP redirect status codes: 301, 302, 303, 307,
5955 or 308. When no specific status is requested, Squid uses 302.
c71adec1 5956
5269ec0e 5957 OK rewrite-url="..."
32f90fcf
PSB
5958
5959 Replace the current request URL with the one supplied in the
5960 'rewrite-url' parameter. Squid fetches the resource specified
5961 by the new URL and forwards the received response (or its
5962 cached copy) to the client.
5963
5964 WARNING: Avoid rewriting URLs! When possible, redirect the
5965 client using an "OK url=..." helper response instead.
5966 Rewriting URLs may create inconsistent requests and/or break
5967 synchronization between internal client and origin server
5968 states, especially when URLs or other message parts contain
5969 snippets of that state. For example, Squid does not adjust
5970 Location headers and embedded URLs after the helper rewrites
5971 the request URL.
5269ec0e 5972
c2cbbb02 5973 OK
32f90fcf 5974 Keep the client request intact.
c2cbbb02 5975
5269ec0e 5976 ERR
32f90fcf 5977 Keep the client request intact.
5269ec0e 5978
32f90fcf
PSB
5979 BH [message="..."]
5980 A helper problem that should be reported to the Squid admin
5981 via a level-1 cache.log message. The 'message' parameter is
5982 reserved for specifying the log message.
5269ec0e 5983
32f90fcf
PSB
5984 In addition to the kv-pairs mentioned above, Squid also understands
5985 the following optional kv-pairs in URL rewriter responses:
5269ec0e 5986
457857fe
CT
5987 clt_conn_tag=TAG
5988 Associates a TAG with the client TCP connection.
41bd17a4 5989
32f90fcf
PSB
5990 The clt_conn_tag=TAG pair is treated as a regular transaction
5991 annotation for the current request and also annotates future
5992 requests on the same client connection. A helper may update
5993 the TAG during subsequent requests by returning a new kv-pair.
5269ec0e 5994
41bd17a4 5995
32f90fcf
PSB
5996 Helper messages contain the channel-ID part if and only if the
5997 url_rewrite_children directive specifies positive concurrency. As a
5998 channel-ID value, Squid sends a number between 0 and concurrency-1.
5999 The helper must echo back the received channel-ID in its response.
41bd17a4 6000
32f90fcf 6001 By default, Squid does not use a URL rewriter.
41bd17a4 6002DOC_END
6003
6004NAME: url_rewrite_children redirect_children
48d54e4d 6005TYPE: HelperChildConfig
5b708d95 6006DEFAULT: 20 startup=0 idle=1 concurrency=0
41bd17a4 6007LOC: Config.redirectChildren
6008DOC_START
79933cd6
AR
6009 Specifies the maximum number of redirector processes that Squid may
6010 spawn (numberofchildren) and several related options. Using too few of
6011 these helper processes (a.k.a. "helpers") creates request queues.
6012 Using too many helpers wastes your system resources.
6013
6014 Usage: numberofchildren [option]...
6015
48d54e4d
AJ
6016 The startup= and idle= options allow some measure of skew in your
6017 tuning.
9603207d 6018
48d54e4d 6019 startup=
9603207d 6020
48d54e4d
AJ
6021 Sets a minimum of how many processes are to be spawned when Squid
6022 starts or reconfigures. When set to zero the first request will
6023 cause spawning of the first child process to handle it.
9603207d 6024
48d54e4d
AJ
6025 Starting too few will cause an initial slowdown in traffic as Squid
6026 attempts to simultaneously spawn enough processes to cope.
9603207d 6027
48d54e4d 6028 idle=
9603207d 6029
48d54e4d
AJ
6030 Sets a minimum of how many processes Squid is to try and keep available
6031 at all times. When traffic begins to rise above what the existing
6032 processes can handle this many more will be spawned up to the maximum
6033 configured. A minimum setting of 1 is required.
6034
6035 concurrency=
41bd17a4 6036
41bd17a4 6037 The number of requests each redirector helper can handle in
6038 parallel. Defaults to 0 which indicates the redirector
6039 is a old-style single threaded redirector.
6a171502
AJ
6040
6041 When this directive is set to a value >= 1 then the protocol
6042 used to communicate with the helper is modified to include
9bef05b1
AJ
6043 an ID in front of the request/response. The ID from the request
6044 must be echoed back with the response to that request.
6825b101
CT
6045
6046 queue-size=N
6047
79933cd6
AR
6048 Sets the maximum number of queued requests. A request is queued when
6049 no existing child can accept it due to concurrency limit and no new
6050 child can be started due to numberofchildren limit. The default
6051 maximum is zero if url_rewrite_bypass is enabled and
6052 2*numberofchildren otherwise. If the queued requests exceed queue size
6053 and redirector_bypass configuration option is set, then redirector is
6054 bypassed. Otherwise, Squid is allowed to temporarily exceed the
6055 configured maximum, marking the affected helper as "overloaded". If
6056 the helper overload lasts more than 3 minutes, the action prescribed
6057 by the on-persistent-overload option applies.
6082a0e2
EB
6058
6059 on-persistent-overload=action
6060
6061 Specifies Squid reaction to a new helper request arriving when the helper
6062 has been overloaded for more that 3 minutes already. The number of queued
6063 requests determines whether the helper is overloaded (see the queue-size
6064 option).
6065
6066 Two actions are supported:
6067
6068 die Squid worker quits. This is the default behavior.
6069
6070 ERR Squid treats the helper request as if it was
6071 immediately submitted, and the helper immediately
6072 replied with an ERR response. This action has no effect
6073 on the already queued and in-progress helper requests.
41bd17a4 6074DOC_END
6075
6076NAME: url_rewrite_host_header redirect_rewrites_host_header
6077TYPE: onoff
6078DEFAULT: on
6079LOC: Config.onoff.redir_rewrites_host
6080DOC_START
3ce33807
AJ
6081 To preserve same-origin security policies in browsers and
6082 prevent Host: header forgery by redirectors Squid rewrites
6083 any Host: header in redirected requests.
9603207d 6084
3ce33807
AJ
6085 If you are running an accelerator this may not be a wanted
6086 effect of a redirector. This directive enables you disable
6087 Host: alteration in reverse-proxy traffic.
9603207d 6088
41bd17a4 6089 WARNING: Entries are cached on the result of the URL rewriting
6090 process, so be careful if you have domain-virtual hosts.
9603207d 6091
3ce33807
AJ
6092 WARNING: Squid and other software verifies the URL and Host
6093 are matching, so be careful not to relay through other proxies
6094 or inspecting firewalls with this disabled.
41bd17a4 6095DOC_END
6096
6097NAME: url_rewrite_access redirector_access
6098TYPE: acl_access
6099DEFAULT: none
638402dd 6100DEFAULT_DOC: Allow, unless rules exist in squid.conf.
41bd17a4 6101LOC: Config.accessList.redirector
6102DOC_START
6103 If defined, this access list specifies which requests are
638402dd 6104 sent to the redirector processes.
b3567eb5
FC
6105
6106 This clause supports both fast and slow acl types.
6107 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
41bd17a4 6108DOC_END
6109
6110NAME: url_rewrite_bypass redirector_bypass
6111TYPE: onoff
6112LOC: Config.onoff.redirector_bypass
6113DEFAULT: off
6114DOC_START
6115 When this is 'on', a request will not go through the
6082a0e2
EB
6116 redirector if all the helpers are busy. If this is 'off' and the
6117 redirector queue grows too large, the action is prescribed by the
6118 on-persistent-overload option. You should only enable this if the
6119 redirectors are not critical to your caching system. If you use
41bd17a4 6120 redirectors for access control, and you enable this option,
6121 users may have access to pages they should not
6122 be allowed to request.
79933cd6
AR
6123
6124 Enabling this option sets the default url_rewrite_children queue-size
6125 option value to 0.
41bd17a4 6126DOC_END
6127
fe7966ec 6128NAME: url_rewrite_extras
b11724bb
CT
6129TYPE: TokenOrQuotedString
6130LOC: Config.redirector_extras
6131DEFAULT: "%>a/%>A %un %>rm myip=%la myport=%lp"
6132DOC_START
6133 Specifies a string to be append to request line format for the
6134 rewriter helper. "Quoted" format values may contain spaces and
6135 logformat %macros. In theory, any logformat %macro can be used.
6136 In practice, a %macro expands as a dash (-) if the helper request is
6137 sent before the required macro information is available to Squid.
6138DOC_END
6139
32fd6d8a 6140NAME: url_rewrite_timeout
ced8def3
AJ
6141TYPE: UrlHelperTimeout
6142LOC: Config.onUrlRewriteTimeout
32fd6d8a
CT
6143DEFAULT: none
6144DEFAULT_DOC: Squid waits for the helper response forever
6145DOC_START
6146 Squid times active requests to redirector. The timeout value and Squid
6147 reaction to a timed out request are configurable using the following
6148 format:
6149
ced8def3 6150 url_rewrite_timeout timeout time-units on_timeout=<action> [response=<quoted-response>]
32fd6d8a
CT
6151
6152 supported timeout actions:
ced8def3 6153 fail Squid return a ERR_GATEWAY_FAILURE error page
32fd6d8a 6154
ced8def3 6155 bypass Do not re-write the URL
32fd6d8a 6156
ced8def3 6157 retry Send the lookup to the helper again
32fd6d8a 6158
ced8def3
AJ
6159 use_configured_response
6160 Use the <quoted-response> as helper response
32fd6d8a
CT
6161DOC_END
6162
a8a0b1c2
EC
6163COMMENT_START
6164 OPTIONS FOR STORE ID
6165 -----------------------------------------------------------------------------
6166COMMENT_END
6167
6168NAME: store_id_program storeurl_rewrite_program
6169TYPE: wordlist
6170LOC: Config.Program.store_id
6171DEFAULT: none
6172DOC_START
6173 Specify the location of the executable StoreID helper to use.
6174 Since they can perform almost any function there isn't one included.
6175
6176 For each requested URL, the helper will receive one line with the format
6177
b11724bb 6178 [channel-ID <SP>] URL [<SP> extras]<NL>
a8a0b1c2
EC
6179
6180
6181 After processing the request the helper must reply using the following format:
6182
6183 [channel-ID <SP>] result [<SP> kv-pairs]
6184
6185 The result code can be:
6186
6187 OK store-id="..."
6188 Use the StoreID supplied in 'store-id='.
6189
6190 ERR
6191 The default is to use HTTP request URL as the store ID.
6192
6193 BH
61beade2 6194 An internal error occurred in the helper, preventing
a8a0b1c2
EC
6195 a result being identified.
6196
457857fe
CT
6197 In addition to the above kv-pairs Squid also understands the following
6198 optional kv-pairs received from URL rewriters:
6199 clt_conn_tag=TAG
6200 Associates a TAG with the client TCP connection.
6201 Please see url_rewrite_program related documentation for this
6202 kv-pair
a8a0b1c2 6203
b11724bb
CT
6204 Helper programs should be prepared to receive and possibly ignore
6205 additional whitespace-separated tokens on each input line.
a8a0b1c2
EC
6206
6207 When using the concurrency= option the protocol is changed by
6208 introducing a query channel tag in front of the request/response.
6209 The query channel tag is a number between 0 and concurrency-1.
6210 This value must be echoed back unchanged to Squid as the first part
6211 of the response relating to its request.
6212
6213 NOTE: when using StoreID refresh_pattern will apply to the StoreID
6214 returned from the helper and not the URL.
6215
6216 WARNING: Wrong StoreID value returned by a careless helper may result
6217 in the wrong cached response returned to the user.
6218
6219 By default, a StoreID helper is not used.
6220DOC_END
6221
fe7966ec 6222NAME: store_id_extras
b11724bb
CT
6223TYPE: TokenOrQuotedString
6224LOC: Config.storeId_extras
6225DEFAULT: "%>a/%>A %un %>rm myip=%la myport=%lp"
6226DOC_START
6227 Specifies a string to be append to request line format for the
6228 StoreId helper. "Quoted" format values may contain spaces and
6229 logformat %macros. In theory, any logformat %macro can be used.
6230 In practice, a %macro expands as a dash (-) if the helper request is
6231 sent before the required macro information is available to Squid.
6232DOC_END
6233
a8a0b1c2
EC
6234NAME: store_id_children storeurl_rewrite_children
6235TYPE: HelperChildConfig
6236DEFAULT: 20 startup=0 idle=1 concurrency=0
6237LOC: Config.storeIdChildren
6238DOC_START
79933cd6
AR
6239 Specifies the maximum number of StoreID helper processes that Squid
6240 may spawn (numberofchildren) and several related options. Using
6241 too few of these helper processes (a.k.a. "helpers") creates request
6242 queues. Using too many helpers wastes your system resources.
6243
6244 Usage: numberofchildren [option]...
9603207d 6245
a8a0b1c2
EC
6246 The startup= and idle= options allow some measure of skew in your
6247 tuning.
9603207d 6248
a8a0b1c2 6249 startup=
9603207d 6250
a8a0b1c2
EC
6251 Sets a minimum of how many processes are to be spawned when Squid
6252 starts or reconfigures. When set to zero the first request will
6253 cause spawning of the first child process to handle it.
9603207d 6254
a8a0b1c2
EC
6255 Starting too few will cause an initial slowdown in traffic as Squid
6256 attempts to simultaneously spawn enough processes to cope.
9603207d 6257
a8a0b1c2 6258 idle=
9603207d 6259
a8a0b1c2
EC
6260 Sets a minimum of how many processes Squid is to try and keep available
6261 at all times. When traffic begins to rise above what the existing
6262 processes can handle this many more will be spawned up to the maximum
6263 configured. A minimum setting of 1 is required.
6264
6265 concurrency=
6266
6267 The number of requests each storeID helper can handle in
6268 parallel. Defaults to 0 which indicates the helper
6269 is a old-style single threaded program.
6270
6271 When this directive is set to a value >= 1 then the protocol
6272 used to communicate with the helper is modified to include
6273 an ID in front of the request/response. The ID from the request
6274 must be echoed back with the response to that request.
6825b101
CT
6275
6276 queue-size=N
6277
79933cd6
AR
6278 Sets the maximum number of queued requests to N. A request is queued
6279 when no existing child can accept it due to concurrency limit and no
6280 new child can be started due to numberofchildren limit. The default
6281 maximum is 2*numberofchildren. If the queued requests exceed queue
6282 size and redirector_bypass configuration option is set, then
6283 redirector is bypassed. Otherwise, Squid is allowed to temporarily
6284 exceed the configured maximum, marking the affected helper as
6285 "overloaded". If the helper overload lasts more than 3 minutes, the
6286 action prescribed by the on-persistent-overload option applies.
6082a0e2
EB
6287
6288 on-persistent-overload=action
6289
6290 Specifies Squid reaction to a new helper request arriving when the helper
6291 has been overloaded for more that 3 minutes already. The number of queued
6292 requests determines whether the helper is overloaded (see the queue-size
6293 option).
6294
6295 Two actions are supported:
6296
6297 die Squid worker quits. This is the default behavior.
6298
6299 ERR Squid treats the helper request as if it was
6300 immediately submitted, and the helper immediately
6301 replied with an ERR response. This action has no effect
6302 on the already queued and in-progress helper requests.
a8a0b1c2
EC
6303DOC_END
6304
6305NAME: store_id_access storeurl_rewrite_access
6306TYPE: acl_access
6307DEFAULT: none
638402dd 6308DEFAULT_DOC: Allow, unless rules exist in squid.conf.
a8a0b1c2
EC
6309LOC: Config.accessList.store_id
6310DOC_START
6311 If defined, this access list specifies which requests are
6312 sent to the StoreID processes. By default all requests
6313 are sent.
6314
6315 This clause supports both fast and slow acl types.
6316 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
6317DOC_END
6318
6319NAME: store_id_bypass storeurl_rewrite_bypass
6320TYPE: onoff
6321LOC: Config.onoff.store_id_bypass
6322DEFAULT: on
6323DOC_START
6324 When this is 'on', a request will not go through the
6082a0e2
EB
6325 helper if all helpers are busy. If this is 'off' and the helper
6326 queue grows too large, the action is prescribed by the
6327 on-persistent-overload option. You should only enable this if the
6328 helpers are not critical to your caching system. If you use
9603207d 6329 helpers for critical caching components, and you enable this
a8a0b1c2 6330 option, users may not get objects from cache.
6825b101
CT
6331 This options sets default queue-size option of the store_id_children
6332 to 0.
a8a0b1c2
EC
6333DOC_END
6334
41bd17a4 6335COMMENT_START
6336 OPTIONS FOR TUNING THE CACHE
6337 -----------------------------------------------------------------------------
6338COMMENT_END
6339
f04b37d8 6340NAME: cache no_cache
6341TYPE: acl_access
6342DEFAULT: none
70706149 6343DEFAULT_DOC: By default, this directive is unused and has no effect.
f04b37d8 6344LOC: Config.accessList.noCache
41bd17a4 6345DOC_START
70706149
AR
6346 Requests denied by this directive will not be served from the cache
6347 and their responses will not be stored in the cache. This directive
6348 has no effect on other transactions and on already cached responses.
f04b37d8 6349
b3567eb5
FC
6350 This clause supports both fast and slow acl types.
6351 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
70706149
AR
6352
6353 This and the two other similar caching directives listed below are
6354 checked at different transaction processing stages, have different
6355 access to response information, affect different cache operations,
6356 and differ in slow ACLs support:
6357
6358 * cache: Checked before Squid makes a hit/miss determination.
6359 No access to reply information!
6360 Denies both serving a hit and storing a miss.
6361 Supports both fast and slow ACLs.
6362 * send_hit: Checked after a hit was detected.
6363 Has access to reply (hit) information.
6364 Denies serving a hit only.
6365 Supports fast ACLs only.
6366 * store_miss: Checked before storing a cachable miss.
6367 Has access to reply (miss) information.
6368 Denies storing a miss only.
6369 Supports fast ACLs only.
6370
6371 If you are not sure which of the three directives to use, apply the
6372 following decision logic:
6373
6374 * If your ACL(s) are of slow type _and_ need response info, redesign.
6375 Squid does not support that particular combination at this time.
6376 Otherwise:
6377 * If your directive ACL(s) are of slow type, use "cache"; and/or
6378 * if your directive ACL(s) need no response info, use "cache".
6379 Otherwise:
6380 * If you do not want the response cached, use store_miss; and/or
6381 * if you do not want a hit on a cached response, use send_hit.
6382DOC_END
6383
6384NAME: send_hit
6385TYPE: acl_access
6386DEFAULT: none
6387DEFAULT_DOC: By default, this directive is unused and has no effect.
6388LOC: Config.accessList.sendHit
6389DOC_START
6390 Responses denied by this directive will not be served from the cache
6391 (but may still be cached, see store_miss). This directive has no
6392 effect on the responses it allows and on the cached objects.
6393
6394 Please see the "cache" directive for a summary of differences among
6395 store_miss, send_hit, and cache directives.
6396
6397 Unlike the "cache" directive, send_hit only supports fast acl
6398 types. See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
6399
6400 For example:
6401
6402 # apply custom Store ID mapping to some URLs
6403 acl MapMe dstdomain .c.example.com
6404 store_id_program ...
6405 store_id_access allow MapMe
6406
6407 # but prevent caching of special responses
6408 # such as 302 redirects that cause StoreID loops
6409 acl Ordinary http_status 200-299
6410 store_miss deny MapMe !Ordinary
6411
6412 # and do not serve any previously stored special responses
6413 # from the cache (in case they were already cached before
6414 # the above store_miss rule was in effect).
6415 send_hit deny MapMe !Ordinary
6416DOC_END
6417
6418NAME: store_miss
6419TYPE: acl_access
6420DEFAULT: none
6421DEFAULT_DOC: By default, this directive is unused and has no effect.
6422LOC: Config.accessList.storeMiss
6423DOC_START
6424 Responses denied by this directive will not be cached (but may still
6425 be served from the cache, see send_hit). This directive has no
6426 effect on the responses it allows and on the already cached responses.
6427
6428 Please see the "cache" directive for a summary of differences among
6429 store_miss, send_hit, and cache directives. See the
6430 send_hit directive for a usage example.
6431
6432 Unlike the "cache" directive, store_miss only supports fast acl
6433 types. See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
41bd17a4 6434DOC_END
6435
570d3f75
AJ
6436NAME: max_stale
6437COMMENT: time-units
6438TYPE: time_t
6439LOC: Config.maxStale
6440DEFAULT: 1 week
6441DOC_START
6442 This option puts an upper limit on how stale content Squid
6443 will serve from the cache if cache validation fails.
2f8abb64 6444 Can be overridden by the refresh_pattern max-stale option.
570d3f75
AJ
6445DOC_END
6446
41bd17a4 6447NAME: refresh_pattern
6448TYPE: refreshpattern
6449LOC: Config.Refresh
6450DEFAULT: none
6451DOC_START
6452 usage: refresh_pattern [-i] regex min percent max [options]
9e7dbc51 6453
6b698a21 6454 By default, regular expressions are CASE-SENSITIVE. To make
6455 them case-insensitive, use the -i option.
9e7dbc51 6456
41bd17a4 6457 'Min' is the time (in minutes) an object without an explicit
6458 expiry time should be considered fresh. The recommended
6459 value is 0, any higher values may cause dynamic applications
6460 to be erroneously cached unless the application designer
6461 has taken the appropriate actions.
9e7dbc51 6462
0a3427b8
AJ
6463 'Percent' is used to compute the max-age value for responses
6464 with a Last-Modified header and no Cache-Control:max-age nor Expires.
6465 Cache-Control:max-age = ( Date - Last-Modified ) * percent
5b807763 6466
41bd17a4 6467 'Max' is an upper limit on how long objects without an explicit
6d612a9d
GD
6468 expiry time will be considered fresh. The value is also used
6469 to form Cache-Control: max-age header for a request sent from
6470 Squid to origin/parent.
9e7dbc51 6471
41bd17a4 6472 options: override-expire
6473 override-lastmod
6474 reload-into-ims
6475 ignore-reload
41bd17a4 6476 ignore-no-store
6477 ignore-private
570d3f75 6478 max-stale=NN
41bd17a4 6479 refresh-ims
3d8b6ba4 6480 store-stale
a0ec9f68 6481
41bd17a4 6482 override-expire enforces min age even if the server
9b2ad080
HN
6483 sent an explicit expiry time (e.g., with the
6484 Expires: header or Cache-Control: max-age). Doing this
6485 VIOLATES the HTTP standard. Enabling this feature
6486 could make you liable for problems which it causes.
6468fe10 6487
04925576
AJ
6488 Note: override-expire does not enforce staleness - it only extends
6489 freshness / min. If the server returns a Expires time which
6490 is longer than your max time, Squid will still consider
6491 the object fresh for that period of time.
6492
41bd17a4 6493 override-lastmod enforces min age even on objects
6494 that were modified recently.
934b03fc 6495
46017fdd
CT
6496 reload-into-ims changes a client no-cache or ``reload''
6497 request for a cached entry into a conditional request using
6498 If-Modified-Since and/or If-None-Match headers, provided the
6499 cached entry has a Last-Modified and/or a strong ETag header.
6500 Doing this VIOLATES the HTTP standard. Enabling this feature
6501 could make you liable for problems which it causes.
dba79ac5 6502
41bd17a4 6503 ignore-reload ignores a client no-cache or ``reload''
6504 header. Doing this VIOLATES the HTTP standard. Enabling
6505 this feature could make you liable for problems which
6506 it causes.
9bc73deb 6507
41bd17a4 6508 ignore-no-store ignores any ``Cache-control: no-store''
6509 headers received from a server. Doing this VIOLATES
6510 the HTTP standard. Enabling this feature could make you
6511 liable for problems which it causes.
6512
6513 ignore-private ignores any ``Cache-control: private''
6514 headers received from a server. Doing this VIOLATES
6515 the HTTP standard. Enabling this feature could make you
6516 liable for problems which it causes.
6517
41bd17a4 6518 refresh-ims causes squid to contact the origin server
6519 when a client issues an If-Modified-Since request. This
6520 ensures that the client will receive an updated version
6521 if one is available.
6522
9603207d 6523 store-stale stores responses even if they don't have explicit
6524 freshness or a validator (i.e., Last-Modified or an ETag)
6525 present, or if they're already stale. By default, Squid will
3d8b6ba4
AJ
6526 not cache such responses because they usually can't be
6527 reused. Note that such responses will be stale by default.
6528
570d3f75
AJ
6529 max-stale=NN provide a maximum staleness factor. Squid won't
6530 serve objects more stale than this even if it failed to
6531 validate the object. Default: use the max_stale global limit.
6532
41bd17a4 6533 Basically a cached object is:
6534
fb41bbb2 6535 FRESH if expire > now, else STALE
41bd17a4 6536 STALE if age > max
6537 FRESH if lm-factor < percent, else STALE
6538 FRESH if age < min
6539 else STALE
6540
6541 The refresh_pattern lines are checked in the order listed here.
6542 The first entry which matches is used. If none of the entries
6543 match the default will be used.
6544
6545 Note, you must uncomment all the default lines if you want
6546 to change one. The default setting is only active if none is
6547 used.
6548
47f0eaea 6549CONFIG_START
e0855596 6550
638402dd 6551#
e0855596 6552# Add any of your own refresh_pattern entries above these.
638402dd 6553#
41bd17a4 6554refresh_pattern ^ftp: 1440 20% 10080
89db45fa 6555refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
41bd17a4 6556refresh_pattern . 0 20% 4320
47f0eaea 6557CONFIG_END
41bd17a4 6558DOC_END
6559
6560NAME: quick_abort_min
6561COMMENT: (KB)
6562TYPE: kb_int64_t
6563DEFAULT: 16 KB
6564LOC: Config.quickAbort.min
6565DOC_NONE
6566
6567NAME: quick_abort_max
6568COMMENT: (KB)
6569TYPE: kb_int64_t
6570DEFAULT: 16 KB
6571LOC: Config.quickAbort.max
6572DOC_NONE
6573
6574NAME: quick_abort_pct
6575COMMENT: (percent)
6576TYPE: int
6577DEFAULT: 95
6578LOC: Config.quickAbort.pct
6579DOC_START
6580 The cache by default continues downloading aborted requests
6581 which are almost completed (less than 16 KB remaining). This
6582 may be undesirable on slow (e.g. SLIP) links and/or very busy
6583 caches. Impatient users may tie up file descriptors and
6584 bandwidth by repeatedly requesting and immediately aborting
6585 downloads.
6586
6587 When the user aborts a request, Squid will check the
2d4eefd9 6588 quick_abort values to the amount of data transferred until
41bd17a4 6589 then.
6590
6591 If the transfer has less than 'quick_abort_min' KB remaining,
6592 it will finish the retrieval.
6593
6594 If the transfer has more than 'quick_abort_max' KB remaining,
6595 it will abort the retrieval.
6596
6597 If more than 'quick_abort_pct' of the transfer has completed,
6598 it will finish the retrieval.
6599
6600 If you do not want any retrieval to continue after the client
6601 has aborted, set both 'quick_abort_min' and 'quick_abort_max'
6602 to '0 KB'.
6603
6604 If you want retrievals to always continue if they are being
6605 cached set 'quick_abort_min' to '-1 KB'.
6606DOC_END
60d096f4 6607
41bd17a4 6608NAME: read_ahead_gap
6609COMMENT: buffer-size
6610TYPE: b_int64_t
6611LOC: Config.readAheadGap
6612DEFAULT: 16 KB
6613DOC_START
6614 The amount of data the cache will buffer ahead of what has been
6615 sent to the client when retrieving an object from another server.
6616DOC_END
53e738c6 6617
41bd17a4 6618NAME: negative_ttl
626096be 6619IFDEF: USE_HTTP_VIOLATIONS
41bd17a4 6620COMMENT: time-units
6621TYPE: time_t
6622LOC: Config.negativeTtl
ac9cc053 6623DEFAULT: 0 seconds
41bd17a4 6624DOC_START
ac9cc053
AJ
6625 Set the Default Time-to-Live (TTL) for failed requests.
6626 Certain types of failures (such as "connection refused" and
6627 "404 Not Found") are able to be negatively-cached for a short time.
6628 Modern web servers should provide Expires: header, however if they
6629 do not this can provide a minimum TTL.
6630 The default is not to cache errors with unknown expiry details.
6631
6632 Note that this is different from negative caching of DNS lookups.
39956c7c
AJ
6633
6634 WARNING: Doing this VIOLATES the HTTP standard. Enabling
6635 this feature could make you liable for problems which it
6636 causes.
41bd17a4 6637DOC_END
53e738c6 6638
41bd17a4 6639NAME: positive_dns_ttl
6640COMMENT: time-units
6641TYPE: time_t
6642LOC: Config.positiveDnsTtl
6643DEFAULT: 6 hours
6644DOC_START
6645 Upper limit on how long Squid will cache positive DNS responses.
6646 Default is 6 hours (360 minutes). This directive must be set
6647 larger than negative_dns_ttl.
6648DOC_END
c4ab8329 6649
41bd17a4 6650NAME: negative_dns_ttl
6651COMMENT: time-units
6652TYPE: time_t
6653LOC: Config.negativeDnsTtl
6654DEFAULT: 1 minutes
6655DOC_START
6656 Time-to-Live (TTL) for negative caching of failed DNS lookups.
6657 This also sets the lower cache limit on positive lookups.
6658 Minimum value is 1 second, and it is not recommendable to go
6659 much below 10 seconds.
6660DOC_END
7df0bfd7 6661
41bd17a4 6662NAME: range_offset_limit
11e3fa1c
AJ
6663COMMENT: size [acl acl...]
6664TYPE: acl_b_size_t
41bd17a4 6665LOC: Config.rangeOffsetLimit
11e3fa1c 6666DEFAULT: none
41bd17a4 6667DOC_START
11e3fa1c 6668 usage: (size) [units] [[!]aclname]
9603207d 6669
6670 Sets an upper limit on how far (number of bytes) into the file
6671 a Range request may be to cause Squid to prefetch the whole file.
6672 If beyond this limit, Squid forwards the Range request as it is and
11e3fa1c 6673 the result is NOT cached.
9603207d 6674
41bd17a4 6675 This is to stop a far ahead range request (lets say start at 17MB)
6676 from making Squid fetch the whole object up to that point before
6677 sending anything to the client.
9603207d 6678
6679 Multiple range_offset_limit lines may be specified, and they will
6680 be searched from top to bottom on each request until a match is found.
6681 The first match found will be used. If no line matches a request, the
11e3fa1c 6682 default limit of 0 bytes will be used.
9603207d 6683
11e3fa1c 6684 'size' is the limit specified as a number of units.
9603207d 6685
11e3fa1c
AJ
6686 'units' specifies whether to use bytes, KB, MB, etc.
6687 If no units are specified bytes are assumed.
9603207d 6688
11e3fa1c 6689 A size of 0 causes Squid to never fetch more than the
ab275c7b 6690 client requested. (default)
9603207d 6691
11e3fa1c 6692 A size of 'none' causes Squid to always fetch the object from the
41bd17a4 6693 beginning so it may cache the result. (2.0 style)
9603207d 6694
11e3fa1c 6695 'aclname' is the name of a defined ACL.
9603207d 6696
6697 NP: Using 'none' as the byte value here will override any quick_abort settings
11e3fa1c 6698 that may otherwise apply to the range request. The range request will
ab275c7b
AJ
6699 be fully fetched from start to finish regardless of the client
6700 actions. This affects bandwidth usage.
41bd17a4 6701DOC_END
d95b862f 6702
41bd17a4 6703NAME: minimum_expiry_time
6704COMMENT: (seconds)
6705TYPE: time_t
6706LOC: Config.minimum_expiry_time
6707DEFAULT: 60 seconds
6708DOC_START
6709 The minimum caching time according to (Expires - Date)
638402dd
AJ
6710 headers Squid honors if the object can't be revalidated.
6711 The default is 60 seconds.
6712
6713 In reverse proxy environments it might be desirable to honor
6714 shorter object lifetimes. It is most likely better to make
6715 your server return a meaningful Last-Modified header however.
6716
6717 In ESI environments where page fragments often have short
6718 lifetimes, this will often be best set to 0.
41bd17a4 6719DOC_END
c68e9c6b 6720
41bd17a4 6721NAME: store_avg_object_size
58d5c5dd
DK
6722COMMENT: (bytes)
6723TYPE: b_int64_t
41bd17a4 6724DEFAULT: 13 KB
6725LOC: Config.Store.avgObjectSize
6726DOC_START
6727 Average object size, used to estimate number of objects your
6728 cache can hold. The default is 13 KB.
638402dd
AJ
6729
6730 This is used to pre-seed the cache index memory allocation to
6731 reduce expensive reallocate operations while handling clients
6732 traffic. Too-large values may result in memory allocation during
6733 peak traffic, too-small values will result in wasted memory.
6734
6735 Check the cache manager 'info' report metrics for the real
6736 object sizes seen by your Squid before tuning this.
cccac0a2 6737DOC_END
6738
41bd17a4 6739NAME: store_objects_per_bucket
6740TYPE: int
6741DEFAULT: 20
6742LOC: Config.Store.objectsPerBucket
6743DOC_START
6744 Target number of objects per bucket in the store hash table.
6745 Lowering this value increases the total number of buckets and
6746 also the storage maintenance rate. The default is 20.
6747DOC_END
6748
6749COMMENT_START
6750 HTTP OPTIONS
6751 -----------------------------------------------------------------------------
6752COMMENT_END
6753
f04b37d8 6754NAME: request_header_max_size
6755COMMENT: (KB)
6756TYPE: b_size_t
df2eec10 6757DEFAULT: 64 KB
f04b37d8 6758LOC: Config.maxRequestHeaderSize
6759DOC_START
6760 This specifies the maximum size for HTTP headers in a request.
6761 Request headers are usually relatively small (about 512 bytes).
6762 Placing a limit on the request header size will catch certain
6763 bugs (for example with persistent connections) and possibly
6764 buffer-overflow or denial-of-service attacks.
6765DOC_END
6766
6767NAME: reply_header_max_size
6768COMMENT: (KB)
6769TYPE: b_size_t
df2eec10 6770DEFAULT: 64 KB
f04b37d8 6771LOC: Config.maxReplyHeaderSize
6772DOC_START
6773 This specifies the maximum size for HTTP headers in a reply.
6774 Reply headers are usually relatively small (about 512 bytes).
6775 Placing a limit on the reply header size will catch certain
6776 bugs (for example with persistent connections) and possibly
6777 buffer-overflow or denial-of-service attacks.
6778DOC_END
6779
6780NAME: request_body_max_size
6781COMMENT: (bytes)
6782TYPE: b_int64_t
6783DEFAULT: 0 KB
638402dd 6784DEFAULT_DOC: No limit.
f04b37d8 6785LOC: Config.maxRequestBodySize
6786DOC_START
6787 This specifies the maximum size for an HTTP request body.
6788 In other words, the maximum size of a PUT/POST request.
6789 A user who attempts to send a request with a body larger
6790 than this limit receives an "Invalid Request" error message.
6791 If you set this parameter to a zero (the default), there will
6792 be no limit imposed.
638402dd
AJ
6793
6794 See also client_request_buffer_max_size for an alternative
6795 limitation on client uploads which can be configured.
f04b37d8 6796DOC_END
6797
1368d115
CT
6798NAME: client_request_buffer_max_size
6799COMMENT: (bytes)
6800TYPE: b_size_t
6801DEFAULT: 512 KB
6802LOC: Config.maxRequestBufferSize
6803DOC_START
6804 This specifies the maximum buffer size of a client request.
6805 It prevents squid eating too much memory when somebody uploads
6806 a large file.
6807DOC_END
6808
41bd17a4 6809NAME: broken_posts
626096be 6810IFDEF: USE_HTTP_VIOLATIONS
cccac0a2 6811TYPE: acl_access
cccac0a2 6812DEFAULT: none
638402dd 6813DEFAULT_DOC: Obey RFC 2616.
41bd17a4 6814LOC: Config.accessList.brokenPosts
cccac0a2 6815DOC_START
41bd17a4 6816 A list of ACL elements which, if matched, causes Squid to send
6817 an extra CRLF pair after the body of a PUT/POST request.
cccac0a2 6818
41bd17a4 6819 Some HTTP servers has broken implementations of PUT/POST,
6820 and rely on an extra CRLF pair sent by some WWW clients.
cccac0a2 6821
41bd17a4 6822 Quote from RFC2616 section 4.1 on this matter:
cccac0a2 6823
41bd17a4 6824 Note: certain buggy HTTP/1.0 client implementations generate an
6825 extra CRLF's after a POST request. To restate what is explicitly
6826 forbidden by the BNF, an HTTP/1.1 client must not preface or follow
6827 a request with an extra CRLF.
cccac0a2 6828
b3567eb5
FC
6829 This clause only supports fast acl types.
6830 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
6831
41bd17a4 6832Example:
6833 acl buggy_server url_regex ^http://....
6834 broken_posts allow buggy_server
6835DOC_END
cccac0a2 6836
22fff3bf 6837NAME: adaptation_uses_indirect_client icap_uses_indirect_client
57d76dd4
AJ
6838COMMENT: on|off
6839TYPE: onoff
22fff3bf 6840IFDEF: FOLLOW_X_FORWARDED_FOR&&USE_ADAPTATION
57d76dd4 6841DEFAULT: on
22fff3bf 6842LOC: Adaptation::Config::use_indirect_client
57d76dd4 6843DOC_START
ea3ae478
AR
6844 Controls whether the indirect client IP address (instead of the direct
6845 client IP address) is passed to adaptation services.
6846
6847 See also: follow_x_forwarded_for adaptation_send_client_ip
57d76dd4
AJ
6848DOC_END
6849
41bd17a4 6850NAME: via
626096be 6851IFDEF: USE_HTTP_VIOLATIONS
41bd17a4 6852COMMENT: on|off
6853TYPE: onoff
6854DEFAULT: on
6855LOC: Config.onoff.via
6856DOC_START
6857 If set (default), Squid will include a Via header in requests and
6858 replies as required by RFC2616.
6859DOC_END
4cc6eb12 6860
41bd17a4 6861NAME: vary_ignore_expire
6862COMMENT: on|off
6863TYPE: onoff
6864LOC: Config.onoff.vary_ignore_expire
6865DEFAULT: off
6866DOC_START
6867 Many HTTP servers supporting Vary gives such objects
6868 immediate expiry time with no cache-control header
6869 when requested by a HTTP/1.0 client. This option
6870 enables Squid to ignore such expiry times until
6871 HTTP/1.1 is fully implemented.
7e73cd78
AJ
6872
6873 WARNING: If turned on this may eventually cause some
6874 varying objects not intended for caching to get cached.
cccac0a2 6875DOC_END
c4ab8329 6876
41bd17a4 6877NAME: request_header_access
626096be 6878IFDEF: USE_HTTP_VIOLATIONS
3b07476b 6879TYPE: http_header_access
41bd17a4 6880LOC: Config.request_header_access
cccac0a2 6881DEFAULT: none
638402dd 6882DEFAULT_DOC: No limits.
cccac0a2 6883DOC_START
41bd17a4 6884 Usage: request_header_access header_name allow|deny [!]aclname ...
0976f8db 6885
41bd17a4 6886 WARNING: Doing this VIOLATES the HTTP standard. Enabling
6887 this feature could make you liable for problems which it
6888 causes.
0976f8db 6889
41bd17a4 6890 This option replaces the old 'anonymize_headers' and the
6891 older 'http_anonymizer' option with something that is much
3b07476b
CT
6892 more configurable. A list of ACLs for each header name allows
6893 removal of specific header fields under specific conditions.
6894
6895 This option only applies to outgoing HTTP request headers (i.e.,
6896 headers sent by Squid to the next HTTP hop such as a cache peer
6897 or an origin server). The option has no effect during cache hit
6898 detection. The equivalent adaptation vectoring point in ICAP
6899 terminology is post-cache REQMOD.
6900
6901 The option is applied to individual outgoing request header
6902 fields. For each request header field F, Squid uses the first
6903 qualifying sets of request_header_access rules:
6904
6905 1. Rules with header_name equal to F's name.
6906 2. Rules with header_name 'Other', provided F's name is not
6907 on the hard-coded list of commonly used HTTP header names.
6908 3. Rules with header_name 'All'.
6909
6910 Within that qualifying rule set, rule ACLs are checked as usual.
6911 If ACLs of an "allow" rule match, the header field is allowed to
6912 go through as is. If ACLs of a "deny" rule match, the header is
6913 removed and request_header_replace is then checked to identify
6914 if the removed header has a replacement. If no rules within the
6915 set have matching ACLs, the header field is left as is.
5401aa8d 6916
41bd17a4 6917 For example, to achieve the same behavior as the old
6918 'http_anonymizer standard' option, you should use:
5401aa8d 6919
41bd17a4 6920 request_header_access From deny all
6921 request_header_access Referer deny all
41bd17a4 6922 request_header_access User-Agent deny all
5401aa8d 6923
41bd17a4 6924 Or, to reproduce the old 'http_anonymizer paranoid' feature
6925 you should use:
5401aa8d 6926
41bd17a4 6927 request_header_access Authorization allow all
41bd17a4 6928 request_header_access Proxy-Authorization allow all
41bd17a4 6929 request_header_access Cache-Control allow all
41bd17a4 6930 request_header_access Content-Length allow all
6931 request_header_access Content-Type allow all
6932 request_header_access Date allow all
41bd17a4 6933 request_header_access Host allow all
6934 request_header_access If-Modified-Since allow all
41bd17a4 6935 request_header_access Pragma allow all
6936 request_header_access Accept allow all
6937 request_header_access Accept-Charset allow all
6938 request_header_access Accept-Encoding allow all
6939 request_header_access Accept-Language allow all
41bd17a4 6940 request_header_access Connection allow all
41bd17a4 6941 request_header_access All deny all
5401aa8d 6942
638402dd 6943 HTTP reply headers are controlled with the reply_header_access directive.
5401aa8d 6944
638402dd 6945 By default, all headers are allowed (no anonymizing is performed).
5401aa8d 6946DOC_END
6947
41bd17a4 6948NAME: reply_header_access
626096be 6949IFDEF: USE_HTTP_VIOLATIONS
3b07476b 6950TYPE: http_header_access
41bd17a4 6951LOC: Config.reply_header_access
cccac0a2 6952DEFAULT: none
638402dd 6953DEFAULT_DOC: No limits.
cccac0a2 6954DOC_START
41bd17a4 6955 Usage: reply_header_access header_name allow|deny [!]aclname ...
934b03fc 6956
41bd17a4 6957 WARNING: Doing this VIOLATES the HTTP standard. Enabling
6958 this feature could make you liable for problems which it
6959 causes.
934b03fc 6960
41bd17a4 6961 This option only applies to reply headers, i.e., from the
6962 server to the client.
934b03fc 6963
41bd17a4 6964 This is the same as request_header_access, but in the other
3b07476b
CT
6965 direction. Please see request_header_access for detailed
6966 documentation.
cccac0a2 6967
41bd17a4 6968 For example, to achieve the same behavior as the old
6969 'http_anonymizer standard' option, you should use:
cccac0a2 6970
41bd17a4 6971 reply_header_access Server deny all
41bd17a4 6972 reply_header_access WWW-Authenticate deny all
6973 reply_header_access Link deny all
cccac0a2 6974
41bd17a4 6975 Or, to reproduce the old 'http_anonymizer paranoid' feature
6976 you should use:
cccac0a2 6977
41bd17a4 6978 reply_header_access Allow allow all
41bd17a4 6979 reply_header_access WWW-Authenticate allow all
41bd17a4 6980 reply_header_access Proxy-Authenticate allow all
6981 reply_header_access Cache-Control allow all
6982 reply_header_access Content-Encoding allow all
6983 reply_header_access Content-Length allow all
6984 reply_header_access Content-Type allow all
6985 reply_header_access Date allow all
6986 reply_header_access Expires allow all
41bd17a4 6987 reply_header_access Last-Modified allow all
6988 reply_header_access Location allow all
6989 reply_header_access Pragma allow all
41bd17a4 6990 reply_header_access Content-Language allow all
41bd17a4 6991 reply_header_access Retry-After allow all
6992 reply_header_access Title allow all
638402dd 6993 reply_header_access Content-Disposition allow all
41bd17a4 6994 reply_header_access Connection allow all
41bd17a4 6995 reply_header_access All deny all
cccac0a2 6996
638402dd 6997 HTTP request headers are controlled with the request_header_access directive.
cccac0a2 6998
41bd17a4 6999 By default, all headers are allowed (no anonymizing is
7000 performed).
cccac0a2 7001DOC_END
7002
75e4f2ea 7003NAME: request_header_replace header_replace
626096be 7004IFDEF: USE_HTTP_VIOLATIONS
3b07476b 7005TYPE: http_header_replace
41bd17a4 7006LOC: Config.request_header_access
cccac0a2 7007DEFAULT: none
41bd17a4 7008DOC_START
75e4f2ea
MB
7009 Usage: request_header_replace header_name message
7010 Example: request_header_replace User-Agent Nutscrape/1.0 (CP/M; 8-bit)
cccac0a2 7011
41bd17a4 7012 This option allows you to change the contents of headers
75e4f2ea 7013 denied with request_header_access above, by replacing them
638402dd 7014 with some fixed string.
cccac0a2 7015
41bd17a4 7016 This only applies to request headers, not reply headers.
cccac0a2 7017
41bd17a4 7018 By default, headers are removed if denied.
7019DOC_END
cccac0a2 7020
75e4f2ea
MB
7021NAME: reply_header_replace
7022IFDEF: USE_HTTP_VIOLATIONS
3b07476b 7023TYPE: http_header_replace
75e4f2ea
MB
7024LOC: Config.reply_header_access
7025DEFAULT: none
7026DOC_START
7027 Usage: reply_header_replace header_name message
7028 Example: reply_header_replace Server Foo/1.0
7029
7030 This option allows you to change the contents of headers
7031 denied with reply_header_access above, by replacing them
7032 with some fixed string.
7033
7034 This only applies to reply headers, not request headers.
7035
7036 By default, headers are removed if denied.
7037DOC_END
7038
f4698e0b
CT
7039NAME: request_header_add
7040TYPE: HeaderWithAclList
7041LOC: Config.request_header_add
7042DEFAULT: none
7043DOC_START
cde8f31b 7044 Usage: request_header_add field-name field-value [ acl ... ]
f4698e0b
CT
7045 Example: request_header_add X-Client-CA "CA=%ssl::>cert_issuer" all
7046
7047 This option adds header fields to outgoing HTTP requests (i.e.,
7048 request headers sent by Squid to the next HTTP hop such as a
7049 cache peer or an origin server). The option has no effect during
7050 cache hit detection. The equivalent adaptation vectoring point
7051 in ICAP terminology is post-cache REQMOD.
7052
7053 Field-name is a token specifying an HTTP header name. If a
7054 standard HTTP header name is used, Squid does not check whether
7055 the new header conflicts with any existing headers or violates
7056 HTTP rules. If the request to be modified already contains a
7057 field with the same name, the old field is preserved but the
7058 header field values are not merged.
7059
7060 Field-value is either a token or a quoted string. If quoted
7061 string format is used, then the surrounding quotes are removed
7062 while escape sequences and %macros are processed.
7063
f4698e0b
CT
7064 One or more Squid ACLs may be specified to restrict header
7065 injection to matching requests. As always in squid.conf, all
cde8f31b
NH
7066 ACLs in the ACL list must be satisfied for the insertion to
7067 happen. The request_header_add supports fast ACLs only.
7068
7069 See also: reply_header_add.
7070DOC_END
7071
7072NAME: reply_header_add
7073TYPE: HeaderWithAclList
7074LOC: Config.reply_header_add
7075DEFAULT: none
7076DOC_START
7077 Usage: reply_header_add field-name field-value [ acl ... ]
7078 Example: reply_header_add X-Client-CA "CA=%ssl::>cert_issuer" all
7079
7080 This option adds header fields to outgoing HTTP responses (i.e., response
7081 headers delivered by Squid to the client). This option has no effect on
7082 cache hit detection. The equivalent adaptation vectoring point in
7083 ICAP terminology is post-cache RESPMOD. This option does not apply to
7084 successful CONNECT replies.
7085
7086 Field-name is a token specifying an HTTP header name. If a
7087 standard HTTP header name is used, Squid does not check whether
7088 the new header conflicts with any existing headers or violates
7089 HTTP rules. If the response to be modified already contains a
7090 field with the same name, the old field is preserved but the
7091 header field values are not merged.
7092
7093 Field-value is either a token or a quoted string. If quoted
7094 string format is used, then the surrounding quotes are removed
7095 while escape sequences and %macros are processed.
7096
7097 One or more Squid ACLs may be specified to restrict header
7098 injection to matching responses. As always in squid.conf, all
7099 ACLs in the ACL list must be satisfied for the insertion to
7100 happen. The reply_header_add option supports fast ACLs only.
7101
7102 See also: request_header_add.
f4698e0b
CT
7103DOC_END
7104
d7f4a0b7
CT
7105NAME: note
7106TYPE: note
7107LOC: Config.notes
7108DEFAULT: none
7109DOC_START
7110 This option used to log custom information about the master
7111 transaction. For example, an admin may configure Squid to log
7112 which "user group" the transaction belongs to, where "user group"
7113 will be determined based on a set of ACLs and not [just]
7114 authentication information.
7115 Values of key/value pairs can be logged using %{key}note macros:
7116
7117 note key value acl ...
7118 logformat myFormat ... %{key}note ...
480926bd
EB
7119
7120 This clause only supports fast acl types.
7121 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
d7f4a0b7
CT
7122DOC_END
7123
41bd17a4 7124NAME: relaxed_header_parser
7125COMMENT: on|off|warn
7126TYPE: tristate
7127LOC: Config.onoff.relaxed_header_parser
7128DEFAULT: on
7129DOC_START
7130 In the default "on" setting Squid accepts certain forms
7131 of non-compliant HTTP messages where it is unambiguous
7132 what the sending application intended even if the message
7133 is not correctly formatted. The messages is then normalized
7134 to the correct form when forwarded by Squid.
cccac0a2 7135
41bd17a4 7136 If set to "warn" then a warning will be emitted in cache.log
7137 each time such HTTP error is encountered.
cccac0a2 7138
41bd17a4 7139 If set to "off" then such HTTP errors will cause the request
7140 or response to be rejected.
7141DOC_END
7d90757b 7142
55eae904
AR
7143NAME: collapsed_forwarding
7144COMMENT: (on|off)
7145TYPE: onoff
7146LOC: Config.onoff.collapsed_forwarding
7147DEFAULT: off
7148DOC_START
7149 This option controls whether Squid is allowed to merge multiple
7150 potentially cachable requests for the same URI before Squid knows
7151 whether the response is going to be cachable.
7152
1a210de4
EB
7153 When enabled, instead of forwarding each concurrent request for
7154 the same URL, Squid just sends the first of them. The other, so
7155 called "collapsed" requests, wait for the response to the first
7156 request and, if it happens to be cachable, use that response.
7157 Here, "concurrent requests" means "received after the first
7158 request headers were parsed and before the corresponding response
7159 headers were parsed".
7160
7161 This feature is disabled by default: enabling collapsed
7162 forwarding needlessly delays forwarding requests that look
7163 cachable (when they are collapsed) but then need to be forwarded
7164 individually anyway because they end up being for uncachable
7165 content. However, in some cases, such as acceleration of highly
7166 cachable content with periodic or grouped expiration times, the
7167 gains from collapsing [large volumes of simultaneous refresh
7168 requests] outweigh losses from such delays.
7169
7170 Squid collapses two kinds of requests: regular client requests
7171 received on one of the listening ports and internal "cache
7172 revalidation" requests which are triggered by those regular
7173 requests hitting a stale cached object. Revalidation collapsing
7174 is currently disabled for Squid instances containing SMP-aware
7175 disk or memory caches and for Vary-controlled cached objects.
55eae904
AR
7176DOC_END
7177
819be284
EB
7178NAME: collapsed_forwarding_access
7179TYPE: acl_access
7180DEFAULT: none
7181DEFAULT_DOC: Requests may be collapsed if collapsed_forwarding is on.
7182LOC: Config.accessList.collapsedForwardingAccess
7183DOC_START
7184 Use this directive to restrict collapsed forwarding to a subset of
7185 eligible requests. The directive is checked for regular HTTP
7186 requests, internal revalidation requests, and HTCP/ICP requests.
7187
7188 collapsed_forwarding_access allow|deny [!]aclname ...
7189
7190 This directive cannot force collapsing. It has no effect on
7191 collapsing unless collapsed_forwarding is 'on', and all other
7192 collapsing preconditions are satisfied.
7193
7194 * A denied request will not collapse, and future transactions will
7195 not collapse on it (even if they are allowed to collapse).
7196
7197 * An allowed request may collapse, or future transactions may
7198 collapse on it (provided they are allowed to collapse).
7199
7200 This directive is evaluated before receiving HTTP response headers
7201 and without access to Squid-to-peer connection (if any).
7202
7203 Only fast ACLs are supported.
7204
7205 See also: collapsed_forwarding.
7206DOC_END
7207
daed75a9 7208NAME: shared_transient_entries_limit collapsed_forwarding_shared_entries_limit
8f7dbf74
DD
7209COMMENT: (number of entries)
7210TYPE: int64_t
daed75a9 7211LOC: Config.shared_transient_entries_limit
8f7dbf74
DD
7212DEFAULT: 16384
7213DOC_START
daed75a9
EB
7214 This directive limits the size of a table used for sharing current
7215 transaction information among SMP workers. A table entry stores meta
7216 information about a single cache entry being delivered to Squid
7217 client(s) by one or more SMP workers. A single table entry consumes
7218 less than 128 shared memory bytes.
8f7dbf74 7219
daed75a9
EB
7220 The limit should be significantly larger than the number of
7221 concurrent non-collapsed cachable responses leaving Squid. For a
7222 cache that handles less than 5000 concurrent requests, the default
8f7dbf74
DD
7223 setting of 16384 should be plenty.
7224
daed75a9
EB
7225 Using excessively large values wastes shared memory. Limiting the
7226 table size too much results in hash collisions, leading to lower hit
7227 ratio and missed SMP request collapsing opportunities: Transactions
7228 left without a table entry cannot cache their responses and are
7229 invisible to other concurrent requests for the same resource.
7230
7231 A zero limit is allowed but unsupported. A positive small limit
7232 lowers hit ratio, but zero limit disables a lot of essential
7233 synchronization among SMP workers, leading to HTTP violations (e.g.,
7234 stale hit responses). It also disables shared collapsed forwarding:
7235 A worker becomes unable to collapse its requests on transactions in
7236 other workers, resulting in more trips to the origin server and more
7237 cache thrashing.
8f7dbf74
DD
7238DOC_END
7239
41bd17a4 7240COMMENT_START
7241 TIMEOUTS
7242 -----------------------------------------------------------------------------
7243COMMENT_END
7244
7245NAME: forward_timeout
7246COMMENT: time-units
7247TYPE: time_t
7248LOC: Config.Timeout.forward
7249DEFAULT: 4 minutes
7250DOC_START
7251 This parameter specifies how long Squid should at most attempt in
7252 finding a forwarding path for the request before giving up.
cccac0a2 7253DOC_END
7254
41bd17a4 7255NAME: connect_timeout
7256COMMENT: time-units
7257TYPE: time_t
7258LOC: Config.Timeout.connect
7259DEFAULT: 1 minute
057f5854 7260DOC_START
41bd17a4 7261 This parameter specifies how long to wait for the TCP connect to
7262 the requested server or peer to complete before Squid should
7263 attempt to find another path where to forward the request.
057f5854 7264DOC_END
7265
41bd17a4 7266NAME: peer_connect_timeout
7267COMMENT: time-units
7268TYPE: time_t
7269LOC: Config.Timeout.peer_connect
7270DEFAULT: 30 seconds
cccac0a2 7271DOC_START
41bd17a4 7272 This parameter specifies how long to wait for a pending TCP
7273 connection to a peer cache. The default is 30 seconds. You
7274 may also set different timeout values for individual neighbors
7275 with the 'connect-timeout' option on a 'cache_peer' line.
7276DOC_END
7f7db318 7277
41bd17a4 7278NAME: read_timeout
7279COMMENT: time-units
7280TYPE: time_t
7281LOC: Config.Timeout.read
7282DEFAULT: 15 minutes
7283DOC_START
d5430dc8
AJ
7284 Applied on peer server connections.
7285
7286 After each successful read(), the timeout will be extended by this
41bd17a4 7287 amount. If no data is read again after this amount of time,
d5430dc8
AJ
7288 the request is aborted and logged with ERR_READ_TIMEOUT.
7289
7290 The default is 15 minutes.
41bd17a4 7291DOC_END
cccac0a2 7292
5ef5e5cc
AJ
7293NAME: write_timeout
7294COMMENT: time-units
7295TYPE: time_t
7296LOC: Config.Timeout.write
7297DEFAULT: 15 minutes
7298DOC_START
7299 This timeout is tracked for all connections that have data
7300 available for writing and are waiting for the socket to become
7301 ready. After each successful write, the timeout is extended by
7302 the configured amount. If Squid has data to write but the
7303 connection is not ready for the configured duration, the
7304 transaction associated with the connection is terminated. The
7305 default is 15 minutes.
7306DOC_END
7307
41bd17a4 7308NAME: request_timeout
7309TYPE: time_t
7310LOC: Config.Timeout.request
7311DEFAULT: 5 minutes
7312DOC_START
6b2a2108 7313 How long to wait for complete HTTP request headers after initial
41bd17a4 7314 connection establishment.
7315DOC_END
cccac0a2 7316
3248e962
CT
7317NAME: request_start_timeout
7318TYPE: time_t
7319LOC: Config.Timeout.request_start_timeout
7320DEFAULT: 5 minutes
7321DOC_START
7322 How long to wait for the first request byte after initial
7323 connection establishment.
7324DOC_END
7325
97b32442 7326NAME: client_idle_pconn_timeout persistent_request_timeout
41bd17a4 7327TYPE: time_t
97b32442 7328LOC: Config.Timeout.clientIdlePconn
41bd17a4 7329DEFAULT: 2 minutes
7330DOC_START
7331 How long to wait for the next HTTP request on a persistent
97b32442 7332 client connection after the previous request completes.
41bd17a4 7333DOC_END
cccac0a2 7334
f6e8754a
AR
7335NAME: ftp_client_idle_timeout
7336TYPE: time_t
7337LOC: Config.Timeout.ftpClientIdle
7338DEFAULT: 30 minutes
7339DOC_START
7340 How long to wait for an FTP request on a connection to Squid ftp_port.
7341 Many FTP clients do not deal with idle connection closures well,
7342 necessitating a longer default timeout than client_idle_pconn_timeout
7343 used for incoming HTTP requests.
7344DOC_END
7345
41bd17a4 7346NAME: client_lifetime
7347COMMENT: time-units
7348TYPE: time_t
7349LOC: Config.Timeout.lifetime
7350DEFAULT: 1 day
7351DOC_START
7352 The maximum amount of time a client (browser) is allowed to
7353 remain connected to the cache process. This protects the Cache
7354 from having a lot of sockets (and hence file descriptors) tied up
7355 in a CLOSE_WAIT state from remote clients that go away without
7356 properly shutting down (either because of a network failure or
7357 because of a poor client implementation). The default is one
7358 day, 1440 minutes.
7d90757b 7359
41bd17a4 7360 NOTE: The default value is intended to be much larger than any
7361 client would ever need to be connected to your cache. You
7362 should probably change client_lifetime only as a last resort.
7363 If you seem to have many client connections tying up
7364 filedescriptors, we recommend first tuning the read_timeout,
7365 request_timeout, persistent_request_timeout and quick_abort values.
cccac0a2 7366DOC_END
7367
c5c06f02
CT
7368NAME: pconn_lifetime
7369COMMENT: time-units
7370TYPE: time_t
7371LOC: Config.Timeout.pconnLifetime
7372DEFAULT: 0 seconds
7373DOC_START
7374 Desired maximum lifetime of a persistent connection.
7375 When set, Squid will close a now-idle persistent connection that
7376 exceeded configured lifetime instead of moving the connection into
7377 the idle connection pool (or equivalent). No effect on ongoing/active
7378 transactions. Connection lifetime is the time period from the
7379 connection acceptance or opening time until "now".
9603207d 7380
c5c06f02
CT
7381 This limit is useful in environments with long-lived connections
7382 where Squid configuration or environmental factors change during a
7383 single connection lifetime. If unrestricted, some connections may
7384 last for hours and even days, ignoring those changes that should
7385 have affected their behavior or their existence.
9603207d 7386
c5c06f02
CT
7387 Currently, a new lifetime value supplied via Squid reconfiguration
7388 has no effect on already idle connections unless they become busy.
9603207d 7389
c5c06f02
CT
7390 When set to '0' this limit is not used.
7391DOC_END
7392
41bd17a4 7393NAME: half_closed_clients
7394TYPE: onoff
7395LOC: Config.onoff.half_closed_clients
0c2f5c4f 7396DEFAULT: off
4eb368f9 7397DOC_START
41bd17a4 7398 Some clients may shutdown the sending side of their TCP
7399 connections, while leaving their receiving sides open. Sometimes,
7400 Squid can not tell the difference between a half-closed and a
0c2f5c4f
AJ
7401 fully-closed TCP connection.
7402
7403 By default, Squid will immediately close client connections when
7404 read(2) returns "no more data to read."
7405
abdf1651 7406 Change this option to 'on' and Squid will keep open connections
0c2f5c4f
AJ
7407 until a read(2) or write(2) on the socket returns an error.
7408 This may show some benefits for reverse proxies. But if not
7409 it is recommended to leave OFF.
4eb368f9 7410DOC_END
7411
97b32442 7412NAME: server_idle_pconn_timeout pconn_timeout
41bd17a4 7413TYPE: time_t
97b32442 7414LOC: Config.Timeout.serverIdlePconn
41bd17a4 7415DEFAULT: 1 minute
cccac0a2 7416DOC_START
41bd17a4 7417 Timeout for idle persistent connections to servers and other
7418 proxies.
7419DOC_END
cccac0a2 7420
41bd17a4 7421NAME: ident_timeout
7422TYPE: time_t
7423IFDEF: USE_IDENT
4daaf3cb 7424LOC: Ident::TheConfig.timeout
41bd17a4 7425DEFAULT: 10 seconds
7426DOC_START
7427 Maximum time to wait for IDENT lookups to complete.
cccac0a2 7428
41bd17a4 7429 If this is too high, and you enabled IDENT lookups from untrusted
7430 users, you might be susceptible to denial-of-service by having
7431 many ident requests going at once.
cccac0a2 7432DOC_END
7433
41bd17a4 7434NAME: shutdown_lifetime
7435COMMENT: time-units
7436TYPE: time_t
7437LOC: Config.shutdownLifetime
7438DEFAULT: 30 seconds
cccac0a2 7439DOC_START
41bd17a4 7440 When SIGTERM or SIGHUP is received, the cache is put into
7441 "shutdown pending" mode until all active sockets are closed.
7442 This value is the lifetime to set for all open descriptors
7443 during shutdown mode. Any active clients after this many
7444 seconds will receive a 'timeout' message.
cccac0a2 7445DOC_END
0976f8db 7446
cccac0a2 7447COMMENT_START
7448 ADMINISTRATIVE PARAMETERS
7449 -----------------------------------------------------------------------------
7450COMMENT_END
7451
7452NAME: cache_mgr
7453TYPE: string
7454DEFAULT: webmaster
7455LOC: Config.adminEmail
7456DOC_START
7457 Email-address of local cache manager who will receive
638402dd 7458 mail if the cache dies. The default is "webmaster".
cccac0a2 7459DOC_END
7460
abacf776 7461NAME: mail_from
7462TYPE: string
7463DEFAULT: none
7464LOC: Config.EmailFrom
7465DOC_START
7466 From: email-address for mail sent when the cache dies.
638402dd
AJ
7467 The default is to use 'squid@unique_hostname'.
7468
7469 See also: unique_hostname directive.
abacf776 7470DOC_END
7471
d084bf20 7472NAME: mail_program
7473TYPE: eol
7474DEFAULT: mail
7475LOC: Config.EmailProgram
7476DOC_START
7477 Email program used to send mail if the cache dies.
846a5e31 7478 The default is "mail". The specified program must comply
d084bf20 7479 with the standard Unix mail syntax:
846a5e31 7480 mail-program recipient < mailfile
7481
d084bf20 7482 Optional command line options can be specified.
7483DOC_END
7484
cccac0a2 7485NAME: cache_effective_user
7486TYPE: string
5483d916 7487DEFAULT: @DEFAULT_CACHE_EFFECTIVE_USER@
cccac0a2 7488LOC: Config.effectiveUser
e3d74828 7489DOC_START
7490 If you start Squid as root, it will change its effective/real
7491 UID/GID to the user specified below. The default is to change
5483d916 7492 to UID of @DEFAULT_CACHE_EFFECTIVE_USER@.
64e288bd 7493 see also; cache_effective_group
e3d74828 7494DOC_END
7495
cccac0a2 7496NAME: cache_effective_group
7497TYPE: string
7498DEFAULT: none
638402dd 7499DEFAULT_DOC: Use system group memberships of the cache_effective_user account
cccac0a2 7500LOC: Config.effectiveGroup
7501DOC_START
64e288bd 7502 Squid sets the GID to the effective user's default group ID
7503 (taken from the password file) and supplementary group list
7504 from the groups membership.
7505
e3d74828 7506 If you want Squid to run with a specific GID regardless of
7507 the group memberships of the effective user then set this
7508 to the group (or GID) you want Squid to run as. When set
64e288bd 7509 all other group privileges of the effective user are ignored
e3d74828 7510 and only this GID is effective. If Squid is not started as
64e288bd 7511 root the user starting Squid MUST be member of the specified
e3d74828 7512 group.
64e288bd 7513
7514 This option is not recommended by the Squid Team.
7515 Our preference is for administrators to configure a secure
7516 user account for squid with UID/GID matching system policies.
cccac0a2 7517DOC_END
7518
d3caee79 7519NAME: httpd_suppress_version_string
7520COMMENT: on|off
7521TYPE: onoff
7522DEFAULT: off
7523LOC: Config.onoff.httpd_suppress_version_string
7524DOC_START
c81de627
AR
7525 Do not send Squid version string in HTTP metadata and generated content
7526 such as HTML error pages. Squid version string is still present in certain
7527 SNMP responses, cachemgr.cgi output, squidclient User-Agent request header
7528 field, various console output, and cache.log.
d3caee79 7529DOC_END
7530
cccac0a2 7531NAME: visible_hostname
7532TYPE: string
7533LOC: Config.visibleHostname
7534DEFAULT: none
638402dd 7535DEFAULT_DOC: Automatically detect the system host name
cccac0a2 7536DOC_START
7537 If you want to present a special hostname in error messages, etc,
7f7db318 7538 define this. Otherwise, the return value of gethostname()
cccac0a2 7539 will be used. If you have multiple caches in a cluster and
7540 get errors about IP-forwarding you must set them to have individual
7541 names with this setting.
7542DOC_END
7543
cccac0a2 7544NAME: unique_hostname
7545TYPE: string
7546LOC: Config.uniqueHostname
7547DEFAULT: none
638402dd 7548DEFAULT_DOC: Copy the value from visible_hostname
cccac0a2 7549DOC_START
7550 If you want to have multiple machines with the same
7f7db318 7551 'visible_hostname' you must give each machine a different
7552 'unique_hostname' so forwarding loops can be detected.
cccac0a2 7553DOC_END
7554
cccac0a2 7555NAME: hostname_aliases
7556TYPE: wordlist
7557LOC: Config.hostnameAliases
7558DEFAULT: none
7559DOC_START
7f7db318 7560 A list of other DNS names your cache has.
cccac0a2 7561DOC_END
0976f8db 7562
c642c141
AJ
7563NAME: umask
7564TYPE: int
7565LOC: Config.umask
7566DEFAULT: 027
7567DOC_START
7568 Minimum umask which should be enforced while the proxy
7569 is running, in addition to the umask set at startup.
7570
7571 For a traditional octal representation of umasks, start
7572 your value with 0.
7573DOC_END
7574
8d6275c0 7575COMMENT_START
7576 HTTPD-ACCELERATOR OPTIONS
7577 -----------------------------------------------------------------------------
7578COMMENT_END
7579
cccac0a2 7580NAME: httpd_accel_surrogate_id
cccac0a2 7581TYPE: string
b2b40d8c 7582DEFAULT: none
638402dd 7583DEFAULT_DOC: visible_hostname is used if no specific ID is set.
cccac0a2 7584LOC: Config.Accel.surrogate_id
cccac0a2 7585DOC_START
7586 Surrogates (http://www.esi.org/architecture_spec_1.0.html)
7587 need an identification token to allow control targeting. Because
7588 a farm of surrogates may all perform the same tasks, they may share
7589 an identification token.
609d5e06
AJ
7590
7591 When the surrogate is a reverse-proxy, this ID is also
7592 used as cdn-id for CDN-Loop detection (RFC 8586).
cccac0a2 7593DOC_END
7594
7595NAME: http_accel_surrogate_remote
cccac0a2 7596COMMENT: on|off
7597TYPE: onoff
7598DEFAULT: off
7599LOC: Config.onoff.surrogate_is_remote
7600DOC_START
638402dd
AJ
7601 Remote surrogates (such as those in a CDN) honour the header
7602 "Surrogate-Control: no-store-remote".
7603
cccac0a2 7604 Set this to on to have squid behave as a remote surrogate.
7605DOC_END
7606
7607NAME: esi_parser
f41735ea 7608IFDEF: USE_SQUID_ESI
799b66d1 7609COMMENT: libxml2|expat
cccac0a2 7610TYPE: string
7611LOC: ESIParser::Type
799b66d1
AJ
7612DEFAULT: auto
7613DEFAULT_DOC: Selects libxml2 if available at ./configure time or libexpat otherwise.
cccac0a2 7614DOC_START
799b66d1
AJ
7615 Selects the XML parsing library to use when interpreting responses with
7616 Edge Side Includes.
7617
7618 To disable ESI handling completely, ./configure Squid with --disable-esi.
cccac0a2 7619DOC_END
0976f8db 7620
9edd9041 7621COMMENT_START
8d6275c0 7622 DELAY POOL PARAMETERS
9edd9041 7623 -----------------------------------------------------------------------------
7624COMMENT_END
7625
7626NAME: delay_pools
7627TYPE: delay_pool_count
7628DEFAULT: 0
9a0a18de 7629IFDEF: USE_DELAY_POOLS
9edd9041 7630LOC: Config.Delay
7631DOC_START
7632 This represents the number of delay pools to be used. For example,
7633 if you have one class 2 delay pool and one class 3 delays pool, you
7634 have a total of 2 delay pools.
638402dd
AJ
7635
7636 See also delay_parameters, delay_class, delay_access for pool
7637 configuration details.
9edd9041 7638DOC_END
7639
7640NAME: delay_class
7641TYPE: delay_pool_class
7642DEFAULT: none
9a0a18de 7643IFDEF: USE_DELAY_POOLS
9edd9041 7644LOC: Config.Delay
7645DOC_START
7646 This defines the class of each delay pool. There must be exactly one
7647 delay_class line for each delay pool. For example, to define two
7648 delay pools, one of class 2 and one of class 3, the settings above
7649 and here would be:
7650
b1fb3348
AJ
7651 Example:
7652 delay_pools 4 # 4 delay pools
7653 delay_class 1 2 # pool 1 is a class 2 pool
7654 delay_class 2 3 # pool 2 is a class 3 pool
7655 delay_class 3 4 # pool 3 is a class 4 pool
7656 delay_class 4 5 # pool 4 is a class 5 pool
9edd9041 7657
7658 The delay pool classes are:
7659
7660 class 1 Everything is limited by a single aggregate
7661 bucket.
7662
7663 class 2 Everything is limited by a single aggregate
7664 bucket as well as an "individual" bucket chosen
b1fb3348 7665 from bits 25 through 32 of the IPv4 address.
9edd9041 7666
7667 class 3 Everything is limited by a single aggregate
7668 bucket as well as a "network" bucket chosen
7669 from bits 17 through 24 of the IP address and a
7670 "individual" bucket chosen from bits 17 through
b1fb3348 7671 32 of the IPv4 address.
9edd9041 7672
7673 class 4 Everything in a class 3 delay pool, with an
7674 additional limit on a per user basis. This
7675 only takes effect if the username is established
7676 in advance - by forcing authentication in your
7677 http_access rules.
7678
7679 class 5 Requests are grouped according their tag (see
7680 external_acl's tag= reply).
7681
0b68481a
AJ
7682
7683 Each pool also requires a delay_parameters directive to configure the pool size
7684 and speed limits used whenever the pool is applied to a request. Along with
7685 a set of delay_access directives to determine when it is used.
7686
9edd9041 7687 NOTE: If an IP address is a.b.c.d
7688 -> bits 25 through 32 are "d"
7689 -> bits 17 through 24 are "c"
7690 -> bits 17 through 32 are "c * 256 + d"
b1fb3348
AJ
7691
7692 NOTE-2: Due to the use of bitmasks in class 2,3,4 pools they only apply to
7693 IPv4 traffic. Class 1 and 5 pools may be used with IPv6 traffic.
638402dd
AJ
7694
7695 This clause only supports fast acl types.
7696 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
7697
7698 See also delay_parameters and delay_access.
9edd9041 7699DOC_END
7700
7701NAME: delay_access
7702TYPE: delay_pool_access
7703DEFAULT: none
638402dd 7704DEFAULT_DOC: Deny using the pool, unless allow rules exist in squid.conf for the pool.
9a0a18de 7705IFDEF: USE_DELAY_POOLS
9edd9041 7706LOC: Config.Delay
7707DOC_START
7708 This is used to determine which delay pool a request falls into.
7709
7710 delay_access is sorted per pool and the matching starts with pool 1,
7711 then pool 2, ..., and finally pool N. The first delay pool where the
7712 request is allowed is selected for the request. If it does not allow
7713 the request to any pool then the request is not delayed (default).
7714
7715 For example, if you want some_big_clients in delay
7716 pool 1 and lotsa_little_clients in delay pool 2:
7717
638402dd
AJ
7718 delay_access 1 allow some_big_clients
7719 delay_access 1 deny all
7720 delay_access 2 allow lotsa_little_clients
7721 delay_access 2 deny all
7722 delay_access 3 allow authenticated_clients
7723
7724 See also delay_parameters and delay_class.
7725
9edd9041 7726DOC_END
7727
7728NAME: delay_parameters
7729TYPE: delay_pool_rates
7730DEFAULT: none
9a0a18de 7731IFDEF: USE_DELAY_POOLS
9edd9041 7732LOC: Config.Delay
7733DOC_START
7734 This defines the parameters for a delay pool. Each delay pool has
7735 a number of "buckets" associated with it, as explained in the
0b68481a 7736 description of delay_class.
9edd9041 7737
0b68481a 7738 For a class 1 delay pool, the syntax is:
6e7502cc 7739 delay_class pool 1
0b68481a 7740 delay_parameters pool aggregate
9edd9041 7741
7742 For a class 2 delay pool:
6e7502cc 7743 delay_class pool 2
0b68481a 7744 delay_parameters pool aggregate individual
9edd9041 7745
7746 For a class 3 delay pool:
6e7502cc 7747 delay_class pool 3
0b68481a 7748 delay_parameters pool aggregate network individual
9edd9041 7749
7750 For a class 4 delay pool:
6e7502cc 7751 delay_class pool 4
0b68481a 7752 delay_parameters pool aggregate network individual user
9edd9041 7753
7754 For a class 5 delay pool:
6e7502cc 7755 delay_class pool 5
0b68481a 7756 delay_parameters pool tagrate
9edd9041 7757
0b68481a 7758 The option variables are:
9edd9041 7759
7760 pool a pool number - ie, a number between 1 and the
7761 number specified in delay_pools as used in
7762 delay_class lines.
7763
fdb47ac6 7764 aggregate the speed limit parameters for the aggregate bucket
9edd9041 7765 (class 1, 2, 3).
7766
fdb47ac6 7767 individual the speed limit parameters for the individual
9edd9041 7768 buckets (class 2, 3).
7769
fdb47ac6 7770 network the speed limit parameters for the network buckets
9edd9041 7771 (class 3).
7772
fdb47ac6 7773 user the speed limit parameters for the user buckets
9edd9041 7774 (class 4).
7775
fdb47ac6 7776 tagrate the speed limit parameters for the tag buckets
9edd9041 7777 (class 5).
7778
7779 A pair of delay parameters is written restore/maximum, where restore is
7780 the number of bytes (not bits - modem and network speeds are usually
7781 quoted in bits) per second placed into the bucket, and maximum is the
7782 maximum number of bytes which can be in the bucket at any time.
7783
0b68481a
AJ
7784 There must be one delay_parameters line for each delay pool.
7785
7786
9edd9041 7787 For example, if delay pool number 1 is a class 2 delay pool as in the
0b68481a 7788 above example, and is being used to strictly limit each host to 64Kbit/sec
9edd9041 7789 (plus overheads), with no overall limit, the line is:
7790
6e7502cc 7791 delay_parameters 1 none 8000/8000
0b68481a 7792
c3e31a3a 7793 Note that 8 x 8K Byte/sec -> 64K bit/sec.
9edd9041 7794
6e7502cc 7795 Note that the word 'none' is used to represent no limit.
9edd9041 7796
0b68481a 7797
9edd9041 7798 And, if delay pool number 2 is a class 3 delay pool as in the above
0b68481a
AJ
7799 example, and you want to limit it to a total of 256Kbit/sec (strict limit)
7800 with each 8-bit network permitted 64Kbit/sec (strict limit) and each
7801 individual host permitted 4800bit/sec with a bucket maximum size of 64Kbits
9edd9041 7802 to permit a decent web page to be downloaded at a decent speed
7803 (if the network is not being limited due to overuse) but slow down
7804 large downloads more significantly:
7805
0b68481a
AJ
7806 delay_parameters 2 32000/32000 8000/8000 600/8000
7807
c3e31a3a
AJ
7808 Note that 8 x 32K Byte/sec -> 256K bit/sec.
7809 8 x 8K Byte/sec -> 64K bit/sec.
7810 8 x 600 Byte/sec -> 4800 bit/sec.
9edd9041 7811
9edd9041 7812
7813 Finally, for a class 4 delay pool as in the example - each user will
0b68481a 7814 be limited to 128Kbits/sec no matter how many workstations they are logged into.:
9edd9041 7815
0b68481a 7816 delay_parameters 4 32000/32000 8000/8000 600/64000 16000/16000
638402dd
AJ
7817
7818
7819 See also delay_class and delay_access.
7820
9edd9041 7821DOC_END
7822
7823NAME: delay_initial_bucket_level
7824COMMENT: (percent, 0-100)
ae870270 7825TYPE: u_short
9edd9041 7826DEFAULT: 50
9a0a18de 7827IFDEF: USE_DELAY_POOLS
9edd9041 7828LOC: Config.Delay.initial
7829DOC_START
7830 The initial bucket percentage is used to determine how much is put
7831 in each bucket when squid starts, is reconfigured, or first notices
7832 a host accessing it (in class 2 and class 3, individual hosts and
7833 networks only have buckets associated with them once they have been
7834 "seen" by squid).
7835DOC_END
7836
b4cd430a
CT
7837COMMENT_START
7838 CLIENT DELAY POOL PARAMETERS
7839 -----------------------------------------------------------------------------
7840COMMENT_END
7841
7842NAME: client_delay_pools
7843TYPE: client_delay_pool_count
7844DEFAULT: 0
9a0a18de 7845IFDEF: USE_DELAY_POOLS
b4cd430a
CT
7846LOC: Config.ClientDelay
7847DOC_START
7848 This option specifies the number of client delay pools used. It must
7849 preceed other client_delay_* options.
7850
638402dd
AJ
7851 Example:
7852 client_delay_pools 2
7853
7854 See also client_delay_parameters and client_delay_access.
b4cd430a
CT
7855DOC_END
7856
7857NAME: client_delay_initial_bucket_level
7858COMMENT: (percent, 0-no_limit)
ae870270 7859TYPE: u_short
b4cd430a 7860DEFAULT: 50
9a0a18de 7861IFDEF: USE_DELAY_POOLS
b4cd430a
CT
7862LOC: Config.ClientDelay.initial
7863DOC_START
7864 This option determines the initial bucket size as a percentage of
7865 max_bucket_size from client_delay_parameters. Buckets are created
7866 at the time of the "first" connection from the matching IP. Idle
7867 buckets are periodically deleted up.
7868
7869 You can specify more than 100 percent but note that such "oversized"
7870 buckets are not refilled until their size goes down to max_bucket_size
7871 from client_delay_parameters.
7872
638402dd
AJ
7873 Example:
7874 client_delay_initial_bucket_level 50
b4cd430a
CT
7875DOC_END
7876
7877NAME: client_delay_parameters
7878TYPE: client_delay_pool_rates
7879DEFAULT: none
9a0a18de 7880IFDEF: USE_DELAY_POOLS
b4cd430a
CT
7881LOC: Config.ClientDelay
7882DOC_START
7883
7884 This option configures client-side bandwidth limits using the
7885 following format:
7886
7887 client_delay_parameters pool speed_limit max_bucket_size
7888
7889 pool is an integer ID used for client_delay_access matching.
7890
7891 speed_limit is bytes added to the bucket per second.
7892
7893 max_bucket_size is the maximum size of a bucket, enforced after any
7894 speed_limit additions.
7895
7896 Please see the delay_parameters option for more information and
7897 examples.
7898
638402dd
AJ
7899 Example:
7900 client_delay_parameters 1 1024 2048
7901 client_delay_parameters 2 51200 16384
7902
7903 See also client_delay_access.
7904
b4cd430a
CT
7905DOC_END
7906
7907NAME: client_delay_access
7908TYPE: client_delay_pool_access
7909DEFAULT: none
638402dd 7910DEFAULT_DOC: Deny use of the pool, unless allow rules exist in squid.conf for the pool.
9a0a18de 7911IFDEF: USE_DELAY_POOLS
b4cd430a
CT
7912LOC: Config.ClientDelay
7913DOC_START
b4cd430a
CT
7914 This option determines the client-side delay pool for the
7915 request:
7916
7917 client_delay_access pool_ID allow|deny acl_name
7918
7919 All client_delay_access options are checked in their pool ID
7920 order, starting with pool 1. The first checked pool with allowed
7921 request is selected for the request. If no ACL matches or there
7922 are no client_delay_access options, the request bandwidth is not
7923 limited.
7924
7925 The ACL-selected pool is then used to find the
7926 client_delay_parameters for the request. Client-side pools are
7927 not used to aggregate clients. Clients are always aggregated
7928 based on their source IP addresses (one bucket per source IP).
7929
638402dd
AJ
7930 This clause only supports fast acl types.
7931 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
7932 Additionally, only the client TCP connection details are available.
7933 ACLs testing HTTP properties will not work.
7934
b4cd430a
CT
7935 Please see delay_access for more examples.
7936
638402dd
AJ
7937 Example:
7938 client_delay_access 1 allow low_rate_network
7939 client_delay_access 2 allow vips_network
7940
7941
7942 See also client_delay_parameters and client_delay_pools.
b4cd430a
CT
7943DOC_END
7944
b27668ec
EB
7945NAME: response_delay_pool
7946TYPE: response_delay_pool_parameters
7947DEFAULT: none
7948IFDEF: USE_DELAY_POOLS
7949LOC: Config.MessageDelay
7950DOC_START
7951 This option configures client response bandwidth limits using the
7952 following format:
7953
7954 response_delay_pool name [option=value] ...
7955
7956 name the response delay pool name
7957
7958 available options:
7959
7960 individual-restore The speed limit of an individual
7961 bucket(bytes/s). To be used in conjunction
7962 with 'individual-maximum'.
7963
7964 individual-maximum The maximum number of bytes which can
7965 be placed into the individual bucket. To be used
7966 in conjunction with 'individual-restore'.
7967
7968 aggregate-restore The speed limit for the aggregate
7969 bucket(bytes/s). To be used in conjunction with
7970 'aggregate-maximum'.
7971
7972 aggregate-maximum The maximum number of bytes which can
7973 be placed into the aggregate bucket. To be used
7974 in conjunction with 'aggregate-restore'.
7975
7976 initial-bucket-level The initial bucket size as a percentage
7977 of individual-maximum.
7978
7979 Individual and(or) aggregate bucket options may not be specified,
7980 meaning no individual and(or) aggregate speed limitation.
7981 See also response_delay_pool_access and delay_parameters for
7982 terminology details.
7983DOC_END
7984
7985NAME: response_delay_pool_access
7986TYPE: response_delay_pool_access
7987DEFAULT: none
7988DEFAULT_DOC: Deny use of the pool, unless allow rules exist in squid.conf for the pool.
7989IFDEF: USE_DELAY_POOLS
7990LOC: Config.MessageDelay
7991DOC_START
7992 Determines whether a specific named response delay pool is used
7993 for the transaction. The syntax for this directive is:
7994
7995 response_delay_pool_access pool_name allow|deny acl_name
7996
7997 All response_delay_pool_access options are checked in the order
7998 they appear in this configuration file. The first rule with a
7999 matching ACL wins. If (and only if) an "allow" rule won, Squid
8000 assigns the response to the corresponding named delay pool.
8001DOC_END
8002
cccac0a2 8003COMMENT_START
8d6275c0 8004 WCCPv1 AND WCCPv2 CONFIGURATION OPTIONS
cccac0a2 8005 -----------------------------------------------------------------------------
8006COMMENT_END
8007
8d6275c0 8008NAME: wccp_router
8009TYPE: address
8010LOC: Config.Wccp.router
0eb08770 8011DEFAULT: any_addr
638402dd 8012DEFAULT_DOC: WCCP disabled.
8d6275c0 8013IFDEF: USE_WCCP
e313ab0a
AJ
8014DOC_START
8015 Use this option to define your WCCP ``home'' router for
8016 Squid.
8017
8018 wccp_router supports a single WCCP(v1) router
8019
8020 wccp2_router supports multiple WCCPv2 routers
8021
8022 only one of the two may be used at the same time and defines
8023 which version of WCCP to use.
8024DOC_END
df2eec10 8025
8d6275c0 8026NAME: wccp2_router
9fb4efad 8027TYPE: IpAddress_list
8d6275c0 8028LOC: Config.Wccp2.router
cccac0a2 8029DEFAULT: none
638402dd 8030DEFAULT_DOC: WCCPv2 disabled.
8d6275c0 8031IFDEF: USE_WCCPv2
cccac0a2 8032DOC_START
8d6275c0 8033 Use this option to define your WCCP ``home'' router for
8034 Squid.
cccac0a2 8035
8d6275c0 8036 wccp_router supports a single WCCP(v1) router
cccac0a2 8037
8d6275c0 8038 wccp2_router supports multiple WCCPv2 routers
cccac0a2 8039
8d6275c0 8040 only one of the two may be used at the same time and defines
8041 which version of WCCP to use.
8042DOC_END
8043
8044NAME: wccp_version
cccac0a2 8045TYPE: int
8d6275c0 8046LOC: Config.Wccp.version
8047DEFAULT: 4
8048IFDEF: USE_WCCP
cccac0a2 8049DOC_START
8d6275c0 8050 This directive is only relevant if you need to set up WCCP(v1)
8051 to some very old and end-of-life Cisco routers. In all other
8052 setups it must be left unset or at the default setting.
8053 It defines an internal version in the WCCP(v1) protocol,
8054 with version 4 being the officially documented protocol.
cccac0a2 8055
8d6275c0 8056 According to some users, Cisco IOS 11.2 and earlier only
8057 support WCCP version 3. If you're using that or an earlier
8058 version of IOS, you may need to change this value to 3, otherwise
8059 do not specify this parameter.
cccac0a2 8060DOC_END
8061
8d6275c0 8062NAME: wccp2_rebuild_wait
8063TYPE: onoff
8064LOC: Config.Wccp2.rebuildwait
8065DEFAULT: on
8066IFDEF: USE_WCCPv2
8067DOC_START
8068 If this is enabled Squid will wait for the cache dir rebuild to finish
8069 before sending the first wccp2 HereIAm packet
8070DOC_END
cccac0a2 8071
8d6275c0 8072NAME: wccp2_forwarding_method
e313ab0a 8073TYPE: wccp2_method
8d6275c0 8074LOC: Config.Wccp2.forwarding_method
451c4786 8075DEFAULT: gre
8d6275c0 8076IFDEF: USE_WCCPv2
cccac0a2 8077DOC_START
699acd19 8078 WCCP2 allows the setting of forwarding methods between the
8d6275c0 8079 router/switch and the cache. Valid values are as follows:
cccac0a2 8080
451c4786
AJ
8081 gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
8082 l2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
cccac0a2 8083
8d6275c0 8084 Currently (as of IOS 12.4) cisco routers only support GRE.
8085 Cisco switches only support the L2 redirect assignment method.
cccac0a2 8086DOC_END
8087
8d6275c0 8088NAME: wccp2_return_method
e313ab0a 8089TYPE: wccp2_method
8d6275c0 8090LOC: Config.Wccp2.return_method
451c4786 8091DEFAULT: gre
8d6275c0 8092IFDEF: USE_WCCPv2
cccac0a2 8093DOC_START
699acd19 8094 WCCP2 allows the setting of return methods between the
8d6275c0 8095 router/switch and the cache for packets that the cache
8096 decides not to handle. Valid values are as follows:
cccac0a2 8097
451c4786
AJ
8098 gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
8099 l2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
cccac0a2 8100
8d6275c0 8101 Currently (as of IOS 12.4) cisco routers only support GRE.
8102 Cisco switches only support the L2 redirect assignment.
cccac0a2 8103
699acd19 8104 If the "ip wccp redirect exclude in" command has been
8d6275c0 8105 enabled on the cache interface, then it is still safe for
8106 the proxy server to use a l2 redirect method even if this
8107 option is set to GRE.
cccac0a2 8108DOC_END
8109
8d6275c0 8110NAME: wccp2_assignment_method
451c4786 8111TYPE: wccp2_amethod
8d6275c0 8112LOC: Config.Wccp2.assignment_method
451c4786 8113DEFAULT: hash
8d6275c0 8114IFDEF: USE_WCCPv2
cccac0a2 8115DOC_START
8d6275c0 8116 WCCP2 allows the setting of methods to assign the WCCP hash
8117 Valid values are as follows:
cccac0a2 8118
451c4786 8119 hash - Hash assignment
bb7a1781 8120 mask - Mask assignment
cccac0a2 8121
8d6275c0 8122 As a general rule, cisco routers support the hash assignment method
8123 and cisco switches support the mask assignment method.
8124DOC_END
cccac0a2 8125
8d6275c0 8126NAME: wccp2_service
8127TYPE: wccp2_service
8128LOC: Config.Wccp2.info
8d6275c0 8129DEFAULT_IF_NONE: standard 0
638402dd 8130DEFAULT_DOC: Use the 'web-cache' standard service.
8d6275c0 8131IFDEF: USE_WCCPv2
8132DOC_START
8133 WCCP2 allows for multiple traffic services. There are two
8134 types: "standard" and "dynamic". The standard type defines
8135 one service id - http (id 0). The dynamic service ids can be from
8136 51 to 255 inclusive. In order to use a dynamic service id
8137 one must define the type of traffic to be redirected; this is done
8138 using the wccp2_service_info option.
8139
8140 The "standard" type does not require a wccp2_service_info option,
8141 just specifying the service id will suffice.
8142
8143 MD5 service authentication can be enabled by adding
8144 "password=<password>" to the end of this service declaration.
8145
8146 Examples:
8147
8148 wccp2_service standard 0 # for the 'web-cache' standard service
8149 wccp2_service dynamic 80 # a dynamic service type which will be
8150 # fleshed out with subsequent options.
8151 wccp2_service standard 0 password=foo
8d6275c0 8152DOC_END
8153
8154NAME: wccp2_service_info
8155TYPE: wccp2_service_info
8156LOC: Config.Wccp2.info
8157DEFAULT: none
8158IFDEF: USE_WCCPv2
8159DOC_START
8160 Dynamic WCCPv2 services require further information to define the
8161 traffic you wish to have diverted.
8162
8163 The format is:
8164
8165 wccp2_service_info <id> protocol=<protocol> flags=<flag>,<flag>..
8166 priority=<priority> ports=<port>,<port>..
8167
8168 The relevant WCCPv2 flags:
8169 + src_ip_hash, dst_ip_hash
005fe566 8170 + source_port_hash, dst_port_hash
8d6275c0 8171 + src_ip_alt_hash, dst_ip_alt_hash
8172 + src_port_alt_hash, dst_port_alt_hash
8173 + ports_source
8174
8175 The port list can be one to eight entries.
8176
8177 Example:
8178
8179 wccp2_service_info 80 protocol=tcp flags=src_ip_hash,ports_source
8180 priority=240 ports=80
8181
8182 Note: the service id must have been defined by a previous
8183 'wccp2_service dynamic <id>' entry.
8184DOC_END
8185
8186NAME: wccp2_weight
8187TYPE: int
8188LOC: Config.Wccp2.weight
8189DEFAULT: 10000
8190IFDEF: USE_WCCPv2
8191DOC_START
8192 Each cache server gets assigned a set of the destination
8193 hash proportional to their weight.
8194DOC_END
8195
8196NAME: wccp_address
8197TYPE: address
8198LOC: Config.Wccp.address
8199DEFAULT: 0.0.0.0
638402dd 8200DEFAULT_DOC: Address selected by the operating system.
8d6275c0 8201IFDEF: USE_WCCP
638402dd 8202DOC_START
dfd5ce0a 8203 Use this option if you require WCCP(v1) to use a specific
638402dd
AJ
8204 interface address.
8205
8206 The default behavior is to not bind to any specific address.
8207DOC_END
df2eec10 8208
8d6275c0 8209NAME: wccp2_address
8210TYPE: address
8211LOC: Config.Wccp2.address
8212DEFAULT: 0.0.0.0
638402dd 8213DEFAULT_DOC: Address selected by the operating system.
8d6275c0 8214IFDEF: USE_WCCPv2
8215DOC_START
dfd5ce0a 8216 Use this option if you require WCCPv2 to use a specific
8d6275c0 8217 interface address.
8218
8219 The default behavior is to not bind to any specific address.
8220DOC_END
8221
8222COMMENT_START
8223 PERSISTENT CONNECTION HANDLING
8224 -----------------------------------------------------------------------------
8225
8226 Also see "pconn_timeout" in the TIMEOUTS section
8227COMMENT_END
8228
8229NAME: client_persistent_connections
8230TYPE: onoff
8231LOC: Config.onoff.client_pconns
8232DEFAULT: on
638402dd
AJ
8233DOC_START
8234 Persistent connection support for clients.
8235 Squid uses persistent connections (when allowed). You can use
8236 this option to disable persistent connections with clients.
8237DOC_END
8d6275c0 8238
8239NAME: server_persistent_connections
8240TYPE: onoff
8241LOC: Config.onoff.server_pconns
8242DEFAULT: on
8243DOC_START
638402dd
AJ
8244 Persistent connection support for servers.
8245 Squid uses persistent connections (when allowed). You can use
8246 this option to disable persistent connections with servers.
8d6275c0 8247DOC_END
8248
8249NAME: persistent_connection_after_error
8250TYPE: onoff
8251LOC: Config.onoff.error_pconns
0fccfb7f 8252DEFAULT: on
8d6275c0 8253DOC_START
8254 With this directive the use of persistent connections after
8255 HTTP errors can be disabled. Useful if you have clients
8256 who fail to handle errors on persistent connections proper.
8257DOC_END
8258
8259NAME: detect_broken_pconn
8260TYPE: onoff
8261LOC: Config.onoff.detect_broken_server_pconns
8262DEFAULT: off
8263DOC_START
8264 Some servers have been found to incorrectly signal the use
8265 of HTTP/1.0 persistent connections even on replies not
8266 compatible, causing significant delays. This server problem
8267 has mostly been seen on redirects.
8268
8269 By enabling this directive Squid attempts to detect such
8270 broken replies and automatically assume the reply is finished
8271 after 10 seconds timeout.
8272DOC_END
8273
8274COMMENT_START
8275 CACHE DIGEST OPTIONS
8276 -----------------------------------------------------------------------------
8277COMMENT_END
8278
8279NAME: digest_generation
8280IFDEF: USE_CACHE_DIGESTS
8281TYPE: onoff
8282LOC: Config.onoff.digest_generation
8283DEFAULT: on
8284DOC_START
8285 This controls whether the server will generate a Cache Digest
8286 of its contents. By default, Cache Digest generation is
13e917b5 8287 enabled if Squid is compiled with --enable-cache-digests defined.
8d6275c0 8288DOC_END
8289
8290NAME: digest_bits_per_entry
8291IFDEF: USE_CACHE_DIGESTS
8292TYPE: int
8293LOC: Config.digest.bits_per_entry
8294DEFAULT: 5
8295DOC_START
8296 This is the number of bits of the server's Cache Digest which
8297 will be associated with the Digest entry for a given HTTP
8298 Method and URL (public key) combination. The default is 5.
8299DOC_END
8300
8301NAME: digest_rebuild_period
8302IFDEF: USE_CACHE_DIGESTS
8303COMMENT: (seconds)
8304TYPE: time_t
8305LOC: Config.digest.rebuild_period
8306DEFAULT: 1 hour
8307DOC_START
749ceff8 8308 This is the wait time between Cache Digest rebuilds.
8d6275c0 8309DOC_END
8310
8311NAME: digest_rewrite_period
8312COMMENT: (seconds)
8313IFDEF: USE_CACHE_DIGESTS
8314TYPE: time_t
8315LOC: Config.digest.rewrite_period
8316DEFAULT: 1 hour
8317DOC_START
749ceff8 8318 This is the wait time between Cache Digest writes to
8d6275c0 8319 disk.
8320DOC_END
8321
8322NAME: digest_swapout_chunk_size
8323COMMENT: (bytes)
8324TYPE: b_size_t
8325IFDEF: USE_CACHE_DIGESTS
8326LOC: Config.digest.swapout_chunk_size
8327DEFAULT: 4096 bytes
8328DOC_START
8329 This is the number of bytes of the Cache Digest to write to
8330 disk at a time. It defaults to 4096 bytes (4KB), the Squid
8331 default swap page.
8332DOC_END
8333
8334NAME: digest_rebuild_chunk_percentage
8335COMMENT: (percent, 0-100)
8336IFDEF: USE_CACHE_DIGESTS
8337TYPE: int
8338LOC: Config.digest.rebuild_chunk_percentage
8339DEFAULT: 10
8340DOC_START
8341 This is the percentage of the Cache Digest to be scanned at a
8342 time. By default it is set to 10% of the Cache Digest.
8343DOC_END
8344
1db9eacd 8345COMMENT_START
5473c134 8346 SNMP OPTIONS
1db9eacd 8347 -----------------------------------------------------------------------------
8348COMMENT_END
8349
5473c134 8350NAME: snmp_port
ae870270 8351TYPE: u_short
5473c134 8352LOC: Config.Port.snmp
87630341 8353DEFAULT: 0
638402dd 8354DEFAULT_DOC: SNMP disabled.
5473c134 8355IFDEF: SQUID_SNMP
8d6275c0 8356DOC_START
87630341 8357 The port number where Squid listens for SNMP requests. To enable
8358 SNMP support set this to a suitable port number. Port number
8359 3401 is often used for the Squid SNMP agent. By default it's
8360 set to "0" (disabled)
e0855596
AJ
8361
8362 Example:
8363 snmp_port 3401
8d6275c0 8364DOC_END
8365
5473c134 8366NAME: snmp_access
8367TYPE: acl_access
8368LOC: Config.accessList.snmp
638402dd
AJ
8369DEFAULT: none
8370DEFAULT_DOC: Deny, unless rules exist in squid.conf.
5473c134 8371IFDEF: SQUID_SNMP
8d6275c0 8372DOC_START
5473c134 8373 Allowing or denying access to the SNMP port.
8d6275c0 8374
5473c134 8375 All access to the agent is denied by default.
8376 usage:
8d6275c0 8377
5473c134 8378 snmp_access allow|deny [!]aclname ...
8d6275c0 8379
b3567eb5
FC
8380 This clause only supports fast acl types.
8381 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
638402dd 8382
5473c134 8383Example:
8384 snmp_access allow snmppublic localhost
8385 snmp_access deny all
cccac0a2 8386DOC_END
8387
5473c134 8388NAME: snmp_incoming_address
8389TYPE: address
8390LOC: Config.Addrs.snmp_incoming
0eb08770 8391DEFAULT: any_addr
638402dd 8392DEFAULT_DOC: Accept SNMP packets from all machine interfaces.
5473c134 8393IFDEF: SQUID_SNMP
638402dd
AJ
8394DOC_START
8395 Just like 'udp_incoming_address', but for the SNMP port.
8396
8397 snmp_incoming_address is used for the SNMP socket receiving
8398 messages from SNMP agents.
8399
8400 The default snmp_incoming_address is to listen on all
8401 available network interfaces.
8402DOC_END
df2eec10 8403
5473c134 8404NAME: snmp_outgoing_address
8405TYPE: address
8406LOC: Config.Addrs.snmp_outgoing
0eb08770 8407DEFAULT: no_addr
638402dd 8408DEFAULT_DOC: Use snmp_incoming_address or an address selected by the operating system.
5473c134 8409IFDEF: SQUID_SNMP
cccac0a2 8410DOC_START
638402dd 8411 Just like 'udp_outgoing_address', but for the SNMP port.
cccac0a2 8412
5473c134 8413 snmp_outgoing_address is used for SNMP packets returned to SNMP
8414 agents.
cccac0a2 8415
0eb08770
HN
8416 If snmp_outgoing_address is not set it will use the same socket
8417 as snmp_incoming_address. Only change this if you want to have
8418 SNMP replies sent using another address than where this Squid
8419 listens for SNMP queries.
cccac0a2 8420
5473c134 8421 NOTE, snmp_incoming_address and snmp_outgoing_address can not have
638402dd 8422 the same value since they both use the same port.
cccac0a2 8423DOC_END
8424
5473c134 8425COMMENT_START
8426 ICP OPTIONS
8427 -----------------------------------------------------------------------------
8428COMMENT_END
8429
8430NAME: icp_port udp_port
ae870270 8431TYPE: u_short
5473c134 8432DEFAULT: 0
638402dd 8433DEFAULT_DOC: ICP disabled.
5473c134 8434LOC: Config.Port.icp
cccac0a2 8435DOC_START
5473c134 8436 The port number where Squid sends and receives ICP queries to
8437 and from neighbor caches. The standard UDP port for ICP is 3130.
e0855596
AJ
8438
8439 Example:
8440 icp_port @DEFAULT_ICP_PORT@
cccac0a2 8441DOC_END
8442
5473c134 8443NAME: htcp_port
8444IFDEF: USE_HTCP
ae870270 8445TYPE: u_short
87630341 8446DEFAULT: 0
638402dd 8447DEFAULT_DOC: HTCP disabled.
5473c134 8448LOC: Config.Port.htcp
cccac0a2 8449DOC_START
5473c134 8450 The port number where Squid sends and receives HTCP queries to
87630341 8451 and from neighbor caches. To turn it on you want to set it to
638402dd 8452 4827.
e0855596
AJ
8453
8454 Example:
8455 htcp_port 4827
cccac0a2 8456DOC_END
8457
8458NAME: log_icp_queries
8459COMMENT: on|off
8460TYPE: onoff
8461DEFAULT: on
8462LOC: Config.onoff.log_udp
8463DOC_START
8464 If set, ICP queries are logged to access.log. You may wish
8465 do disable this if your ICP load is VERY high to speed things
8466 up or to simplify log analysis.
8467DOC_END
8468
5473c134 8469NAME: udp_incoming_address
8470TYPE: address
8471LOC:Config.Addrs.udp_incoming
0eb08770 8472DEFAULT: any_addr
638402dd 8473DEFAULT_DOC: Accept packets from all machine interfaces.
8524d4b2 8474DOC_START
8475 udp_incoming_address is used for UDP packets received from other
8476 caches.
8477
8478 The default behavior is to not bind to any specific address.
8479
8480 Only change this if you want to have all UDP queries received on
8481 a specific interface/address.
8482
8483 NOTE: udp_incoming_address is used by the ICP, HTCP, and DNS
8484 modules. Altering it will affect all of them in the same manner.
8485
8486 see also; udp_outgoing_address
8487
8488 NOTE, udp_incoming_address and udp_outgoing_address can not
8489 have the same value since they both use the same port.
8490DOC_END
cccac0a2 8491
5473c134 8492NAME: udp_outgoing_address
8493TYPE: address
8494LOC: Config.Addrs.udp_outgoing
0eb08770 8495DEFAULT: no_addr
638402dd 8496DEFAULT_DOC: Use udp_incoming_address or an address selected by the operating system.
cccac0a2 8497DOC_START
8524d4b2 8498 udp_outgoing_address is used for UDP packets sent out to other
5473c134 8499 caches.
cccac0a2 8500
5473c134 8501 The default behavior is to not bind to any specific address.
cccac0a2 8502
8524d4b2 8503 Instead it will use the same socket as udp_incoming_address.
8504 Only change this if you want to have UDP queries sent using another
8505 address than where this Squid listens for UDP queries from other
5473c134 8506 caches.
8507
8524d4b2 8508 NOTE: udp_outgoing_address is used by the ICP, HTCP, and DNS
8509 modules. Altering it will affect all of them in the same manner.
8510
8511 see also; udp_incoming_address
8512
5473c134 8513 NOTE, udp_incoming_address and udp_outgoing_address can not
8524d4b2 8514 have the same value since they both use the same port.
cccac0a2 8515DOC_END
8516
3d1e3e43 8517NAME: icp_hit_stale
8518COMMENT: on|off
8519TYPE: onoff
8520DEFAULT: off
8521LOC: Config.onoff.icp_hit_stale
8522DOC_START
8523 If you want to return ICP_HIT for stale cache objects, set this
8524 option to 'on'. If you have sibling relationships with caches
8525 in other administrative domains, this should be 'off'. If you only
8526 have sibling relationships with caches under your control,
8527 it is probably okay to set this to 'on'.
8528 If set to 'on', your siblings should use the option "allow-miss"
8529 on their cache_peer lines for connecting to you.
8530DOC_END
8531
5473c134 8532NAME: minimum_direct_hops
cccac0a2 8533TYPE: int
5473c134 8534DEFAULT: 4
8535LOC: Config.minDirectHops
cccac0a2 8536DOC_START
5473c134 8537 If using the ICMP pinging stuff, do direct fetches for sites
8538 which are no more than this many hops away.
cccac0a2 8539DOC_END
8540
5473c134 8541NAME: minimum_direct_rtt
638402dd 8542COMMENT: (msec)
5473c134 8543TYPE: int
8544DEFAULT: 400
8545LOC: Config.minDirectRtt
cccac0a2 8546DOC_START
5473c134 8547 If using the ICMP pinging stuff, do direct fetches for sites
8548 which are no more than this many rtt milliseconds away.
cccac0a2 8549DOC_END
8550
cccac0a2 8551NAME: netdb_low
8552TYPE: int
8553DEFAULT: 900
8554LOC: Config.Netdb.low
638402dd
AJ
8555DOC_START
8556 The low water mark for the ICMP measurement database.
8557
8558 Note: high watermark controlled by netdb_high directive.
8559
8560 These watermarks are counts, not percents. The defaults are
8561 (low) 900 and (high) 1000. When the high water mark is
8562 reached, database entries will be deleted until the low
8563 mark is reached.
8564DOC_END
cccac0a2 8565
8566NAME: netdb_high
8567TYPE: int
8568DEFAULT: 1000
8569LOC: Config.Netdb.high
8570DOC_START
638402dd
AJ
8571 The high water mark for the ICMP measurement database.
8572
8573 Note: low watermark controlled by netdb_low directive.
8574
8575 These watermarks are counts, not percents. The defaults are
8576 (low) 900 and (high) 1000. When the high water mark is
8577 reached, database entries will be deleted until the low
8578 mark is reached.
cccac0a2 8579DOC_END
8580
cccac0a2 8581NAME: netdb_ping_period
8582TYPE: time_t
8583LOC: Config.Netdb.period
8584DEFAULT: 5 minutes
8585DOC_START
8586 The minimum period for measuring a site. There will be at
8587 least this much delay between successive pings to the same
8588 network. The default is five minutes.
8589DOC_END
8590
cccac0a2 8591NAME: query_icmp
8592COMMENT: on|off
8593TYPE: onoff
8594DEFAULT: off
8595LOC: Config.onoff.query_icmp
8596DOC_START
8597 If you want to ask your peers to include ICMP data in their ICP
8598 replies, enable this option.
8599
8600 If your peer has configured Squid (during compilation) with
7f7db318 8601 '--enable-icmp' that peer will send ICMP pings to origin server
8602 sites of the URLs it receives. If you enable this option the
cccac0a2 8603 ICP replies from that peer will include the ICMP data (if available).
8604 Then, when choosing a parent cache, Squid will choose the parent with
8605 the minimal RTT to the origin server. When this happens, the
8606 hierarchy field of the access.log will be
8607 "CLOSEST_PARENT_MISS". This option is off by default.
8608DOC_END
8609
8610NAME: test_reachability
8611COMMENT: on|off
8612TYPE: onoff
8613DEFAULT: off
8614LOC: Config.onoff.test_reachability
8615DOC_START
8616 When this is 'on', ICP MISS replies will be ICP_MISS_NOFETCH
8617 instead of ICP_MISS if the target host is NOT in the ICMP
8618 database, or has a zero RTT.
8619DOC_END
8620
5473c134 8621NAME: icp_query_timeout
8622COMMENT: (msec)
8623DEFAULT: 0
638402dd 8624DEFAULT_DOC: Dynamic detection.
5473c134 8625TYPE: int
8626LOC: Config.Timeout.icp_query
4c3ef9b2 8627DOC_START
5473c134 8628 Normally Squid will automatically determine an optimal ICP
8629 query timeout value based on the round-trip-time of recent ICP
8630 queries. If you want to override the value determined by
8631 Squid, set this 'icp_query_timeout' to a non-zero value. This
8632 value is specified in MILLISECONDS, so, to use a 2-second
8633 timeout (the old default), you would write:
4c3ef9b2 8634
5473c134 8635 icp_query_timeout 2000
4c3ef9b2 8636DOC_END
8637
5473c134 8638NAME: maximum_icp_query_timeout
8639COMMENT: (msec)
8640DEFAULT: 2000
8641TYPE: int
8642LOC: Config.Timeout.icp_query_max
cccac0a2 8643DOC_START
5473c134 8644 Normally the ICP query timeout is determined dynamically. But
8645 sometimes it can lead to very large values (say 5 seconds).
8646 Use this option to put an upper limit on the dynamic timeout
8647 value. Do NOT use this option to always use a fixed (instead
8648 of a dynamic) timeout value. To set a fixed timeout see the
8649 'icp_query_timeout' directive.
cccac0a2 8650DOC_END
8651
5473c134 8652NAME: minimum_icp_query_timeout
8653COMMENT: (msec)
8654DEFAULT: 5
8655TYPE: int
8656LOC: Config.Timeout.icp_query_min
cccac0a2 8657DOC_START
5473c134 8658 Normally the ICP query timeout is determined dynamically. But
8659 sometimes it can lead to very small timeouts, even lower than
8660 the normal latency variance on your link due to traffic.
8661 Use this option to put an lower limit on the dynamic timeout
8662 value. Do NOT use this option to always use a fixed (instead
8663 of a dynamic) timeout value. To set a fixed timeout see the
8664 'icp_query_timeout' directive.
cccac0a2 8665DOC_END
8666
5473c134 8667NAME: background_ping_rate
8668COMMENT: time-units
8669TYPE: time_t
8670DEFAULT: 10 seconds
8671LOC: Config.backgroundPingRate
cccac0a2 8672DOC_START
5473c134 8673 Controls how often the ICP pings are sent to siblings that
8674 have background-ping set.
cccac0a2 8675DOC_END
8676
5473c134 8677COMMENT_START
8678 MULTICAST ICP OPTIONS
8679 -----------------------------------------------------------------------------
8680COMMENT_END
8681
8682NAME: mcast_groups
8683TYPE: wordlist
8684LOC: Config.mcast_group_list
8c01ada0 8685DEFAULT: none
8686DOC_START
5473c134 8687 This tag specifies a list of multicast groups which your server
8688 should join to receive multicasted ICP queries.
8c01ada0 8689
5473c134 8690 NOTE! Be very careful what you put here! Be sure you
8691 understand the difference between an ICP _query_ and an ICP
8692 _reply_. This option is to be set only if you want to RECEIVE
8693 multicast queries. Do NOT set this option to SEND multicast
8694 ICP (use cache_peer for that). ICP replies are always sent via
8695 unicast, so this option does not affect whether or not you will
8696 receive replies from multicast group members.
8c01ada0 8697
5473c134 8698 You must be very careful to NOT use a multicast address which
8699 is already in use by another group of caches.
8c01ada0 8700
5473c134 8701 If you are unsure about multicast, please read the Multicast
8702 chapter in the Squid FAQ (http://www.squid-cache.org/FAQ/).
8c01ada0 8703
5473c134 8704 Usage: mcast_groups 239.128.16.128 224.0.1.20
8c01ada0 8705
5473c134 8706 By default, Squid doesn't listen on any multicast groups.
8707DOC_END
8c01ada0 8708
5473c134 8709NAME: mcast_miss_addr
8710IFDEF: MULTICAST_MISS_STREAM
8711TYPE: address
8712LOC: Config.mcast_miss.addr
0eb08770 8713DEFAULT: no_addr
638402dd 8714DEFAULT_DOC: disabled.
5473c134 8715DOC_START
8716 If you enable this option, every "cache miss" URL will
8717 be sent out on the specified multicast address.
cccac0a2 8718
5473c134 8719 Do not enable this option unless you are are absolutely
8720 certain you understand what you are doing.
cccac0a2 8721DOC_END
8722
5473c134 8723NAME: mcast_miss_ttl
8724IFDEF: MULTICAST_MISS_STREAM
ae870270 8725TYPE: u_short
5473c134 8726LOC: Config.mcast_miss.ttl
8727DEFAULT: 16
cccac0a2 8728DOC_START
5473c134 8729 This is the time-to-live value for packets multicasted
8730 when multicasting off cache miss URLs is enabled. By
8731 default this is set to 'site scope', i.e. 16.
8732DOC_END
cccac0a2 8733
5473c134 8734NAME: mcast_miss_port
8735IFDEF: MULTICAST_MISS_STREAM
ae870270 8736TYPE: u_short
5473c134 8737LOC: Config.mcast_miss.port
8738DEFAULT: 3135
8739DOC_START
8740 This is the port number to be used in conjunction with
8741 'mcast_miss_addr'.
8742DOC_END
cccac0a2 8743
5473c134 8744NAME: mcast_miss_encode_key
8745IFDEF: MULTICAST_MISS_STREAM
8746TYPE: string
8747LOC: Config.mcast_miss.encode_key
8748DEFAULT: XXXXXXXXXXXXXXXX
8749DOC_START
8750 The URLs that are sent in the multicast miss stream are
8751 encrypted. This is the encryption key.
8752DOC_END
8c01ada0 8753
5473c134 8754NAME: mcast_icp_query_timeout
8755COMMENT: (msec)
8756DEFAULT: 2000
8757TYPE: int
8758LOC: Config.Timeout.mcast_icp_query
8759DOC_START
8760 For multicast peers, Squid regularly sends out ICP "probes" to
8761 count how many other peers are listening on the given multicast
8762 address. This value specifies how long Squid should wait to
8763 count all the replies. The default is 2000 msec, or 2
8764 seconds.
cccac0a2 8765DOC_END
8766
5473c134 8767COMMENT_START
8768 INTERNAL ICON OPTIONS
8769 -----------------------------------------------------------------------------
8770COMMENT_END
8771
cccac0a2 8772NAME: icon_directory
8773TYPE: string
8774LOC: Config.icons.directory
8775DEFAULT: @DEFAULT_ICON_DIR@
8776DOC_START
8777 Where the icons are stored. These are normally kept in
8778 @DEFAULT_ICON_DIR@
8779DOC_END
8780
f024c970 8781NAME: global_internal_static
8782TYPE: onoff
8783LOC: Config.onoff.global_internal_static
8784DEFAULT: on
8785DOC_START
8786 This directive controls is Squid should intercept all requests for
8787 /squid-internal-static/ no matter which host the URL is requesting
8788 (default on setting), or if nothing special should be done for
8789 such URLs (off setting). The purpose of this directive is to make
8790 icons etc work better in complex cache hierarchies where it may
8791 not always be possible for all corners in the cache mesh to reach
8792 the server generating a directory listing.
8793DOC_END
8794
5473c134 8795NAME: short_icon_urls
8796TYPE: onoff
8797LOC: Config.icons.use_short_names
8798DEFAULT: on
8799DOC_START
8800 If this is enabled Squid will use short URLs for icons.
8801 If disabled it will revert to the old behavior of including
8802 it's own name and port in the URL.
8803
8804 If you run a complex cache hierarchy with a mix of Squid and
8805 other proxies you may need to disable this directive.
8806DOC_END
8807
8808COMMENT_START
8809 ERROR PAGE OPTIONS
8810 -----------------------------------------------------------------------------
8811COMMENT_END
8812
8813NAME: error_directory
8814TYPE: string
8815LOC: Config.errorDirectory
43000484 8816DEFAULT: none
638402dd 8817DEFAULT_DOC: Send error pages in the clients preferred language
5473c134 8818DOC_START
8819 If you wish to create your own versions of the default
43000484
AJ
8820 error files to customize them to suit your company copy
8821 the error/template files to another directory and point
8822 this tag at them.
8823
8824 WARNING: This option will disable multi-language support
8825 on error pages if used.
5473c134 8826
8827 The squid developers are interested in making squid available in
8828 a wide variety of languages. If you are making translations for a
43000484 8829 language that Squid does not currently provide please consider
5473c134 8830 contributing your translation back to the project.
43000484
AJ
8831 http://wiki.squid-cache.org/Translations
8832
8833 The squid developers working on translations are happy to supply drop-in
8834 translated error files in exchange for any new language contributions.
8835DOC_END
8836
8837NAME: error_default_language
8838IFDEF: USE_ERR_LOCALES
8839TYPE: string
8840LOC: Config.errorDefaultLanguage
8841DEFAULT: none
638402dd 8842DEFAULT_DOC: Generate English language pages.
43000484
AJ
8843DOC_START
8844 Set the default language which squid will send error pages in
8845 if no existing translation matches the clients language
8846 preferences.
8847
8848 If unset (default) generic English will be used.
8849
8850 The squid developers are interested in making squid available in
8851 a wide variety of languages. If you are interested in making
8852 translations for any language see the squid wiki for details.
8853 http://wiki.squid-cache.org/Translations
5473c134 8854DOC_END
8855
c411820c
AJ
8856NAME: error_log_languages
8857IFDEF: USE_ERR_LOCALES
8858TYPE: onoff
8859LOC: Config.errorLogMissingLanguages
8860DEFAULT: on
8861DOC_START
8862 Log to cache.log what languages users are attempting to
8863 auto-negotiate for translations.
8864
8865 Successful negotiations are not logged. Only failures
8866 have meaning to indicate that Squid may need an upgrade
0c49f10e 8867 of its error page translations.
c411820c
AJ
8868DOC_END
8869
5b52cb6c
AJ
8870NAME: err_page_stylesheet
8871TYPE: string
8872LOC: Config.errorStylesheet
8873DEFAULT: @DEFAULT_CONFIG_DIR@/errorpage.css
8874DOC_START
8875 CSS Stylesheet to pattern the display of Squid default error pages.
8876
8877 For information on CSS see http://www.w3.org/Style/CSS/
8878DOC_END
8879
5473c134 8880NAME: err_html_text
8881TYPE: eol
8882LOC: Config.errHtmlText
8883DEFAULT: none
8884DOC_START
8885 HTML text to include in error messages. Make this a "mailto"
8886 URL to your admin address, or maybe just a link to your
8887 organizations Web page.
8888
8889 To include this in your error messages, you must rewrite
8890 the error template files (found in the "errors" directory).
8891 Wherever you want the 'err_html_text' line to appear,
8892 insert a %L tag in the error template file.
8893DOC_END
8894
8895NAME: email_err_data
8896COMMENT: on|off
8897TYPE: onoff
8898LOC: Config.onoff.emailErrData
8899DEFAULT: on
8900DOC_START
8901 If enabled, information about the occurred error will be
8902 included in the mailto links of the ERR pages (if %W is set)
8903 so that the email body contains the data.
8904 Syntax is <A HREF="mailto:%w%W">%w</A>
8905DOC_END
8906
8907NAME: deny_info
8908TYPE: denyinfo
8909LOC: Config.denyInfoList
8910DEFAULT: none
8911DOC_START
8912 Usage: deny_info err_page_name acl
8913 or deny_info http://... acl
43000484 8914 or deny_info TCP_RESET acl
5473c134 8915
8916 This can be used to return a ERR_ page for requests which
8917 do not pass the 'http_access' rules. Squid remembers the last
8918 acl it evaluated in http_access, and if a 'deny_info' line exists
8919 for that ACL Squid returns a corresponding error page.
8920
8921 The acl is typically the last acl on the http_access deny line which
8922 denied access. The exceptions to this rule are:
8923 - When Squid needs to request authentication credentials. It's then
8924 the first authentication related acl encountered
8925 - When none of the http_access lines matches. It's then the last
8926 acl processed on the last http_access line.
3af10ac0
AR
8927 - When the decision to deny access was made by an adaptation service,
8928 the acl name is the corresponding eCAP or ICAP service_name.
5473c134 8929
43000484
AJ
8930 NP: If providing your own custom error pages with error_directory
8931 you may also specify them by your custom file name:
8932 Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
5473c134 8933
2f8abb64 8934 By default Squid will send "403 Forbidden". A different 4xx or 5xx
aed9a15b
AJ
8935 may be specified by prefixing the file name with the code and a colon.
8936 e.g. 404:ERR_CUSTOM_ACCESS_DENIED
8937
5473c134 8938 Alternatively you can tell Squid to reset the TCP connection
8939 by specifying TCP_RESET.
15b02e9a
AJ
8940
8941 Or you can specify an error URL or URL pattern. The browsers will
aed9a15b
AJ
8942 get redirected to the specified URL after formatting tags have
8943 been replaced. Redirect will be done with 302 or 307 according to
8944 HTTP/1.1 specs. A different 3xx code may be specified by prefixing
8945 the URL. e.g. 303:http://example.com/
15b02e9a
AJ
8946
8947 URL FORMAT TAGS:
8948 %a - username (if available. Password NOT included)
ea35939b 8949 %A - Local listening IP address the client connection was connected to
15b02e9a
AJ
8950 %B - FTP path URL
8951 %e - Error number
8952 %E - Error description
8953 %h - Squid hostname
8954 %H - Request domain name
8955 %i - Client IP Address
8956 %M - Request Method
05dbf66c 8957 %O - Unescaped message result from external ACL helper
15b02e9a
AJ
8958 %o - Message result from external ACL helper
8959 %p - Request Port number
8960 %P - Request Protocol name
8961 %R - Request URL path
8962 %T - Timestamp in RFC 1123 format
8963 %U - Full canonical URL from client
8964 (HTTPS URLs terminate with *)
8965 %u - Full canonical URL from client
8966 %w - Admin email from squid.conf
e4a8468d 8967 %x - Error name
15b02e9a
AJ
8968 %% - Literal percent (%) code
8969
5473c134 8970DOC_END
8971
8972COMMENT_START
9603207d 8973 OPTIONS INFLUENCING REQUEST FORWARDING
5473c134 8974 -----------------------------------------------------------------------------
8975COMMENT_END
8976
8977NAME: nonhierarchical_direct
e72a0ec0 8978TYPE: onoff
5473c134 8979LOC: Config.onoff.nonhierarchical_direct
e72a0ec0 8980DEFAULT: on
8981DOC_START
5473c134 8982 By default, Squid will send any non-hierarchical requests
9967aef6 8983 (not cacheable request type) direct to origin servers.
e72a0ec0 8984
638402dd 8985 When this is set to "off", Squid will prefer to send these
5473c134 8986 requests to parents.
0b0cfcf2 8987
5473c134 8988 Note that in most configurations, by turning this off you will only
8989 add latency to these request without any improvement in global hit
8990 ratio.
0b0cfcf2 8991
638402dd
AJ
8992 This option only sets a preference. If the parent is unavailable a
8993 direct connection to the origin server may still be attempted. To
8994 completely prevent direct connections use never_direct.
8d6275c0 8995DOC_END
0b0cfcf2 8996
5473c134 8997NAME: prefer_direct
8d6275c0 8998TYPE: onoff
5473c134 8999LOC: Config.onoff.prefer_direct
8d6275c0 9000DEFAULT: off
9001DOC_START
5473c134 9002 Normally Squid tries to use parents for most requests. If you for some
9003 reason like it to first try going direct and only use a parent if
9004 going direct fails set this to on.
0b0cfcf2 9005
5473c134 9006 By combining nonhierarchical_direct off and prefer_direct on you
9007 can set up Squid to use a parent as a backup path if going direct
9008 fails.
9009
9010 Note: If you want Squid to use parents for all requests see
9011 the never_direct directive. prefer_direct only modifies how Squid
9012 acts on cacheable requests.
cccac0a2 9013DOC_END
9014
96598f93
AJ
9015NAME: cache_miss_revalidate
9016COMMENT: on|off
9017TYPE: onoff
9018DEFAULT: on
9019LOC: Config.onoff.cache_miss_revalidate
9020DOC_START
2d4eefd9
AJ
9021 RFC 7232 defines a conditional request mechanism to prevent
9022 response objects being unnecessarily transferred over the network.
9023 If that mechanism is used by the client and a cache MISS occurs
9024 it can prevent new cache entries being created.
9025
9026 This option determines whether Squid on cache MISS will pass the
9027 client revalidation request to the server or tries to fetch new
9028 content for caching. It can be useful while the cache is mostly
9029 empty to more quickly have the cache populated by generating
9030 non-conditional GETs.
96598f93
AJ
9031
9032 When set to 'on' (default), Squid will pass all client If-* headers
2d4eefd9
AJ
9033 to the server. This permits server responses without a cacheable
9034 payload to be delivered and on MISS no new cache entry is created.
96598f93
AJ
9035
9036 When set to 'off' and if the request is cacheable, Squid will
9037 remove the clients If-Modified-Since and If-None-Match headers from
2d4eefd9
AJ
9038 the request sent to the server. This requests a 200 status response
9039 from the server to create a new cache entry with.
96598f93
AJ
9040DOC_END
9041
5473c134 9042NAME: always_direct
8d6275c0 9043TYPE: acl_access
5473c134 9044LOC: Config.accessList.AlwaysDirect
0b0cfcf2 9045DEFAULT: none
638402dd 9046DEFAULT_DOC: Prevent any cache_peer being used for this request.
0b0cfcf2 9047DOC_START
5473c134 9048 Usage: always_direct allow|deny [!]aclname ...
0b0cfcf2 9049
5473c134 9050 Here you can use ACL elements to specify requests which should
9051 ALWAYS be forwarded by Squid to the origin servers without using
9052 any peers. For example, to always directly forward requests for
9053 local servers ignoring any parents or siblings you may have use
9054 something like:
0b0cfcf2 9055
5473c134 9056 acl local-servers dstdomain my.domain.net
9057 always_direct allow local-servers
0b0cfcf2 9058
5473c134 9059 To always forward FTP requests directly, use
f16fbc82 9060
5473c134 9061 acl FTP proto FTP
9062 always_direct allow FTP
cccac0a2 9063
5473c134 9064 NOTE: There is a similar, but opposite option named
9065 'never_direct'. You need to be aware that "always_direct deny
9066 foo" is NOT the same thing as "never_direct allow foo". You
9067 may need to use a deny rule to exclude a more-specific case of
9068 some other rule. Example:
8d6275c0 9069
5473c134 9070 acl local-external dstdomain external.foo.net
9071 acl local-servers dstdomain .foo.net
9072 always_direct deny local-external
9073 always_direct allow local-servers
8d6275c0 9074
5473c134 9075 NOTE: If your goal is to make the client forward the request
9076 directly to the origin server bypassing Squid then this needs
9077 to be done in the client configuration. Squid configuration
9078 can only tell Squid how Squid should fetch the object.
8d6275c0 9079
5473c134 9080 NOTE: This directive is not related to caching. The replies
9081 is cached as usual even if you use always_direct. To not cache
b3567eb5 9082 the replies see the 'cache' directive.
5473c134 9083
b3567eb5
FC
9084 This clause supports both fast and slow acl types.
9085 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
cccac0a2 9086DOC_END
0976f8db 9087
5473c134 9088NAME: never_direct
9089TYPE: acl_access
9090LOC: Config.accessList.NeverDirect
9091DEFAULT: none
638402dd 9092DEFAULT_DOC: Allow DNS results to be used for this request.
8d6275c0 9093DOC_START
5473c134 9094 Usage: never_direct allow|deny [!]aclname ...
9095
9096 never_direct is the opposite of always_direct. Please read
9097 the description for always_direct if you have not already.
9098
9099 With 'never_direct' you can use ACL elements to specify
9100 requests which should NEVER be forwarded directly to origin
9101 servers. For example, to force the use of a proxy for all
9102 requests, except those in your local domain use something like:
9103
9104 acl local-servers dstdomain .foo.net
5473c134 9105 never_direct deny local-servers
9106 never_direct allow all
9107
9108 or if Squid is inside a firewall and there are local intranet
9109 servers inside the firewall use something like:
9110
9111 acl local-intranet dstdomain .foo.net
9112 acl local-external dstdomain external.foo.net
9113 always_direct deny local-external
9114 always_direct allow local-intranet
9115 never_direct allow all
9116
b3567eb5
FC
9117 This clause supports both fast and slow acl types.
9118 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
8d6275c0 9119DOC_END
0976f8db 9120
5473c134 9121COMMENT_START
9122 ADVANCED NETWORKING OPTIONS
9123 -----------------------------------------------------------------------------
9124COMMENT_END
9125
65d448bc 9126NAME: incoming_udp_average incoming_icp_average
cccac0a2 9127TYPE: int
9128DEFAULT: 6
65d448bc
AJ
9129LOC: Config.comm_incoming.udp.average
9130DOC_START
9131 Heavy voodoo here. I can't even believe you are reading this.
9132 Are you crazy? Don't even think about adjusting these unless
9133 you understand the algorithms in comm_select.c first!
9134DOC_END
cccac0a2 9135
65d448bc 9136NAME: incoming_tcp_average incoming_http_average
cccac0a2 9137TYPE: int
9138DEFAULT: 4
65d448bc
AJ
9139LOC: Config.comm_incoming.tcp.average
9140DOC_START
9141 Heavy voodoo here. I can't even believe you are reading this.
9142 Are you crazy? Don't even think about adjusting these unless
9143 you understand the algorithms in comm_select.c first!
9144DOC_END
cccac0a2 9145
9146NAME: incoming_dns_average
9147TYPE: int
9148DEFAULT: 4
65d448bc
AJ
9149LOC: Config.comm_incoming.dns.average
9150DOC_START
9151 Heavy voodoo here. I can't even believe you are reading this.
9152 Are you crazy? Don't even think about adjusting these unless
9153 you understand the algorithms in comm_select.c first!
9154DOC_END
cccac0a2 9155
65d448bc 9156NAME: min_udp_poll_cnt min_icp_poll_cnt
cccac0a2 9157TYPE: int
9158DEFAULT: 8
65d448bc
AJ
9159LOC: Config.comm_incoming.udp.min_poll
9160DOC_START
9161 Heavy voodoo here. I can't even believe you are reading this.
9162 Are you crazy? Don't even think about adjusting these unless
9163 you understand the algorithms in comm_select.c first!
9164DOC_END
cccac0a2 9165
9166NAME: min_dns_poll_cnt
9167TYPE: int
9168DEFAULT: 8
65d448bc
AJ
9169LOC: Config.comm_incoming.dns.min_poll
9170DOC_START
9171 Heavy voodoo here. I can't even believe you are reading this.
9172 Are you crazy? Don't even think about adjusting these unless
9173 you understand the algorithms in comm_select.c first!
9174DOC_END
cccac0a2 9175
65d448bc 9176NAME: min_tcp_poll_cnt min_http_poll_cnt
cccac0a2 9177TYPE: int
9178DEFAULT: 8
65d448bc 9179LOC: Config.comm_incoming.tcp.min_poll
cccac0a2 9180DOC_START
5473c134 9181 Heavy voodoo here. I can't even believe you are reading this.
9182 Are you crazy? Don't even think about adjusting these unless
9183 you understand the algorithms in comm_select.c first!
9184DOC_END
9185
9186NAME: accept_filter
5473c134 9187TYPE: string
9188DEFAULT: none
9189LOC: Config.accept_filter
9190DOC_START
0b4d4be5 9191 FreeBSD:
9192
5473c134 9193 The name of an accept(2) filter to install on Squid's
9194 listen socket(s). This feature is perhaps specific to
9195 FreeBSD and requires support in the kernel.
9196
9197 The 'httpready' filter delays delivering new connections
2324cda2 9198 to Squid until a full HTTP request has been received.
0b4d4be5 9199 See the accf_http(9) man page for details.
9200
9201 The 'dataready' filter delays delivering new connections
9202 to Squid until there is some data to process.
9203 See the accf_dataready(9) man page for details.
9204
9205 Linux:
9603207d 9206
0b4d4be5 9207 The 'data' filter delays delivering of new connections
9208 to Squid until there is some data to process by TCP_ACCEPT_DEFER.
9209 You may optionally specify a number of seconds to wait by
9210 'data=N' where N is the number of seconds. Defaults to 30
9211 if not specified. See the tcp(7) man page for details.
5473c134 9212EXAMPLE:
0b4d4be5 9213# FreeBSD
5473c134 9214accept_filter httpready
0b4d4be5 9215# Linux
9216accept_filter data
5473c134 9217DOC_END
9218
ab2ecb0e
AJ
9219NAME: client_ip_max_connections
9220TYPE: int
9221LOC: Config.client_ip_max_connections
9222DEFAULT: -1
638402dd 9223DEFAULT_DOC: No limit.
ab2ecb0e
AJ
9224DOC_START
9225 Set an absolute limit on the number of connections a single
9226 client IP can use. Any more than this and Squid will begin to drop
9227 new connections from the client until it closes some links.
9228
6ea12e8f 9229 Note that this is a global limit. It affects all HTTP, HTCP, and FTP
ab2ecb0e
AJ
9230 connections from the client. For finer control use the ACL access controls.
9231
9232 Requires client_db to be enabled (the default).
9233
2f8abb64 9234 WARNING: This may noticeably slow down traffic received via external proxies
ab2ecb0e
AJ
9235 or NAT devices and cause them to rebound error messages back to their clients.
9236DOC_END
9237
5473c134 9238NAME: tcp_recv_bufsize
9239COMMENT: (bytes)
9240TYPE: b_size_t
9241DEFAULT: 0 bytes
638402dd 9242DEFAULT_DOC: Use operating system TCP defaults.
5473c134 9243LOC: Config.tcpRcvBufsz
9244DOC_START
9245 Size of receive buffer to set for TCP sockets. Probably just
638402dd
AJ
9246 as easy to change your kernel's default.
9247 Omit from squid.conf to use the default buffer size.
5473c134 9248DOC_END
9249
9250COMMENT_START
9251 ICAP OPTIONS
9252 -----------------------------------------------------------------------------
9253COMMENT_END
9254
9255NAME: icap_enable
9256TYPE: onoff
9257IFDEF: ICAP_CLIENT
9258COMMENT: on|off
26cc52cb 9259LOC: Adaptation::Icap::TheConfig.onoff
5473c134 9260DEFAULT: off
9261DOC_START
53e738c6 9262 If you want to enable the ICAP module support, set this to on.
5473c134 9263DOC_END
9264
9265NAME: icap_connect_timeout
9266TYPE: time_t
9267DEFAULT: none
26cc52cb 9268LOC: Adaptation::Icap::TheConfig.connect_timeout_raw
5473c134 9269IFDEF: ICAP_CLIENT
9270DOC_START
9271 This parameter specifies how long to wait for the TCP connect to
9272 the requested ICAP server to complete before giving up and either
9273 terminating the HTTP transaction or bypassing the failure.
9274
9275 The default for optional services is peer_connect_timeout.
9276 The default for essential services is connect_timeout.
9277 If this option is explicitly set, its value applies to all services.
9278DOC_END
9279
9280NAME: icap_io_timeout
9281COMMENT: time-units
9282TYPE: time_t
9283DEFAULT: none
638402dd 9284DEFAULT_DOC: Use read_timeout.
26cc52cb 9285LOC: Adaptation::Icap::TheConfig.io_timeout_raw
5473c134 9286IFDEF: ICAP_CLIENT
9287DOC_START
9288 This parameter specifies how long to wait for an I/O activity on
9289 an established, active ICAP connection before giving up and
9290 either terminating the HTTP transaction or bypassing the
9291 failure.
5473c134 9292DOC_END
9293
9294NAME: icap_service_failure_limit
8277060a
CT
9295COMMENT: limit [in memory-depth time-units]
9296TYPE: icap_service_failure_limit
5473c134 9297IFDEF: ICAP_CLIENT
8277060a 9298LOC: Adaptation::Icap::TheConfig
5473c134 9299DEFAULT: 10
9300DOC_START
9301 The limit specifies the number of failures that Squid tolerates
9302 when establishing a new TCP connection with an ICAP service. If
9303 the number of failures exceeds the limit, the ICAP service is
9304 not used for new ICAP requests until it is time to refresh its
8277060a 9305 OPTIONS.
5473c134 9306
9307 A negative value disables the limit. Without the limit, an ICAP
9308 service will not be considered down due to connectivity failures
9309 between ICAP OPTIONS requests.
8277060a
CT
9310
9311 Squid forgets ICAP service failures older than the specified
9603207d 9312 value of memory-depth. The memory fading algorithm
9313 is approximate because Squid does not remember individual
8277060a
CT
9314 errors but groups them instead, splitting the option
9315 value into ten time slots of equal length.
9316
9603207d 9317 When memory-depth is 0 and by default this option has no
8277060a
CT
9318 effect on service failure expiration.
9319
9320 Squid always forgets failures when updating service settings
9321 using an ICAP OPTIONS transaction, regardless of this option
9322 setting.
9323
9324 For example,
9325 # suspend service usage after 10 failures in 5 seconds:
9326 icap_service_failure_limit 10 in 5 seconds
cccac0a2 9327DOC_END
9328
5473c134 9329NAME: icap_service_revival_delay
cccac0a2 9330TYPE: int
5473c134 9331IFDEF: ICAP_CLIENT
26cc52cb 9332LOC: Adaptation::Icap::TheConfig.service_revival_delay
5473c134 9333DEFAULT: 180
cccac0a2 9334DOC_START
5473c134 9335 The delay specifies the number of seconds to wait after an ICAP
9336 OPTIONS request failure before requesting the options again. The
9337 failed ICAP service is considered "down" until fresh OPTIONS are
9338 fetched.
cccac0a2 9339
5473c134 9340 The actual delay cannot be smaller than the hardcoded minimum
9341 delay of 30 seconds.
cccac0a2 9342DOC_END
9343
5473c134 9344NAME: icap_preview_enable
cccac0a2 9345TYPE: onoff
5473c134 9346IFDEF: ICAP_CLIENT
9347COMMENT: on|off
26cc52cb 9348LOC: Adaptation::Icap::TheConfig.preview_enable
ac7a62f9 9349DEFAULT: on
cccac0a2 9350DOC_START
ac7a62f9 9351 The ICAP Preview feature allows the ICAP server to handle the
9352 HTTP message by looking only at the beginning of the message body
9603207d 9353 or even without receiving the body at all. In some environments,
ac7a62f9 9354 previews greatly speedup ICAP processing.
9355
9356 During an ICAP OPTIONS transaction, the server may tell Squid what
9357 HTTP messages should be previewed and how big the preview should be.
9358 Squid will not use Preview if the server did not request one.
9359
9360 To disable ICAP Preview for all ICAP services, regardless of
9361 individual ICAP server OPTIONS responses, set this option to "off".
9362Example:
9363icap_preview_enable off
cccac0a2 9364DOC_END
9365
5473c134 9366NAME: icap_preview_size
9367TYPE: int
9368IFDEF: ICAP_CLIENT
26cc52cb 9369LOC: Adaptation::Icap::TheConfig.preview_size
5473c134 9370DEFAULT: -1
638402dd 9371DEFAULT_DOC: No preview sent.
cccac0a2 9372DOC_START
53e738c6 9373 The default size of preview data to be sent to the ICAP server.
638402dd 9374 This value might be overwritten on a per server basis by OPTIONS requests.
cccac0a2 9375DOC_END
9376
83c51da9
CT
9377NAME: icap_206_enable
9378TYPE: onoff
9379IFDEF: ICAP_CLIENT
9380COMMENT: on|off
9381LOC: Adaptation::Icap::TheConfig.allow206_enable
9382DEFAULT: on
9383DOC_START
9384 206 (Partial Content) responses is an ICAP extension that allows the
9385 ICAP agents to optionally combine adapted and original HTTP message
9386 content. The decision to combine is postponed until the end of the
9387 ICAP response. Squid supports Partial Content extension by default.
9388
9389 Activation of the Partial Content extension is negotiated with each
9390 ICAP service during OPTIONS exchange. Most ICAP servers should handle
2f8abb64 9391 negotiation correctly even if they do not support the extension, but
83c51da9
CT
9392 some might fail. To disable Partial Content support for all ICAP
9393 services and to avoid any negotiation, set this option to "off".
9394
9395 Example:
9396 icap_206_enable off
9397DOC_END
9398
5473c134 9399NAME: icap_default_options_ttl
9400TYPE: int
9401IFDEF: ICAP_CLIENT
26cc52cb 9402LOC: Adaptation::Icap::TheConfig.default_options_ttl
5473c134 9403DEFAULT: 60
cccac0a2 9404DOC_START
53e738c6 9405 The default TTL value for ICAP OPTIONS responses that don't have
5473c134 9406 an Options-TTL header.
cccac0a2 9407DOC_END
9408
5473c134 9409NAME: icap_persistent_connections
9410TYPE: onoff
9411IFDEF: ICAP_CLIENT
9412COMMENT: on|off
26cc52cb 9413LOC: Adaptation::Icap::TheConfig.reuse_connections
5473c134 9414DEFAULT: on
cccac0a2 9415DOC_START
5473c134 9416 Whether or not Squid should use persistent connections to
9417 an ICAP server.
cccac0a2 9418DOC_END
9419
22fff3bf 9420NAME: adaptation_send_client_ip icap_send_client_ip
5473c134 9421TYPE: onoff
22fff3bf 9422IFDEF: USE_ADAPTATION
5473c134 9423COMMENT: on|off
22fff3bf 9424LOC: Adaptation::Config::send_client_ip
5473c134 9425DEFAULT: off
cccac0a2 9426DOC_START
ea3ae478
AR
9427 If enabled, Squid shares HTTP client IP information with adaptation
9428 services. For ICAP, Squid adds the X-Client-IP header to ICAP requests.
9429 For eCAP, Squid sets the libecap::metaClientIp transaction option.
9430
9431 See also: adaptation_uses_indirect_client
cccac0a2 9432DOC_END
9433
22fff3bf 9434NAME: adaptation_send_username icap_send_client_username
5473c134 9435TYPE: onoff
22fff3bf 9436IFDEF: USE_ADAPTATION
5473c134 9437COMMENT: on|off
22fff3bf 9438LOC: Adaptation::Config::send_username
5473c134 9439DEFAULT: off
cccac0a2 9440DOC_START
5473c134 9441 This sends authenticated HTTP client username (if available) to
22fff3bf
AR
9442 the adaptation service.
9443
9444 For ICAP, the username value is encoded based on the
5473c134 9445 icap_client_username_encode option and is sent using the header
9446 specified by the icap_client_username_header option.
cccac0a2 9447DOC_END
9448
5473c134 9449NAME: icap_client_username_header
cccac0a2 9450TYPE: string
5473c134 9451IFDEF: ICAP_CLIENT
26cc52cb 9452LOC: Adaptation::Icap::TheConfig.client_username_header
5473c134 9453DEFAULT: X-Client-Username
cccac0a2 9454DOC_START
db49f682 9455 ICAP request header name to use for adaptation_send_username.
cccac0a2 9456DOC_END
9457
5473c134 9458NAME: icap_client_username_encode
cccac0a2 9459TYPE: onoff
5473c134 9460IFDEF: ICAP_CLIENT
9461COMMENT: on|off
26cc52cb 9462LOC: Adaptation::Icap::TheConfig.client_username_encode
5473c134 9463DEFAULT: off
cccac0a2 9464DOC_START
5473c134 9465 Whether to base64 encode the authenticated client username.
cccac0a2 9466DOC_END
9467
5473c134 9468NAME: icap_service
9469TYPE: icap_service_type
9470IFDEF: ICAP_CLIENT
26cc52cb 9471LOC: Adaptation::Icap::TheConfig
5473c134 9472DEFAULT: none
cccac0a2 9473DOC_START
a22e6cd3 9474 Defines a single ICAP service using the following format:
cccac0a2 9475
c25c2836 9476 icap_service id vectoring_point uri [option ...]
7d90757b 9477
c25c2836
CT
9478 id: ID
9479 an opaque identifier or name which is used to direct traffic to
9480 this specific service. Must be unique among all adaptation
9481 services in squid.conf.
a22e6cd3
AR
9482
9483 vectoring_point: reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache
f3db09e2 9484 This specifies at which point of transaction processing the
9485 ICAP service should be activated. *_postcache vectoring points
9486 are not yet supported.
a22e6cd3 9487
c25c2836 9488 uri: icap://servername:port/servicepath
a22e6cd3 9489 ICAP server and service location.
1b091aec
CT
9490 icaps://servername:port/servicepath
9491 The "icap:" URI scheme is used for traditional ICAP server and
9492 service location (default port is 1344, connections are not
9493 encrypted). The "icaps:" URI scheme is for Secure ICAP
9494 services that use SSL/TLS-encrypted ICAP connections (by
9495 default, on port 11344).
a22e6cd3
AR
9496
9497 ICAP does not allow a single service to handle both REQMOD and RESPMOD
9498 transactions. Squid does not enforce that requirement. You can specify
9499 services with the same service_url and different vectoring_points. You
9500 can even specify multiple identical services as long as their
9501 service_names differ.
9502
3caa16d2
AR
9503 To activate a service, use the adaptation_access directive. To group
9504 services, use adaptation_service_chain and adaptation_service_set.
a22e6cd3
AR
9505
9506 Service options are separated by white space. ICAP services support
9507 the following name=value options:
9508
9509 bypass=on|off|1|0
9510 If set to 'on' or '1', the ICAP service is treated as
9511 optional. If the service cannot be reached or malfunctions,
9512 Squid will try to ignore any errors and process the message as
9513 if the service was not enabled. No all ICAP errors can be
9514 bypassed. If set to 0, the ICAP service is treated as
9515 essential and all ICAP errors will result in an error page
9516 returned to the HTTP client.
9517
9518 Bypass is off by default: services are treated as essential.
9519
9520 routing=on|off|1|0
9521 If set to 'on' or '1', the ICAP service is allowed to
9522 dynamically change the current message adaptation plan by
9523 returning a chain of services to be used next. The services
9524 are specified using the X-Next-Services ICAP response header
9525 value, formatted as a comma-separated list of service names.
e2851fe7
AR
9526 Each named service should be configured in squid.conf. Other
9527 services are ignored. An empty X-Next-Services value results
9528 in an empty plan which ends the current adaptation.
9529
9530 Dynamic adaptation plan may cross or cover multiple supported
9531 vectoring points in their natural processing order.
a22e6cd3
AR
9532
9533 Routing is not allowed by default: the ICAP X-Next-Services
9534 response header is ignored.
9535
e6713f4e
AJ
9536 ipv6=on|off
9537 Only has effect on split-stack systems. The default on those systems
9538 is to use IPv4-only connections. When set to 'on' this option will
9539 make Squid use IPv6-only connections to contact this ICAP service.
9540
2dba5b8e
CT
9541 on-overload=block|bypass|wait|force
9542 If the service Max-Connections limit has been reached, do
9543 one of the following for each new ICAP transaction:
9544 * block: send an HTTP error response to the client
9545 * bypass: ignore the "over-connected" ICAP service
9546 * wait: wait (in a FIFO queue) for an ICAP connection slot
9603207d 9547 * force: proceed, ignoring the Max-Connections limit
2dba5b8e
CT
9548
9549 In SMP mode with N workers, each worker assumes the service
9550 connection limit is Max-Connections/N, even though not all
9551 workers may use a given service.
9552
9553 The default value is "bypass" if service is bypassable,
9554 otherwise it is set to "wait".
9603207d 9555
2dba5b8e
CT
9556
9557 max-conn=number
9558 Use the given number as the Max-Connections limit, regardless
9559 of the Max-Connections value given by the service, if any.
9560
88df846b
CT
9561 connection-encryption=on|off
9562 Determines the ICAP service effect on the connections_encrypted
9563 ACL.
9564
9565 The default is "on" for Secure ICAP services (i.e., those
9566 with the icaps:// service URIs scheme) and "off" for plain ICAP
9567 services.
9568
9569 Does not affect ICAP connections (e.g., does not turn Secure
9570 ICAP on or off).
9571
4dd2c9d6 9572 ==== ICAPS / TLS OPTIONS ====
1b091aec
CT
9573
9574 These options are used for Secure ICAP (icaps://....) services only.
9575
4dd2c9d6 9576 tls-cert=/path/to/ssl/certificate
51e09c08
AJ
9577 A client X.509 certificate to use when connecting to
9578 this ICAP server.
1b091aec 9579
4dd2c9d6 9580 tls-key=/path/to/ssl/key
51e09c08
AJ
9581 The private key corresponding to the previous
9582 tls-cert= option.
9583
9584 If tls-key= is not specified tls-cert= is assumed to
9585 reference a PEM file containing both the certificate
9586 and private key.
1b091aec 9587
4dd2c9d6 9588 tls-cipher=... The list of valid TLS/SSL ciphers to use when connecting
1b091aec
CT
9589 to this icap server.
9590
1cc44095
AJ
9591 tls-min-version=1.N
9592 The minimum TLS protocol version to permit. To control
3f5b28fe 9593 SSLv3 use the tls-options= parameter.
1cc44095
AJ
9594 Supported Values: 1.0 (default), 1.1, 1.2
9595
4dd2c9d6 9596 tls-options=... Specify various OpenSSL library options:
1b091aec
CT
9597
9598 NO_SSLv3 Disallow the use of SSLv3
4dd2c9d6 9599
1b091aec
CT
9600 SINGLE_DH_USE
9601 Always create a new key when using
9602 temporary/ephemeral DH key exchanges
4dd2c9d6 9603
1b091aec 9604 ALL Enable various bug workarounds
4dd2c9d6
AJ
9605 suggested as "harmless" by OpenSSL
9606 Be warned that this reduces SSL/TLS
9607 strength to some attacks.
1b091aec
CT
9608
9609 See the OpenSSL SSL_CTX_set_options documentation for a
4dd2c9d6
AJ
9610 more complete list. Options relevant only to SSLv2 are
9611 not supported.
1b091aec 9612
86a84cc0
AJ
9613 tls-cafile= PEM file containing CA certificates to use when verifying
9614 the icap server certificate.
9615 Use to specify intermediate CA certificate(s) if not sent
9616 by the server. Or the full CA chain for the server when
435c72b0 9617 using the tls-default-ca=off flag.
86a84cc0 9618 May be repeated to load multiple files.
1b091aec 9619
4dd2c9d6 9620 tls-capath=... A directory containing additional CA certificates to
1b091aec 9621 use when verifying the icap server certificate.
86a84cc0 9622 Requires OpenSSL or LibreSSL.
1b091aec 9623
4dd2c9d6 9624 tls-crlfile=... A certificate revocation list file to use when
1b091aec
CT
9625 verifying the icap server certificate.
9626
4dd2c9d6 9627 tls-flags=... Specify various flags modifying the Squid TLS implementation:
1b091aec
CT
9628
9629 DONT_VERIFY_PEER
9630 Accept certificates even if they fail to
9631 verify.
1b091aec
CT
9632 DONT_VERIFY_DOMAIN
9633 Don't verify the icap server certificate
9634 matches the server name
9635
435c72b0
AJ
9636 tls-default-ca[=off]
9637 Whether to use the system Trusted CAs. Default is ON.
8b253b83 9638
4dd2c9d6 9639 tls-domain= The icap server name as advertised in it's certificate.
1b091aec
CT
9640 Used for verifying the correctness of the received icap
9641 server certificate. If not specified the icap server
9642 hostname extracted from ICAP URI will be used.
9643
a22e6cd3
AR
9644 Older icap_service format without optional named parameters is
9645 deprecated but supported for backward compatibility.
5473c134 9646
5473c134 9647Example:
c25c2836 9648icap_service svcBlocker reqmod_precache icap://icap1.mydomain.net:1344/reqmod bypass=0
1b091aec 9649icap_service svcLogger reqmod_precache icaps://icap2.mydomain.net:11344/reqmod routing=on
cccac0a2 9650DOC_END
9651
5473c134 9652NAME: icap_class
9653TYPE: icap_class_type
9654IFDEF: ICAP_CLIENT
21a26d31 9655LOC: none
5473c134 9656DEFAULT: none
cccac0a2 9657DOC_START
a22e6cd3 9658 This deprecated option was documented to define an ICAP service
62c7f90e 9659 chain, even though it actually defined a set of similar, redundant
9603207d 9660 services, and the chains were not supported.
5473c134 9661
62c7f90e 9662 To define a set of redundant services, please use the
a22e6cd3
AR
9663 adaptation_service_set directive. For service chains, use
9664 adaptation_service_chain.
cccac0a2 9665DOC_END
9666
5473c134 9667NAME: icap_access
9668TYPE: icap_access_type
9669IFDEF: ICAP_CLIENT
21a26d31 9670LOC: none
cccac0a2 9671DEFAULT: none
cccac0a2 9672DOC_START
a22e6cd3 9673 This option is deprecated. Please use adaptation_access, which
62c7f90e
AR
9674 has the same ICAP functionality, but comes with better
9675 documentation, and eCAP support.
cccac0a2 9676DOC_END
9677
57afc994
AR
9678COMMENT_START
9679 eCAP OPTIONS
9680 -----------------------------------------------------------------------------
9681COMMENT_END
9682
21a26d31
AR
9683NAME: ecap_enable
9684TYPE: onoff
9685IFDEF: USE_ECAP
9686COMMENT: on|off
574b508c 9687LOC: Adaptation::Ecap::TheConfig.onoff
21a26d31
AR
9688DEFAULT: off
9689DOC_START
9690 Controls whether eCAP support is enabled.
9691DOC_END
9692
9693NAME: ecap_service
9694TYPE: ecap_service_type
9695IFDEF: USE_ECAP
574b508c 9696LOC: Adaptation::Ecap::TheConfig
21a26d31
AR
9697DEFAULT: none
9698DOC_START
9699 Defines a single eCAP service
9700
c25c2836 9701 ecap_service id vectoring_point uri [option ...]
21a26d31 9702
c25c2836
CT
9703 id: ID
9704 an opaque identifier or name which is used to direct traffic to
9705 this specific service. Must be unique among all adaptation
9706 services in squid.conf.
9707
9708 vectoring_point: reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache
21a26d31
AR
9709 This specifies at which point of transaction processing the
9710 eCAP service should be activated. *_postcache vectoring points
9711 are not yet supported.
c25c2836
CT
9712
9713 uri: ecap://vendor/service_name?custom&cgi=style&parameters=optional
9714 Squid uses the eCAP service URI to match this configuration
9715 line with one of the dynamically loaded services. Each loaded
9716 eCAP service must have a unique URI. Obtain the right URI from
9717 the service provider.
9718
3caa16d2
AR
9719 To activate a service, use the adaptation_access directive. To group
9720 services, use adaptation_service_chain and adaptation_service_set.
c25c2836
CT
9721
9722 Service options are separated by white space. eCAP services support
9723 the following name=value options:
9724
9725 bypass=on|off|1|0
9726 If set to 'on' or '1', the eCAP service is treated as optional.
9727 If the service cannot be reached or malfunctions, Squid will try
9728 to ignore any errors and process the message as if the service
21a26d31 9729 was not enabled. No all eCAP errors can be bypassed.
c25c2836
CT
9730 If set to 'off' or '0', the eCAP service is treated as essential
9731 and all eCAP errors will result in an error page returned to the
21a26d31 9732 HTTP client.
c25c2836
CT
9733
9734 Bypass is off by default: services are treated as essential.
9735
9736 routing=on|off|1|0
9737 If set to 'on' or '1', the eCAP service is allowed to
9738 dynamically change the current message adaptation plan by
9739 returning a chain of services to be used next.
9740
9741 Dynamic adaptation plan may cross or cover multiple supported
9742 vectoring points in their natural processing order.
9743
9744 Routing is not allowed by default.
9745
88df846b
CT
9746 connection-encryption=on|off
9747 Determines the eCAP service effect on the connections_encrypted
9603207d 9748 ACL.
88df846b
CT
9749
9750 Defaults to "on", which does not taint the master transaction
9751 w.r.t. that ACL.
9752
9753 Does not affect eCAP API calls.
9754
c25c2836
CT
9755 Older ecap_service format without optional named parameters is
9756 deprecated but supported for backward compatibility.
9757
21a26d31
AR
9758
9759Example:
c25c2836
CT
9760ecap_service s1 reqmod_precache ecap://filters.R.us/leakDetector?on_error=block bypass=off
9761ecap_service s2 respmod_precache ecap://filters.R.us/virusFilter config=/etc/vf.cfg bypass=on
21a26d31
AR
9762DOC_END
9763
57afc994
AR
9764NAME: loadable_modules
9765TYPE: wordlist
9766IFDEF: USE_LOADABLE_MODULES
9767LOC: Config.loadable_module_names
9768DEFAULT: none
9769DOC_START
9770 Instructs Squid to load the specified dynamic module(s) or activate
9771 preloaded module(s).
9772Example:
9773loadable_modules @DEFAULT_PREFIX@/lib/MinimalAdapter.so
9774DOC_END
9775
62c7f90e
AR
9776COMMENT_START
9777 MESSAGE ADAPTATION OPTIONS
9778 -----------------------------------------------------------------------------
9779COMMENT_END
9780
9781NAME: adaptation_service_set
9782TYPE: adaptation_service_set_type
9783IFDEF: USE_ADAPTATION
9784LOC: none
9785DEFAULT: none
9786DOC_START
9787
a22e6cd3
AR
9788 Configures an ordered set of similar, redundant services. This is
9789 useful when hot standby or backup adaptation servers are available.
9790
9791 adaptation_service_set set_name service_name1 service_name2 ...
9792
9793 The named services are used in the set declaration order. The first
9794 applicable adaptation service from the set is used first. The next
9795 applicable service is tried if and only if the transaction with the
9796 previous service fails and the message waiting to be adapted is still
9797 intact.
62c7f90e 9798
a22e6cd3
AR
9799 When adaptation starts, broken services are ignored as if they were
9800 not a part of the set. A broken service is a down optional service.
62c7f90e 9801
a22e6cd3
AR
9802 The services in a set must be attached to the same vectoring point
9803 (e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).
9804
9805 If all services in a set are optional then adaptation failures are
9806 bypassable. If all services in the set are essential, then a
9807 transaction failure with one service may still be retried using
9808 another service from the set, but when all services fail, the master
9809 transaction fails as well.
9810
9811 A set may contain a mix of optional and essential services, but that
9812 is likely to lead to surprising results because broken services become
9813 ignored (see above), making previously bypassable failures fatal.
9814 Technically, it is the bypassability of the last failed service that
9815 matters.
9816
9817 See also: adaptation_access adaptation_service_chain
62c7f90e
AR
9818
9819Example:
9820adaptation_service_set svcBlocker urlFilterPrimary urlFilterBackup
9821adaptation service_set svcLogger loggerLocal loggerRemote
9822DOC_END
9823
a22e6cd3
AR
9824NAME: adaptation_service_chain
9825TYPE: adaptation_service_chain_type
9826IFDEF: USE_ADAPTATION
9827LOC: none
9828DEFAULT: none
9829DOC_START
9830
9831 Configures a list of complementary services that will be applied
9832 one-by-one, forming an adaptation chain or pipeline. This is useful
9833 when Squid must perform different adaptations on the same message.
9834
9835 adaptation_service_chain chain_name service_name1 svc_name2 ...
9836
9837 The named services are used in the chain declaration order. The first
9838 applicable adaptation service from the chain is used first. The next
9839 applicable service is applied to the successful adaptation results of
9840 the previous service in the chain.
9841
9842 When adaptation starts, broken services are ignored as if they were
9843 not a part of the chain. A broken service is a down optional service.
9844
9845 Request satisfaction terminates the adaptation chain because Squid
9846 does not currently allow declaration of RESPMOD services at the
9847 "reqmod_precache" vectoring point (see icap_service or ecap_service).
9848
9849 The services in a chain must be attached to the same vectoring point
9850 (e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).
9851
9852 A chain may contain a mix of optional and essential services. If an
9853 essential adaptation fails (or the failure cannot be bypassed for
9854 other reasons), the master transaction fails. Otherwise, the failure
9855 is bypassed as if the failed adaptation service was not in the chain.
9856
9857 See also: adaptation_access adaptation_service_set
9858
9859Example:
9860adaptation_service_chain svcRequest requestLogger urlFilter leakDetector
9861DOC_END
9862
62c7f90e
AR
9863NAME: adaptation_access
9864TYPE: adaptation_access_type
9865IFDEF: USE_ADAPTATION
9866LOC: none
9867DEFAULT: none
638402dd 9868DEFAULT_DOC: Allow, unless rules exist in squid.conf.
62c7f90e
AR
9869DOC_START
9870 Sends an HTTP transaction to an ICAP or eCAP adaptation service.
9871
9872 adaptation_access service_name allow|deny [!]aclname...
9873 adaptation_access set_name allow|deny [!]aclname...
9874
9875 At each supported vectoring point, the adaptation_access
9876 statements are processed in the order they appear in this
9877 configuration file. Statements pointing to the following services
9878 are ignored (i.e., skipped without checking their ACL):
9879
9880 - services serving different vectoring points
9881 - "broken-but-bypassable" services
9882 - "up" services configured to ignore such transactions
9883 (e.g., based on the ICAP Transfer-Ignore header).
9884
9885 When a set_name is used, all services in the set are checked
9886 using the same rules, to find the first applicable one. See
9887 adaptation_service_set for details.
9888
9889 If an access list is checked and there is a match, the
9890 processing stops: For an "allow" rule, the corresponding
9891 adaptation service is used for the transaction. For a "deny"
9892 rule, no adaptation service is activated.
9893
9894 It is currently not possible to apply more than one adaptation
9895 service at the same vectoring point to the same HTTP transaction.
9896
9897 See also: icap_service and ecap_service
9898
9899Example:
9900adaptation_access service_1 allow all
9901DOC_END
9902
a22e6cd3
AR
9903NAME: adaptation_service_iteration_limit
9904TYPE: int
9905IFDEF: USE_ADAPTATION
9906LOC: Adaptation::Config::service_iteration_limit
9907DEFAULT: 16
9908DOC_START
9909 Limits the number of iterations allowed when applying adaptation
9910 services to a message. If your longest adaptation set or chain
9911 may have more than 16 services, increase the limit beyond its
9912 default value of 16. If detecting infinite iteration loops sooner
9913 is critical, make the iteration limit match the actual number
9914 of services in your longest adaptation set or chain.
9915
9916 Infinite adaptation loops are most likely with routing services.
9917
9918 See also: icap_service routing=1
9919DOC_END
9920
3ff65596
AR
9921NAME: adaptation_masterx_shared_names
9922TYPE: string
9923IFDEF: USE_ADAPTATION
9924LOC: Adaptation::Config::masterx_shared_name
9925DEFAULT: none
9926DOC_START
9927 For each master transaction (i.e., the HTTP request and response
9928 sequence, including all related ICAP and eCAP exchanges), Squid
9929 maintains a table of metadata. The table entries are (name, value)
9930 pairs shared among eCAP and ICAP exchanges. The table is destroyed
9931 with the master transaction.
9932
9933 This option specifies the table entry names that Squid must accept
9934 from and forward to the adaptation transactions.
9935
9603207d 9936 An ICAP REQMOD or RESPMOD transaction may set an entry in the
9937 shared table by returning an ICAP header field with a name
6666da11
AR
9938 specified in adaptation_masterx_shared_names.
9939
9940 An eCAP REQMOD or RESPMOD transaction may set an entry in the
9941 shared table by implementing the libecap::visitEachOption() API
9942 to provide an option with a name specified in
9943 adaptation_masterx_shared_names.
5038f9d8
AR
9944
9945 Squid will store and forward the set entry to subsequent adaptation
3ff65596
AR
9946 transactions within the same master transaction scope.
9947
9948 Only one shared entry name is supported at this time.
9949
9950Example:
9951# share authentication information among ICAP services
9952adaptation_masterx_shared_names X-Subscriber-ID
9953DOC_END
9954
71be37e0 9955NAME: adaptation_meta
d7f4a0b7 9956TYPE: note
71be37e0
CT
9957IFDEF: USE_ADAPTATION
9958LOC: Adaptation::Config::metaHeaders
9959DEFAULT: none
9960DOC_START
9961 This option allows Squid administrator to add custom ICAP request
9962 headers or eCAP options to Squid ICAP requests or eCAP transactions.
9963 Use it to pass custom authentication tokens and other
9964 transaction-state related meta information to an ICAP/eCAP service.
9603207d 9965
71be37e0
CT
9966 The addition of a meta header is ACL-driven:
9967 adaptation_meta name value [!]aclname ...
9603207d 9968
71be37e0
CT
9969 Processing for a given header name stops after the first ACL list match.
9970 Thus, it is impossible to add two headers with the same name. If no ACL
9603207d 9971 lists match for a given header name, no such header is added. For
71be37e0 9972 example:
9603207d 9973
71be37e0
CT
9974 # do not debug transactions except for those that need debugging
9975 adaptation_meta X-Debug 1 needs_debugging
9603207d 9976
71be37e0
CT
9977 # log all transactions except for those that must remain secret
9978 adaptation_meta X-Log 1 !keep_secret
9603207d 9979
71be37e0
CT
9980 # mark transactions from users in the "G 1" group
9981 adaptation_meta X-Authenticated-Groups "G 1" authed_as_G1
9603207d 9982
71be37e0
CT
9983 The "value" parameter may be a regular squid.conf token or a "double
9984 quoted string". Within the quoted string, use backslash (\) to escape
9985 any character, which is currently only useful for escaping backslashes
9986 and double quotes. For example,
9987 "this string has one backslash (\\) and two \"quotes\""
d7f4a0b7
CT
9988
9989 Used adaptation_meta header values may be logged via %note
9990 logformat code. If multiple adaptation_meta headers with the same name
9991 are used during master transaction lifetime, the header values are
9992 logged in the order they were used and duplicate values are ignored
9993 (only the first repeated value will be logged).
71be37e0
CT
9994DOC_END
9995
3ff65596
AR
9996NAME: icap_retry
9997TYPE: acl_access
9998IFDEF: ICAP_CLIENT
9999LOC: Adaptation::Icap::TheConfig.repeat
3ff65596
AR
10000DEFAULT_IF_NONE: deny all
10001DOC_START
10002 This ACL determines which retriable ICAP transactions are
10003 retried. Transactions that received a complete ICAP response
10004 and did not have to consume or produce HTTP bodies to receive
10005 that response are usually retriable.
10006
10007 icap_retry allow|deny [!]aclname ...
10008
10009 Squid automatically retries some ICAP I/O timeouts and errors
10010 due to persistent connection race conditions.
10011
10012 See also: icap_retry_limit
10013DOC_END
10014
10015NAME: icap_retry_limit
10016TYPE: int
10017IFDEF: ICAP_CLIENT
10018LOC: Adaptation::Icap::TheConfig.repeat_limit
10019DEFAULT: 0
638402dd 10020DEFAULT_DOC: No retries are allowed.
3ff65596 10021DOC_START
638402dd 10022 Limits the number of retries allowed.
3ff65596
AR
10023
10024 Communication errors due to persistent connection race
10025 conditions are unavoidable, automatically retried, and do not
10026 count against this limit.
10027
10028 See also: icap_retry
10029DOC_END
10030
10031
5473c134 10032COMMENT_START
10033 DNS OPTIONS
10034 -----------------------------------------------------------------------------
10035COMMENT_END
10036
10037NAME: check_hostnames
cccac0a2 10038TYPE: onoff
cccac0a2 10039DEFAULT: off
5473c134 10040LOC: Config.onoff.check_hostnames
cccac0a2 10041DOC_START
5473c134 10042 For security and stability reasons Squid can check
10043 hostnames for Internet standard RFC compliance. If you want
10044 Squid to perform these checks turn this directive on.
cccac0a2 10045DOC_END
10046
5473c134 10047NAME: allow_underscore
cccac0a2 10048TYPE: onoff
cccac0a2 10049DEFAULT: on
5473c134 10050LOC: Config.onoff.allow_underscore
cccac0a2 10051DOC_START
5473c134 10052 Underscore characters is not strictly allowed in Internet hostnames
10053 but nevertheless used by many sites. Set this to off if you want
10054 Squid to be strict about the standard.
10055 This check is performed only when check_hostnames is set to on.
cccac0a2 10056DOC_END
10057
5473c134 10058NAME: dns_retransmit_interval
fd0f51c4 10059TYPE: time_msec
5473c134 10060DEFAULT: 5 seconds
10061LOC: Config.Timeout.idns_retransmit
cccac0a2 10062DOC_START
5473c134 10063 Initial retransmit interval for DNS queries. The interval is
10064 doubled each time all configured DNS servers have been tried.
cccac0a2 10065DOC_END
10066
5473c134 10067NAME: dns_timeout
fd0f51c4 10068TYPE: time_msec
a541c34e 10069DEFAULT: 30 seconds
5473c134 10070LOC: Config.Timeout.idns_query
cccac0a2 10071DOC_START
5473c134 10072 DNS Query timeout. If no response is received to a DNS query
10073 within this time all DNS servers for the queried domain
10074 are assumed to be unavailable.
cccac0a2 10075DOC_END
10076
e210930b
AJ
10077NAME: dns_packet_max
10078TYPE: b_ssize_t
638402dd 10079DEFAULT_DOC: EDNS disabled
e210930b
AJ
10080DEFAULT: none
10081LOC: Config.dns.packet_max
e210930b
AJ
10082DOC_START
10083 Maximum number of bytes packet size to advertise via EDNS.
10084 Set to "none" to disable EDNS large packet support.
9603207d 10085
e210930b
AJ
10086 For legacy reasons DNS UDP replies will default to 512 bytes which
10087 is too small for many responses. EDNS provides a means for Squid to
10088 negotiate receiving larger responses back immediately without having
10089 to failover with repeat requests. Responses larger than this limit
10090 will retain the old behaviour of failover to TCP DNS.
9603207d 10091
e210930b
AJ
10092 Squid has no real fixed limit internally, but allowing packet sizes
10093 over 1500 bytes requires network jumbogram support and is usually not
10094 necessary.
9603207d 10095
e210930b
AJ
10096 WARNING: The RFC also indicates that some older resolvers will reply
10097 with failure of the whole request if the extension is added. Some
10098 resolvers have already been identified which will reply with mangled
10099 EDNS response on occasion. Usually in response to many-KB jumbogram
10100 sizes being advertised by Squid.
10101 Squid will currently treat these both as an unable-to-resolve domain
10102 even if it would be resolvable without EDNS.
10103DOC_END
10104
5473c134 10105NAME: dns_defnames
10106COMMENT: on|off
cccac0a2 10107TYPE: onoff
cccac0a2 10108DEFAULT: off
638402dd 10109DEFAULT_DOC: Search for single-label domain names is disabled.
5473c134 10110LOC: Config.onoff.res_defnames
cccac0a2 10111DOC_START
5473c134 10112 Normally the RES_DEFNAMES resolver option is disabled
10113 (see res_init(3)). This prevents caches in a hierarchy
10114 from interpreting single-component hostnames locally. To allow
10115 Squid to handle single-component names, enable this option.
cccac0a2 10116DOC_END
10117
bce61b00
AJ
10118NAME: dns_multicast_local
10119COMMENT: on|off
10120TYPE: onoff
10121DEFAULT: off
10122DEFAULT_DOC: Search for .local and .arpa names is disabled.
10123LOC: Config.onoff.dns_mdns
10124DOC_START
10125 When set to on, Squid sends multicast DNS lookups on the local
10126 network for domains ending in .local and .arpa.
10127 This enables local servers and devices to be contacted in an
10128 ad-hoc or zero-configuration network environment.
10129DOC_END
10130
5473c134 10131NAME: dns_nameservers
5a1098fb 10132TYPE: SBufList
5473c134 10133DEFAULT: none
638402dd 10134DEFAULT_DOC: Use operating system definitions
5a1098fb 10135LOC: Config.dns.nameservers
cccac0a2 10136DOC_START
5473c134 10137 Use this if you want to specify a list of DNS name servers
10138 (IP addresses) to use instead of those given in your
10139 /etc/resolv.conf file.
638402dd 10140
5473c134 10141 On Windows platforms, if no value is specified here or in
10142 the /etc/resolv.conf file, the list of DNS name servers are
10143 taken from the Windows registry, both static and dynamic DHCP
10144 configurations are supported.
cccac0a2 10145
5473c134 10146 Example: dns_nameservers 10.0.0.1 192.172.0.4
cccac0a2 10147DOC_END
10148
5473c134 10149NAME: hosts_file
cccac0a2 10150TYPE: string
5473c134 10151DEFAULT: @DEFAULT_HOSTS@
10152LOC: Config.etcHostsPath
cccac0a2 10153DOC_START
5473c134 10154 Location of the host-local IP name-address associations
10155 database. Most Operating Systems have such a file on different
10156 default locations:
10157 - Un*X & Linux: /etc/hosts
10158 - Windows NT/2000: %SystemRoot%\system32\drivers\etc\hosts
10159 (%SystemRoot% value install default is c:\winnt)
10160 - Windows XP/2003: %SystemRoot%\system32\drivers\etc\hosts
10161 (%SystemRoot% value install default is c:\windows)
10162 - Windows 9x/Me: %windir%\hosts
10163 (%windir% value is usually c:\windows)
10164 - Cygwin: /etc/hosts
cccac0a2 10165
5473c134 10166 The file contains newline-separated definitions, in the
10167 form ip_address_in_dotted_form name [name ...] names are
10168 whitespace-separated. Lines beginning with an hash (#)
10169 character are comments.
cccac0a2 10170
5473c134 10171 The file is checked at startup and upon configuration.
10172 If set to 'none', it won't be checked.
10173 If append_domain is used, that domain will be added to
10174 domain-local (i.e. not containing any dot character) host
10175 definitions.
cccac0a2 10176DOC_END
10177
5473c134 10178NAME: append_domain
10179TYPE: string
10180LOC: Config.appendDomain
10181DEFAULT: none
638402dd 10182DEFAULT_DOC: Use operating system definitions
6a2f3fcf 10183DOC_START
5473c134 10184 Appends local domain name to hostnames without any dots in
10185 them. append_domain must begin with a period.
10186
10187 Be warned there are now Internet names with no dots in
10188 them using only top-domain names, so setting this may
10189 cause some Internet sites to become unavailable.
10190
10191Example:
10192 append_domain .yourdomain.com
6a2f3fcf 10193DOC_END
10194
5473c134 10195NAME: ignore_unknown_nameservers
10196TYPE: onoff
10197LOC: Config.onoff.ignore_unknown_nameservers
df6fd596 10198DEFAULT: on
10199DOC_START
5473c134 10200 By default Squid checks that DNS responses are received
10201 from the same IP addresses they are sent to. If they
10202 don't match, Squid ignores the response and writes a warning
10203 message to cache.log. You can allow responses from unknown
10204 nameservers by setting this option to 'off'.
df6fd596 10205DOC_END
10206
6bc15a4f 10207NAME: ipcache_size
10208COMMENT: (number of entries)
10209TYPE: int
10210DEFAULT: 1024
10211LOC: Config.ipcache.size
638402dd
AJ
10212DOC_START
10213 Maximum number of DNS IP cache entries.
10214DOC_END
6bc15a4f 10215
10216NAME: ipcache_low
10217COMMENT: (percent)
10218TYPE: int
10219DEFAULT: 90
10220LOC: Config.ipcache.low
10221DOC_NONE
10222
10223NAME: ipcache_high
10224COMMENT: (percent)
10225TYPE: int
10226DEFAULT: 95
10227LOC: Config.ipcache.high
10228DOC_START
10229 The size, low-, and high-water marks for the IP cache.
10230DOC_END
10231
10232NAME: fqdncache_size
10233COMMENT: (number of entries)
10234TYPE: int
10235DEFAULT: 1024
10236LOC: Config.fqdncache.size
10237DOC_START
10238 Maximum number of FQDN cache entries.
10239DOC_END
10240
a58ff010 10241COMMENT_START
5473c134 10242 MISCELLANEOUS
a58ff010 10243 -----------------------------------------------------------------------------
10244COMMENT_END
10245
2eceb328
CT
10246NAME: configuration_includes_quoted_values
10247COMMENT: on|off
bde7a8ce
CT
10248TYPE: configuration_includes_quoted_values
10249DEFAULT: off
2eceb328
CT
10250LOC: ConfigParser::RecognizeQuotedValues
10251DOC_START
10252 If set, Squid will recognize each "quoted string" after a configuration
10253 directive as a single parameter. The quotes are stripped before the
10254 parameter value is interpreted or used.
10255 See "Values with spaces, quotes, and other special characters"
10256 section for more details.
10257DOC_END
10258
5473c134 10259NAME: memory_pools
a58ff010 10260COMMENT: on|off
5473c134 10261TYPE: onoff
10262DEFAULT: on
10263LOC: Config.onoff.mem_pools
a58ff010 10264DOC_START
5473c134 10265 If set, Squid will keep pools of allocated (but unused) memory
10266 available for future use. If memory is a premium on your
10267 system and you believe your malloc library outperforms Squid
10268 routines, disable this.
a58ff010 10269DOC_END
10270
5473c134 10271NAME: memory_pools_limit
10272COMMENT: (bytes)
70be1349 10273TYPE: b_int64_t
5473c134 10274DEFAULT: 5 MB
10275LOC: Config.MemPools.limit
ec1245f8 10276DOC_START
5473c134 10277 Used only with memory_pools on:
10278 memory_pools_limit 50 MB
ec1245f8 10279
5473c134 10280 If set to a non-zero value, Squid will keep at most the specified
10281 limit of allocated (but unused) memory in memory pools. All free()
10282 requests that exceed this limit will be handled by your malloc
10283 library. Squid does not pre-allocate any memory, just safe-keeps
10284 objects that otherwise would be free()d. Thus, it is safe to set
10285 memory_pools_limit to a reasonably high value even if your
10286 configuration will use less memory.
ec1245f8 10287
89646bd7 10288 If set to none, Squid will keep all memory it can. That is, there
5473c134 10289 will be no limit on the total amount of memory used for safe-keeping.
ec1245f8 10290
5473c134 10291 To disable memory allocation optimization, do not set
70be1349 10292 memory_pools_limit to 0 or none. Set memory_pools to "off" instead.
5473c134 10293
10294 An overhead for maintaining memory pools is not taken into account
10295 when the limit is checked. This overhead is close to four bytes per
10296 object kept. However, pools may actually _save_ memory because of
10297 reduced memory thrashing in your malloc library.
ec1245f8 10298DOC_END
10299
5473c134 10300NAME: forwarded_for
67c06f0d
AJ
10301COMMENT: on|off|transparent|truncate|delete
10302TYPE: string
5473c134 10303DEFAULT: on
10304LOC: opt_forwarded_for
5f8252d2 10305DOC_START
67c06f0d
AJ
10306 If set to "on", Squid will append your client's IP address
10307 in the HTTP requests it forwards. By default it looks like:
5f8252d2 10308
5473c134 10309 X-Forwarded-For: 192.1.2.3
10310
67c06f0d 10311 If set to "off", it will appear as
5473c134 10312
10313 X-Forwarded-For: unknown
67c06f0d
AJ
10314
10315 If set to "transparent", Squid will not alter the
10316 X-Forwarded-For header in any way.
10317
10318 If set to "delete", Squid will delete the entire
10319 X-Forwarded-For header.
10320
10321 If set to "truncate", Squid will remove all existing
dd68402f 10322 X-Forwarded-For entries, and place the client IP as the sole entry.
5f8252d2 10323DOC_END
10324
5473c134 10325NAME: cachemgr_passwd
10326TYPE: cachemgrpasswd
10327DEFAULT: none
638402dd 10328DEFAULT_DOC: No password. Actions which require password are denied.
5473c134 10329LOC: Config.passwd_list
5f8252d2 10330DOC_START
5473c134 10331 Specify passwords for cachemgr operations.
5f8252d2 10332
5473c134 10333 Usage: cachemgr_passwd password action action ...
10334
10335 Some valid actions are (see cache manager menu for a full list):
10336 5min
10337 60min
10338 asndb
10339 authenticator
10340 cbdata
10341 client_list
10342 comm_incoming
10343 config *
10344 counters
10345 delay
10346 digest_stats
10347 dns
10348 events
10349 filedescriptors
10350 fqdncache
10351 histograms
10352 http_headers
10353 info
10354 io
10355 ipcache
10356 mem
10357 menu
10358 netdb
5473c134 10359 objects
10360 offline_toggle *
10361 pconn
10362 peer_select
b360c477 10363 reconfigure *
5473c134 10364 redirector
10365 refresh
10366 server_list
10367 shutdown *
10368 store_digest
10369 storedir
10370 utilization
10371 via_headers
10372 vm_objects
10373
10374 * Indicates actions which will not be performed without a
10375 valid password, others can be performed if not listed here.
10376
10377 To disable an action, set the password to "disable".
10378 To allow performing an action without a password, set the
10379 password to "none".
10380
10381 Use the keyword "all" to set the same password for all actions.
10382
10383Example:
10384 cachemgr_passwd secret shutdown
10385 cachemgr_passwd lesssssssecret info stats/objects
10386 cachemgr_passwd disable all
5f8252d2 10387DOC_END
10388
5473c134 10389NAME: client_db
a58ff010 10390COMMENT: on|off
5473c134 10391TYPE: onoff
10392DEFAULT: on
10393LOC: Config.onoff.client_db
a58ff010 10394DOC_START
5473c134 10395 If you want to disable collecting per-client statistics,
10396 turn off client_db here.
a58ff010 10397DOC_END
10398
5473c134 10399NAME: refresh_all_ims
10400COMMENT: on|off
10401TYPE: onoff
10402DEFAULT: off
10403LOC: Config.onoff.refresh_all_ims
a58ff010 10404DOC_START
5473c134 10405 When you enable this option, squid will always check
10406 the origin server for an update when a client sends an
10407 If-Modified-Since request. Many browsers use IMS
10408 requests when the user requests a reload, and this
10409 ensures those clients receive the latest version.
a58ff010 10410
5473c134 10411 By default (off), squid may return a Not Modified response
10412 based on the age of the cached version.
78e8cfc4 10413DOC_END
10414
5473c134 10415NAME: reload_into_ims
626096be 10416IFDEF: USE_HTTP_VIOLATIONS
12b91c99 10417COMMENT: on|off
5473c134 10418TYPE: onoff
10419DEFAULT: off
10420LOC: Config.onoff.reload_into_ims
12b91c99 10421DOC_START
5473c134 10422 When you enable this option, client no-cache or ``reload''
10423 requests will be changed to If-Modified-Since requests.
10424 Doing this VIOLATES the HTTP standard. Enabling this
10425 feature could make you liable for problems which it
10426 causes.
10427
10428 see also refresh_pattern for a more selective approach.
12b91c99 10429DOC_END
10430
31ef19cd 10431NAME: connect_retries
5473c134 10432TYPE: int
31ef19cd
AJ
10433LOC: Config.connect_retries
10434DEFAULT: 0
638402dd 10435DEFAULT_DOC: Do not retry failed connections.
a58ff010 10436DOC_START
3eebd267
EB
10437 Limits the number of reopening attempts when establishing a single
10438 TCP connection. All these attempts must still complete before the
10439 applicable connection opening timeout expires.
10440
10441 By default and when connect_retries is set to zero, Squid does not
10442 retry failed connection opening attempts.
31ef19cd 10443
3eebd267
EB
10444 The (not recommended) maximum is 10 tries. An attempt to configure a
10445 higher value results in the value of 10 being used (with a warning).
5473c134 10446
3eebd267
EB
10447 Squid may open connections to retry various high-level forwarding
10448 failures. For an outside observer, that activity may look like a
10449 low-level connection reopening attempt, but those high-level retries
10450 are governed by forward_max_tries instead.
5473c134 10451
3eebd267
EB
10452 See also: connect_timeout, forward_timeout, icap_connect_timeout,
10453 ident_timeout, and forward_max_tries.
a58ff010 10454DOC_END
10455
5473c134 10456NAME: retry_on_error
a58ff010 10457TYPE: onoff
5473c134 10458LOC: Config.retry.onerror
a58ff010 10459DEFAULT: off
10460DOC_START
aea8548b
AJ
10461 If set to ON Squid will automatically retry requests when
10462 receiving an error response with status 403 (Forbidden),
10463 500 (Internal Error), 501 or 503 (Service not available).
10464 Status 502 and 504 (Gateway errors) are always retried.
9603207d 10465
aea8548b
AJ
10466 This is mainly useful if you are in a complex cache hierarchy to
10467 work around access control errors.
9603207d 10468
aea8548b
AJ
10469 NOTE: This retry will attempt to find another working destination.
10470 Which is different from the server which just failed.
5f8252d2 10471DOC_END
10472
5473c134 10473NAME: as_whois_server
5f8252d2 10474TYPE: string
5473c134 10475LOC: Config.as_whois_server
10476DEFAULT: whois.ra.net
5f8252d2 10477DOC_START
5473c134 10478 WHOIS server to query for AS numbers. NOTE: AS numbers are
10479 queried only when Squid starts up, not for every request.
5f8252d2 10480DOC_END
10481
5473c134 10482NAME: offline_mode
5f8252d2 10483TYPE: onoff
5473c134 10484LOC: Config.onoff.offline
5f8252d2 10485DEFAULT: off
10486DOC_START
5473c134 10487 Enable this option and Squid will never try to validate cached
10488 objects.
a58ff010 10489DOC_END
10490
5473c134 10491NAME: uri_whitespace
10492TYPE: uri_whitespace
10493LOC: Config.uri_whitespace
10494DEFAULT: strip
a58ff010 10495DOC_START
5473c134 10496 What to do with requests that have whitespace characters in the
10497 URI. Options:
a58ff010 10498
5473c134 10499 strip: The whitespace characters are stripped out of the URL.
82806837
AJ
10500 This is the behavior recommended by RFC2396 and RFC3986
10501 for tolerant handling of generic URI.
10502 NOTE: This is one difference between generic URI and HTTP URLs.
10503
5473c134 10504 deny: The request is denied. The user receives an "Invalid
10505 Request" message.
82806837
AJ
10506 This is the behaviour recommended by RFC2616 for safe
10507 handling of HTTP request URL.
10508
5473c134 10509 allow: The request is allowed and the URI is not changed. The
10510 whitespace characters remain in the URI. Note the
10511 whitespace is passed to redirector processes if they
10512 are in use.
82806837
AJ
10513 Note this may be considered a violation of RFC2616
10514 request parsing where whitespace is prohibited in the
10515 URL field.
10516
5473c134 10517 encode: The request is allowed and the whitespace characters are
82806837
AJ
10518 encoded according to RFC1738.
10519
5473c134 10520 chop: The request is allowed and the URI is chopped at the
82806837
AJ
10521 first whitespace.
10522
10523
10524 NOTE the current Squid implementation of encode and chop violates
10525 RFC2616 by not using a 301 redirect after altering the URL.
5473c134 10526DOC_END
a58ff010 10527
5473c134 10528NAME: chroot
10529TYPE: string
10530LOC: Config.chroot_dir
a58ff010 10531DEFAULT: none
10532DOC_START
9f37c18a 10533 Specifies a directory where Squid should do a chroot() while
2d89f399
HN
10534 initializing. This also causes Squid to fully drop root
10535 privileges after initializing. This means, for example, if you
10536 use a HTTP port less than 1024 and try to reconfigure, you may
10537 get an error saying that Squid can not open the port.
5473c134 10538DOC_END
a58ff010 10539
5473c134 10540NAME: pipeline_prefetch
079a8480
AJ
10541TYPE: pipelinePrefetch
10542LOC: Config.pipeline_max_prefetch
10543DEFAULT: 0
10544DEFAULT_DOC: Do not pre-parse pipelined requests.
a58ff010 10545DOC_START
079a8480
AJ
10546 HTTP clients may send a pipeline of 1+N requests to Squid using a
10547 single connection, without waiting for Squid to respond to the first
10548 of those requests. This option limits the number of concurrent
10549 requests Squid will try to handle in parallel. If set to N, Squid
10550 will try to receive and process up to 1+N requests on the same
10551 connection concurrently.
a58ff010 10552
079a8480 10553 Defaults to 0 (off) for bandwidth management and access logging
5473c134 10554 reasons.
a0e23afd 10555
079a8480
AJ
10556 NOTE: pipelining requires persistent connections to clients.
10557
a0e23afd 10558 WARNING: pipelining breaks NTLM and Negotiate/Kerberos authentication.
5473c134 10559DOC_END
a58ff010 10560
5473c134 10561NAME: high_response_time_warning
10562TYPE: int
10563COMMENT: (msec)
10564LOC: Config.warnings.high_rptm
10565DEFAULT: 0
638402dd 10566DEFAULT_DOC: disabled.
5473c134 10567DOC_START
10568 If the one-minute median response time exceeds this value,
10569 Squid prints a WARNING with debug level 0 to get the
10570 administrators attention. The value is in milliseconds.
a58ff010 10571DOC_END
10572
5473c134 10573NAME: high_page_fault_warning
10574TYPE: int
10575LOC: Config.warnings.high_pf
10576DEFAULT: 0
638402dd 10577DEFAULT_DOC: disabled.
cc9f92d4 10578DOC_START
5473c134 10579 If the one-minute average page fault rate exceeds this
10580 value, Squid prints a WARNING with debug level 0 to get
10581 the administrators attention. The value is in page faults
10582 per second.
10583DOC_END
cc9f92d4 10584
5473c134 10585NAME: high_memory_warning
10586TYPE: b_size_t
10587LOC: Config.warnings.high_memory
f2228f3b 10588IFDEF: HAVE_MSTATS&&HAVE_GNUMALLOC_H
904971da 10589DEFAULT: 0 KB
638402dd 10590DEFAULT_DOC: disabled.
5473c134 10591DOC_START
4bf2a476
FC
10592 If the memory usage (as determined by gnumalloc, if available and used)
10593 exceeds this amount, Squid prints a WARNING with debug level 0 to get
5473c134 10594 the administrators attention.
10595DOC_END
4bf2a476 10596# TODO: link high_memory_warning to mempools?
cc9f92d4 10597
5473c134 10598NAME: sleep_after_fork
10599COMMENT: (microseconds)
10600TYPE: int
10601LOC: Config.sleep_after_fork
10602DEFAULT: 0
10603DOC_START
10604 When this is set to a non-zero value, the main Squid process
10605 sleeps the specified number of microseconds after a fork()
10606 system call. This sleep may help the situation where your
10607 system reports fork() failures due to lack of (virtual)
10608 memory. Note, however, if you have a lot of child
10609 processes, these sleep delays will add up and your
10610 Squid will not service requests for some amount of time
10611 until all the child processes have been started.
cc9f92d4 10612DOC_END
10613
b6696974 10614NAME: windows_ipaddrchangemonitor
7aa9bb3e 10615IFDEF: _SQUID_WINDOWS_
b6696974
GS
10616COMMENT: on|off
10617TYPE: onoff
10618DEFAULT: on
10619LOC: Config.onoff.WIN32_IpAddrChangeMonitor
10620DOC_START
9603207d 10621 On Windows Squid by default will monitor IP address changes and will
b6696974
GS
10622 reconfigure itself after any detected event. This is very useful for
10623 proxies connected to internet with dial-up interfaces.
10624 In some cases (a Proxy server acting as VPN gateway is one) it could be
10625 desiderable to disable this behaviour setting this to 'off'.
10626 Note: after changing this, Squid service must be restarted.
10627DOC_END
10628
a98c2da5
AJ
10629NAME: eui_lookup
10630TYPE: onoff
10631IFDEF: USE_SQUID_EUI
10632DEFAULT: on
10633LOC: Eui::TheConfig.euiLookup
10634DOC_START
10635 Whether to lookup the EUI or MAC address of a connected client.
10636DOC_END
10637
f3f0f563
AJ
10638NAME: max_filedescriptors max_filedesc
10639TYPE: int
10640DEFAULT: 0
cfab2c11 10641DEFAULT_DOC: Use operating system soft limit set by ulimit.
f3f0f563
AJ
10642LOC: Config.max_filedescriptors
10643DOC_START
cfab2c11
D
10644 Set the maximum number of filedescriptors, either below the
10645 operating system default or up to the hard limit.
f3f0f563 10646
cfab2c11
D
10647 Remove from squid.conf to inherit the current ulimit soft
10648 limit setting.
f3f0f563
AJ
10649
10650 Note: Changing this requires a restart of Squid. Also
638402dd 10651 not all I/O types supports large values (eg on Windows).
f3f0f563
AJ
10652DOC_END
10653
ec69bdb2
CT
10654NAME: force_request_body_continuation
10655TYPE: acl_access
10656LOC: Config.accessList.forceRequestBodyContinuation
10657DEFAULT: none
10658DEFAULT_DOC: Deny, unless rules exist in squid.conf.
10659DOC_START
10660 This option controls how Squid handles data upload requests from HTTP
10661 and FTP agents that require a "Please Continue" control message response
10662 to actually send the request body to Squid. It is mostly useful in
10663 adaptation environments.
9603207d 10664
ec69bdb2
CT
10665 When Squid receives an HTTP request with an "Expect: 100-continue"
10666 header or an FTP upload command (e.g., STOR), Squid normally sends the
10667 request headers or FTP command information to an adaptation service (or
10668 peer) and waits for a response. Most adaptation services (and some
10669 broken peers) may not respond to Squid at that stage because they may
10670 decide to wait for the HTTP request body or FTP data transfer. However,
10671 that request body or data transfer may never come because Squid has not
10672 responded with the HTTP 100 or FTP 150 (Please Continue) control message
10673 to the request sender yet!
9603207d 10674
ec69bdb2
CT
10675 An allow match tells Squid to respond with the HTTP 100 or FTP 150
10676 (Please Continue) control message on its own, before forwarding the
10677 request to an adaptation service or peer. Such a response usually forces
10678 the request sender to proceed with sending the body. A deny match tells
10679 Squid to delay that control response until the origin server confirms
10680 that the request body is needed. Delaying is the default behavior.
10681DOC_END
1c2b4465
CT
10682
10683NAME: http_upgrade_request_protocols
10684TYPE: http_upgrade_request_protocols
10685LOC: Config.http_upgrade_request_protocols
10686DEFAULT: none
10687DEFAULT_DOC: Upgrade header dropped, effectively blocking an upgrade attempt.
10688DOC_START
10689 Controls client-initiated and server-confirmed switching from HTTP to
10690 another protocol (or to several protocols) using HTTP Upgrade mechanism
10691 defined in RFC 7230 Section 6.7. Squid itself does not understand the
10692 protocols being upgraded to and participates in the upgraded
10693 communication only as a dumb TCP proxy. Admins should not allow
10694 upgrading to protocols that require a more meaningful proxy
10695 participation.
10696
10697 Usage: http_upgrade_request_protocols <protocol> allow|deny [!]acl ...
10698
10699 The required "protocol" parameter is either an all-caps word OTHER or an
10700 explicit protocol name (e.g. "WebSocket") optionally followed by a slash
10701 and a version token (e.g. "HTTP/3"). Explicit protocol names and
10702 versions are case sensitive.
10703
10704 When an HTTP client sends an Upgrade request header, Squid iterates over
10705 the client-offered protocols and, for each protocol P (with an optional
10706 version V), evaluates the first non-empty set of
10707 http_upgrade_request_protocols rules (if any) from the following list:
10708
10709 * All rules with an explicit protocol name equal to P.
10710 * All rules that use OTHER instead of a protocol name.
10711
10712 In other words, rules using OTHER are considered for protocol P if and
10713 only if there are no rules mentioning P by name.
10714
10715 If both of the above sets are empty, then Squid removes protocol P from
10716 the Upgrade offer.
10717
10718 If the client sent a versioned protocol offer P/X, then explicit rules
10719 referring to the same-name but different-version protocol P/Y are
10720 declared inapplicable. Inapplicable rules are not evaluated (i.e. are
10721 ignored). However, inapplicable rules still belong to the first set of
10722 rules for P.
10723
10724 Within the applicable rule subset, individual rules are evaluated in
10725 their configuration order. If all ACLs of an applicable "allow" rule
10726 match, then the protocol offered by the client is forwarded to the next
10727 hop as is. If all ACLs of an applicable "deny" rule match, then the
10728 offer is dropped. If no applicable rules have matching ACLs, then the
10729 offer is also dropped. The first matching rule also ends rules
10730 evaluation for the offered protocol.
10731
10732 If all client-offered protocols are removed, then Squid forwards the
10733 client request without the Upgrade header. Squid never sends an empty
10734 Upgrade request header.
10735
10736 An Upgrade request header with a value violating HTTP syntax is dropped
10737 and ignored without an attempt to use extractable individual protocol
10738 offers.
10739
10740 Upon receiving an HTTP 101 (Switching Protocols) control message, Squid
10741 checks that the server listed at least one protocol name and sent a
10742 Connection:upgrade response header. Squid does not understand individual
10743 protocol naming and versioning concepts enough to implement stricter
10744 checks, but an admin can restrict HTTP 101 (Switching Protocols)
10745 responses further using http_reply_access. Responses denied by
10746 http_reply_access rules and responses flagged by the internal Upgrade
10747 checks result in HTTP 502 (Bad Gateway) ERR_INVALID_RESP errors and
10748 Squid-to-server connection closures.
10749
10750 If Squid sends an Upgrade request header, and the next hop (e.g., the
10751 origin server) responds with an acceptable HTTP 101 (Switching
10752 Protocols), then Squid forwards that message to the client and becomes
10753 a TCP tunnel.
10754
10755 The presence of an Upgrade request header alone does not preclude cache
10756 lookups. In other words, an Upgrade request might be satisfied from the
10757 cache, using regular HTTP caching rules.
10758
10759 This clause only supports fast acl types.
10760 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
10761
10762 Each of the following groups of configuration lines represents a
10763 separate configuration example:
10764
10765 # never upgrade to protocol Foo; all others are OK
10766 http_upgrade_request_protocols Foo deny all
10767 http_upgrade_request_protocols OTHER allow all
10768
10769 # only allow upgrades to protocol Bar (except for its first version)
10770 http_upgrade_request_protocols Bar/1 deny all
10771 http_upgrade_request_protocols Bar allow all
10772 http_upgrade_request_protocols OTHER deny all # this rule is optional
10773
10774 # only allow upgrades to protocol Baz, and only if Baz is the only offer
10775 acl UpgradeHeaderHasMultipleOffers ...
10776 http_upgrade_request_protocols Baz deny UpgradeHeaderHasMultipleOffers
10777 http_upgrade_request_protocols Baz allow all
10778DOC_END
ec69bdb2 10779
afc753f3
EB
10780NAME: server_pconn_for_nonretriable
10781TYPE: acl_access
10782DEFAULT: none
10783DEFAULT_DOC: Open new connections for forwarding requests Squid cannot retry safely.
10784LOC: Config.accessList.serverPconnForNonretriable
10785DOC_START
10786 This option provides fine-grained control over persistent connection
10787 reuse when forwarding HTTP requests that Squid cannot retry. It is useful
10788 in environments where opening new connections is very expensive
10789 (e.g., all connections are secured with TLS with complex client and server
10790 certificate validation) and race conditions associated with persistent
10791 connections are very rare and/or only cause minor problems.
10792
10793 HTTP prohibits retrying unsafe and non-idempotent requests (e.g., POST).
10794 Squid limitations also prohibit retrying all requests with bodies (e.g., PUT).
10795 By default, when forwarding such "risky" requests, Squid opens a new
10796 connection to the server or cache_peer, even if there is an idle persistent
10797 connection available. When Squid is configured to risk sending a non-retriable
10798 request on a previously used persistent connection, and the server closes
10799 the connection before seeing that risky request, the user gets an error response
10800 from Squid. In most cases, that error response will be HTTP 502 (Bad Gateway)
10801 with ERR_ZERO_SIZE_OBJECT or ERR_WRITE_ERROR (peer connection reset) error detail.
10802
10803 If an allow rule matches, Squid reuses an available idle persistent connection
10804 (if any) for the request that Squid cannot retry. If a deny rule matches, then
10805 Squid opens a new connection for the request that Squid cannot retry.
10806
10807 This option does not affect requests that Squid can retry. They will reuse idle
10808 persistent connections (if any).
10809
10810 This clause only supports fast acl types.
10811 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
10812
10813 Example:
10814 acl SpeedIsWorthTheRisk method POST
10815 server_pconn_for_nonretriable allow SpeedIsWorthTheRisk
10816DOC_END
10817
55622953
CT
10818NAME: happy_eyeballs_connect_timeout
10819COMMENT: (msec)
10820TYPE: int
10821DEFAULT: 250
10822LOC: Config.happyEyeballs.connect_timeout
10823DOC_START
10824 This Happy Eyeballs (RFC 8305) tuning directive specifies the minimum
10825 delay between opening a primary to-server connection and opening a
10826 spare to-server connection for the same master transaction. This delay
10827 is similar to the Connection Attempt Delay in RFC 8305, but it is only
10828 applied to the first spare connection attempt. Subsequent spare
10829 connection attempts use happy_eyeballs_connect_gap, and primary
10830 connection attempts are not artificially delayed at all.
10831
10832 Terminology: The "primary" and "spare" designations are determined by
10833 the order of DNS answers received by Squid: If Squid DNS AAAA query
10834 was answered first, then primary connections are connections to IPv6
10835 peer addresses (while spare connections use IPv4 addresses).
10836 Similarly, if Squid DNS A query was answered first, then primary
10837 connections are connections to IPv4 peer addresses (while spare
10838 connections use IPv6 addresses).
10839
10840 Shorter happy_eyeballs_connect_timeout values reduce master
10841 transaction response time, potentially improving user-perceived
10842 response times (i.e., making user eyeballs happier). Longer delays
10843 reduce both concurrent connection level and server bombardment with
10844 connection requests, potentially improving overall Squid performance
10845 and reducing the chance of being blocked by servers for opening too
10846 many unused connections.
10847
10848 RFC 8305 prohibits happy_eyeballs_connect_timeout values smaller than
10849 10 (milliseconds) to "avoid congestion collapse in the presence of
10850 high packet-loss rates".
10851
10852 The following Happy Eyeballs directives place additional connection
10853 opening restrictions: happy_eyeballs_connect_gap and
10854 happy_eyeballs_connect_limit.
10855DOC_END
10856
10857NAME: happy_eyeballs_connect_gap
10858COMMENT: (msec)
10859TYPE: int
10860DEFAULT: -1
10861DEFAULT_DOC: no artificial delays between spare attempts
10862LOC: Config.happyEyeballs.connect_gap
10863DOC_START
10864 This Happy Eyeballs (RFC 8305) tuning directive specifies the
10865 minimum delay between opening spare to-server connections (to any
10866 server; i.e. across all concurrent master transactions in a Squid
10867 instance). Each SMP worker currently multiplies the configured gap
10868 by the total number of workers so that the combined spare connection
10869 opening rate of a Squid instance obeys the configured limit. The
10870 workers do not coordinate connection openings yet; a micro burst
10871 of spare connection openings may violate the configured gap.
10872
10873 This directive has similar trade-offs as
10874 happy_eyeballs_connect_timeout, but its focus is on limiting traffic
10875 amplification effects for Squid as a whole, while
10876 happy_eyeballs_connect_timeout works on an individual master
10877 transaction level.
10878
10879 The following Happy Eyeballs directives place additional connection
10880 opening restrictions: happy_eyeballs_connect_timeout and
10881 happy_eyeballs_connect_limit. See the former for related terminology.
10882DOC_END
10883
10884NAME: happy_eyeballs_connect_limit
10885TYPE: int
10886DEFAULT: -1
10887DEFAULT_DOC: no artificial limit on the number of concurrent spare attempts
10888LOC: Config.happyEyeballs.connect_limit
10889DOC_START
10890 This Happy Eyeballs (RFC 8305) tuning directive specifies the
10891 maximum number of spare to-server connections (to any server; i.e.
10892 across all concurrent master transactions in a Squid instance).
10893 Each SMP worker gets an equal share of the total limit. However,
10894 the workers do not share the actual connection counts yet, so one
10895 (busier) worker cannot "borrow" spare connection slots from another
10896 (less loaded) worker.
10897
10898 Setting this limit to zero disables concurrent use of primary and
10899 spare TCP connections: Spare connection attempts are made only after
10900 all primary attempts fail. However, Squid would still use the
10901 DNS-related optimizations of the Happy Eyeballs approach.
10902
10903 This directive has similar trade-offs as happy_eyeballs_connect_gap,
10904 but its focus is on limiting Squid overheads, while
10905 happy_eyeballs_connect_gap focuses on the origin server and peer
10906 overheads.
10907
10908 The following Happy Eyeballs directives place additional connection
10909 opening restrictions: happy_eyeballs_connect_timeout and
10910 happy_eyeballs_connect_gap. See the former for related terminology.
10911DOC_END
10912
cccac0a2 10913EOF