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