]> git.ipfire.org Git - thirdparty/squid.git/blame_incremental - src/cf.data.pre
Improve error message storage in Dns::LookupDetails (#1241)
[thirdparty/squid.git] / src / cf.data.pre
... / ...
CommitLineData
1## Copyright (C) 1996-2023 The Squid Software Foundation and contributors
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##
7
8COMMENT_START
9 WELCOME TO @SQUID@
10 ----------------------------
11
12 This is the documentation for the Squid configuration file.
13 This documentation can also be found online at:
14 http://www.squid-cache.org/Doc/config/
15
16 You may wish to look at the Squid home page and wiki for the
17 FAQ and other documentation:
18 http://www.squid-cache.org/
19 http://wiki.squid-cache.org/SquidFaq
20 http://wiki.squid-cache.org/ConfigExamples
21
22 This documentation shows what the defaults for various directives
23 happen to be. If you don't need to change the default, you should
24 leave the line out of your squid.conf in most cases.
25
26 In some cases "none" refers to no default setting at all,
27 while in other cases it refers to the value of the option
28 - the comments for that keyword indicate if this is the case.
29
30COMMENT_END
31
32COMMENT_START
33 Configuration options can be included using the "include" directive.
34 Include takes a list of files to include. Quoting and wildcards are
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.
45
46 Values with byte units
47
48 Squid accepts size units on some size related directives. All
49 such directives are documented with a default value displaying
50 a unit.
51
52 Units accepted by Squid are:
53 bytes - byte
54 KB - Kilobyte (1024 bytes)
55 MB - Megabyte
56 GB - Gigabyte
57
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
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:
87 acl allowlist dstdomain parameters("/etc/squid/allowlist.txt")
88
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
104 NOTE: An else-if condition is not supported.
105
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
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
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
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
145COMMENT_END
146
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
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
172NAME: location_rewrite_program location_rewrite_access location_rewrite_children location_rewrite_concurrency
173TYPE: obsolete
174DOC_START
175 This option is not yet supported by Squid-3.
176DOC_END
177
178NAME: refresh_stale_hit
179TYPE: obsolete
180DOC_START
181 This option is not yet supported by Squid-3.
182DOC_END
183
184# Options removed in 6.x
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
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
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
223# Options removed in 4.x
224NAME: cache_peer_domain cache_host_domain
225TYPE: obsolete
226DOC_START
227 Replace with dstdomain ACLs and cache_peer_access.
228DOC_END
229
230NAME: ie_refresh
231TYPE: obsolete
232DOC_START
233 Remove this line. The behaviour enabled by this is no longer needed.
234DOC_END
235
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
281 Remove this line. Use tls_outgoing_options options= instead.
282DOC_END
283
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
291# Options removed in 3.4
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
304# Options Removed in 3.3
305NAME: ignore_ims_on_miss
306TYPE: obsolete
307DOC_START
308 Remove this line. The HTTP/1.1 feature is now configured by 'cache_miss_revalidate'.
309DOC_END
310
311# Options Removed in 3.2
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
318NAME: chunked_request_body_max_size
319TYPE: obsolete
320DOC_START
321 Remove this line. Squid is now HTTP/1.1 compliant.
322DOC_END
323
324NAME: dns_v4_fallback
325TYPE: obsolete
326DOC_START
327 Remove this line. Squid performs a 'Happy Eyeballs' algorithm, the 'fallback' algorithm is no longer relevant.
328DOC_END
329
330NAME: emulate_httpd_log
331TYPE: obsolete
332DOC_START
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.
340DOC_END
341
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
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
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
372NAME: referer_log referrer_log
373TYPE: obsolete
374DOC_START
375 Replace this with an access_log directive using the format 'referrer'.
376DOC_END
377
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
384NAME: url_rewrite_concurrency
385TYPE: obsolete
386DOC_START
387 Remove this line. Set the 'concurrency=' option of url_rewrite_children instead.
388DOC_END
389
390NAME: useragent_log
391TYPE: obsolete
392DOC_START
393 Replace this with an access_log directive using the format 'useragent'.
394DOC_END
395
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
409# 2.7 Options Removed/Replaced in 3.2
410NAME: zero_buffers
411TYPE: obsolete
412DOC_NONE
413
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
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
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
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
530 option ensures that the mapped memory will be available.
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
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
559COMMENT_START
560 OPTIONS FOR AUTHENTICATION
561 -----------------------------------------------------------------------------
562COMMENT_END
563
564NAME: auth_param
565TYPE: authparam
566IFDEF: USE_AUTH
567LOC: Auth::TheConfig.schemes
568DEFAULT: none
569DOC_START
570 This is used to define parameters for the various authentication
571 schemes supported by Squid.
572
573 format: auth_param scheme parameter [setting]
574
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).
584
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.
589
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.
599
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.
604 Ports flagged 'transparent', 'intercept', or 'tproxy' have
605 authentication disabled.
606
607 === Parameters common to all schemes. ===
608
609 "program" cmdline
610 Specifies the command for the external authenticator.
611
612 By default, each authentication scheme is not used unless a
613 program is specified.
614
615 See http://wiki.squid-cache.org/Features/AddonHelpers for
616 more details on helper operations and creating your own.
617
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
631 authenticate different users with identical user names (e.g.,
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.
651
652 "children" numberofchildren [startup=N] [idle=N] [concurrency=N]
653 [queue-size=N] [on-persistent-overload=action]
654 [reservation-timeout=seconds]
655
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.
661
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.
667
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.
675
676 Concurrency must not be set unless it's known the helper
677 supports the input format with channel-ID fields.
678
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.
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.
703
704 NOTE: NTLM and Negotiate schemes do not support concurrency
705 in the Squid code module even though some helpers can.
706
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
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.
729
730 For Basic and Digest this parameter is ignored.
731
732 "utf8" on|off
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.
749
750IF HAVE_AUTH_MODULE_BASIC
751 === Basic authentication parameters ===
752
753 "credentialsttl" timetolive
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.
758
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.
764
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.
771
772ENDIF
773IF HAVE_AUTH_MODULE_DIGEST
774 === Digest authentication parameters ===
775
776 "nonce_garbage_interval" timeinterval
777 Specifies the interval that nonces that have been issued
778 to client_agent's are checked for validity.
779
780 "nonce_max_duration" timeinterval
781 Specifies the maximum length of time a given nonce will be
782 valid for.
783
784 "nonce_max_count" number
785 Specifies the maximum number of times a given nonce can be
786 used.
787
788 "nonce_strictness" on|off
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.
793
794 "check_nonce_count" on|off
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.
799
800 "post_workaround" on|off
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.
804
805ENDIF
806
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:
812
813#auth_param negotiate program <uncomment and complete this line to activate>
814#auth_param negotiate children 20 startup=0 idle=1
815#
816#auth_param digest program <uncomment and complete this line to activate>
817#auth_param digest children 20 startup=0 idle=1
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
822#
823#auth_param ntlm program <uncomment and complete this line to activate>
824#auth_param ntlm children 20 startup=0 idle=1
825#
826#auth_param basic program <uncomment and complete this line>
827#auth_param basic children 5 startup=5 idle=1
828#auth_param basic credentialsttl 2 hours
829DOC_END
830
831NAME: authenticate_cache_garbage_interval
832IFDEF: USE_AUTH
833TYPE: time_t
834DEFAULT: 1 hour
835LOC: Auth::TheConfig.garbageCollectInterval
836DOC_START
837 The time period between garbage collection across the username cache.
838 This is a trade-off between memory utilization (long intervals - say
839 2 days) and CPU (short intervals - say 1 minute). Only change if you
840 have good reason to.
841DOC_END
842
843NAME: authenticate_ttl
844IFDEF: USE_AUTH
845TYPE: time_t
846DEFAULT: 1 hour
847LOC: Auth::TheConfig.credentialsTtl
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
854
855NAME: authenticate_ip_ttl
856IFDEF: USE_AUTH
857TYPE: time_t
858LOC: Auth::TheConfig.ipTtl
859DEFAULT: 1 second
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
865 quickly, as is the case with dialup. You might be safe
866 using a larger value (e.g., 2 hours) in a corporate LAN
867 environment with relatively static address assignments.
868DOC_END
869
870COMMENT_START
871 ACCESS CONTROLS
872 -----------------------------------------------------------------------------
873COMMENT_END
874
875NAME: external_acl_type
876TYPE: externalAclHelper
877LOC: Config.externalAclHelperList
878DEFAULT: none
879DOC_START
880 This option defines external acl classes using a helper program
881 to look up the status
882
883 external_acl_type name [options] FORMAT /path/to/helper [helper arguments]
884
885 Options:
886
887 ttl=n TTL in seconds for cached results (defaults to 3600
888 for 1 hour)
889
890 negative_ttl=n
891 TTL for cached negative lookups (default same
892 as ttl)
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
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.
906
907 children-max=n
908 Maximum number of acl helper processes spawned to service
909 external acl lookups of this type. (default 5)
910
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)
915
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)
921
922 concurrency=n concurrency level per process. Only used with helpers
923 capable of processing more than one query at a time.
924
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.
931
932 protocol=2.5 Compatibility mode for Squid-2.5 external acl helpers.
933
934 ipv4 / ipv6 IP protocol used to communicate with this helper.
935 The default is to auto-detect IPv6 and use it when available.
936
937
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:
944
945 %ACL The name of the ACL being tested.
946
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.
955 Note that Squid-3.x may expand %DATA to whitespace
956 or nothing in this case.
957
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
965 If SSL is enabled, the following formatting codes become available:
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.
975
976
977 General request syntax:
978
979 [channel-ID] FORMAT-values
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
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
1005
1006 General result syntax:
1007
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
1019 An internal error occurred in the helper, preventing
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.
1024
1025 Defined keywords:
1026
1027 user= The users name (login)
1028
1029 password= The users password (for login= cache_peer option)
1030
1031 message= Message describing the reason for this response.
1032 Available as %o in error pages.
1033 Useful on (ERR and BH results).
1034
1035 tag= Apply a tag to a request. Only sets a tag once,
1036 does not alter existing tags.
1037
1038 log= String to be logged in access.log. Available as
1039 %ea in logformat specifications.
1040
1041 clt_conn_tag= Associates a TAG with the client TCP connection.
1042 Please see url_rewrite_program related documentation
1043 for this kv-pair.
1044
1045 Any keywords may be sent on any response whether OK, ERR or BH.
1046
1047 All response keyword values need to be a single token with URL
1048 escaping, or enclosed in double quotes (") and escaped using \ on
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.
1052
1053 Some example key values:
1054
1055 user=John%20Smith
1056 user="John Smith"
1057 user="J. \"Bob\" Smith"
1058DOC_END
1059
1060NAME: acl
1061TYPE: acl
1062LOC: Config.aclList
1063IF USE_OPENSSL
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
1070DEFAULT: all src all
1071DEFAULT: manager url_regex -i ^cache_object:// +i ^[^:]+://[^/]+/squid-internal-mgr/
1072DEFAULT: localhost src 127.0.0.1/32 ::1
1073DEFAULT: to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1/128 ::/128
1074DEFAULT: to_linklocal dst 169.254.0.0/16 fe80::/10
1075DEFAULT: CONNECT method CONNECT
1076DEFAULT_DOC: ACLs all, manager, localhost, to_localhost, to_linklocal, and CONNECT are predefined.
1077DOC_START
1078 Defining an Access List
1079
1080 Every access list definition must begin with an aclname and acltype,
1081 followed by either type-specific arguments or a quoted filename that
1082 they are read from.
1083
1084 acl aclname acltype argument ...
1085 acl aclname acltype "file" ...
1086
1087 When using "file", the file should contain one item per line.
1088
1089
1090 ACL Options
1091
1092 Some acl types supports options which changes their default behaviour:
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
1097 without -i.
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
1105 -m[=delimiters]
1106 Perform a list membership test, interpreting values as
1107 comma-separated token lists and matching against individual
1108 tokens instead of whole values.
1109 The optional "delimiters" parameter specifies one or more
1110 alternative non-alphanumeric delimiter characters.
1111 non-alphanumeric delimiter characters.
1112
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)
1116
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
1123
1124 ***** ACL TYPES AVAILABLE *****
1125
1126 acl aclname src ip-address/mask ... # clients IP address [fast]
1127 acl aclname src addr1-addr2/mask ... # range of addresses [fast]
1128 acl aclname dst [-n] ip-address/mask ... # URL host's IP address [slow]
1129 acl aclname localip ip-address/mask ... # IP address the client connected to [fast]
1130
1131if USE_SQUID_EUI
1132 acl aclname arp mac-address ...
1133 acl aclname eui64 eui64-address ...
1134 # [fast]
1135 # MAC (EUI-48) and EUI-64 addresses use xx:xx:xx:xx:xx:xx notation.
1136 #
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.
1140 #
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
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 #
1149 # IPv6 protocol does not contain ARP. MAC/EUI is either
1150 # encoded directly in the IPv6 address or not available.
1151endif
1152 acl aclname clientside_mark mark[/mask] ...
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] ...
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
1173 acl aclname srcdomain .foo.com ...
1174 # reverse lookup, from client IP [slow]
1175 acl aclname dstdomain [-n] .foo.com ...
1176 # Destination server from URL [fast]
1177 acl aclname srcdom_regex [-i] \.foo\.com ...
1178 # regex matching client name [slow]
1179 acl aclname dstdom_regex [-n] [-i] \.foo\.com ...
1180 # regex matching server [fast]
1181 #
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.
1185
1186 acl aclname src_as number ...
1187 acl aclname dst_as number ...
1188 # [fast]
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
1196
1197 acl aclname peername myPeer ...
1198 acl aclname peername_regex [-i] regex-pattern ...
1199 # [fast]
1200 # match against a named cache_peer entry
1201 # set unique name= on cache_peer lines for reliable use.
1202
1203 acl aclname time [day-abbrevs] [h1:m1-h2:m2]
1204 # [fast]
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
1215 acl aclname url_regex [-i] ^http:// ...
1216 # regex matching on whole URL [fast]
1217 acl aclname urllogin [-i] [^a-zA-Z0-9] ...
1218 # regex matching on URL login field
1219 acl aclname urlpath_regex [-i] \.gif$ ...
1220 # regex matching on URL path [fast]
1221
1222 acl aclname port 80 70 21 0-1024... # destination TCP port [fast]
1223 # ranges are allowed
1224 acl aclname localport 3128 ... # TCP port the client connected to [fast]
1225 # NP: for interception mode this is usually '80'
1226
1227 acl aclname myportname 3128 ... # *_port name [fast]
1228
1229 acl aclname proto HTTP FTP ... # request protocol [fast]
1230
1231 acl aclname method GET POST ... # HTTP request method [fast]
1232
1233 acl aclname http_status 200 301 500- 400-403 ...
1234 # status code in reply [fast]
1235
1236 acl aclname browser [-i] regexp ...
1237 # pattern match on User-Agent header (see also req_header below) [fast]
1238
1239 acl aclname referer_regex [-i] regexp ...
1240 # pattern match on Referer header [fast]
1241 # Referer is highly unreliable, so use with care
1242
1243 acl aclname ident [-i] username ...
1244 acl aclname ident_regex [-i] pattern ...
1245 # string match on ident output [slow]
1246 # use REQUIRED to accept any non-null ident.
1247
1248 acl aclname proxy_auth [-i] username ...
1249 acl aclname proxy_auth_regex [-i] pattern ...
1250 # perform http authentication challenge to the client and match against
1251 # supplied credentials [slow]
1252 #
1253 # takes a list of allowed usernames.
1254 # use REQUIRED to accept any valid username.
1255 #
1256 # Will use proxy authentication in forward-proxy scenarios, and plain
1257 # http authentication in reverse-proxy scenarios
1258 #
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 #
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
1269 # to respond to proxy authentication.
1270
1271 acl aclname snmp_community string ...
1272 # A community string to limit access to your SNMP Agent [fast]
1273 # Example:
1274 #
1275 # acl snmppublic snmp_community public
1276
1277 acl aclname maxconn number
1278 # This will be matched when the client's IP address has
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.
1282
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
1286 # parameter controls the timeout on the ip entries. [fast]
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.
1295
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
1301 acl aclname req_mime_type [-i] mime-type ...
1302 # regex match against the mime type of the request generated
1303 # by the client. Can be used to detect file upload or some
1304 # types HTTP tunneling requests [fast]
1305 # NOTE: This does NOT match the reply. You cannot use this
1306 # to match the returned file type.
1307
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"
1311 # ACL [fast]
1312
1313 acl aclname rep_mime_type [-i] mime-type ...
1314 # regex match against the mime type of the reply received by
1315 # squid. Can be used to detect file download or some
1316 # types HTTP tunneling requests. [fast]
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.
1320
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"
1324 # ACLs [fast]
1325
1326 acl aclname external class_name [arguments...]
1327 # external ACL lookup via a helper class defined by the
1328 # external_acl_type directive [slow]
1329
1330 acl aclname user_cert attribute values...
1331 # match against attributes in a user SSL certificate
1332 # attribute is one of DN/C/O/CN/L/ST or a numerical OID [fast]
1333
1334 acl aclname ca_cert attribute values...
1335 # match against attributes a users issuing CA SSL certificate
1336 # attribute is one of DN/C/O/CN/L/ST or a numerical OID [fast]
1337
1338 acl aclname ext_user [-i] username ...
1339 acl aclname ext_user_regex [-i] pattern ...
1340 # string match on username returned by external acl helper [slow]
1341 # use REQUIRED to accept any non-null user name.
1342
1343 acl aclname tag tagvalue ...
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.
1347
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
1356 acl aclname note [-m[=delimiters]] name [value ...]
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.
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.
1365 # Annotation sources include note and adaptation_meta directives
1366 # as well as helper and eCAP responses.
1367
1368 acl aclname annotate_transaction [-m[=delimiters]] key=value ...
1369 acl aclname annotate_transaction [-m[=delimiters]] key+=value ...
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
1413 acl aclname annotate_client [-m[=delimiters]] key=value ...
1414 acl aclname annotate_client [-m[=delimiters]] key+=value ...
1415 #
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
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
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
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
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
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
1510IF USE_OPENSSL
1511 acl aclname ssl_error errorname
1512 # match against SSL certificate validation error [fast]
1513 #
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 #
1521 # For valid error names see in @DEFAULT_ERROR_DIR@/templates/error-details.txt
1522 # template file.
1523 #
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.
1535
1536 acl aclname server_cert_fingerprint [-sha1] fingerprint
1537 # match against server SSL certificate fingerprint [fast]
1538 #
1539 # The fingerprint is the digest of the DER encoded version
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).
1544
1545 acl aclname ssl::server_name [option] .foo.com ...
1546 # matches server name obtained from various sources [fast]
1547 #
1548 # The ACL computes server name(s) using such information sources as
1549 # CONNECT request URI, TLS client SNI, and TLS server certificate
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
1560 # could not compute the server name using any information source
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 #
1566 # An ACL option below may be used to restrict what information
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).
1586
1587 acl aclname ssl::server_name_regex [-i] \.foo\.com ...
1588 # regex matches server name obtained from various sources [fast]
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.
1613ENDIF
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
1626 acl aclname all-of acl1 acl2 ...
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.
1637
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$
1644
1645CONFIG_START
1646#
1647# Recommended minimum configuration:
1648#
1649
1650# Example rule allowing access from your local networks.
1651# Adapt to list your (internal) IP networks from where browsing
1652# should be allowed
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)
1656acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
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
1661
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
1673CONFIG_END
1674DOC_END
1675
1676NAME: proxy_protocol_access
1677TYPE: acl_access
1678LOC: Config.accessList.proxyProtocol
1679DEFAULT: none
1680DEFAULT_DOC: all TCP connections to ports with require-proxy-header will be denied
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
1705 Any host from which we accept client IP details can place
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
1719LOC: Config.accessList.followXFF
1720DEFAULT_IF_NONE: deny all
1721DEFAULT_DOC: X-Forwarded-For header will be ignored.
1722DOC_START
1723 Determine which client proxies can be trusted to provide correct
1724 information regarding real client IP address.
1725
1726 Requests may pass through a chain of several other proxies
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.
1731
1732 PROXY protocol connections are controlled by the proxy_protocol_access
1733 directive which is checked before this.
1734
1735 If a request reaches us from a source that is allowed by this
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
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.
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
1751 be treated as the client address for access control, ICAP, delay
1752 pools and logging, depending on the acl_uses_indirect_client,
1753 icap_uses_indirect_client, delay_pool_uses_indirect_client,
1754 log_uses_indirect_client and tproxy_uses_indirect_client options.
1755
1756 This clause only supports fast acl types.
1757 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
1758
1759 SECURITY CONSIDERATIONS:
1760
1761 Any host from which we accept client IP details can place
1762 incorrect information in the relevant header, and Squid
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.
1786
1787 NOTE: maxconn ACL considers direct TCP links and indirect
1788 clients will always have zero. So no match.
1789DOC_END
1790
1791NAME: delay_pool_uses_indirect_client
1792COMMENT: on|off
1793TYPE: onoff
1794IFDEF: FOLLOW_X_FORWARDED_FOR&&USE_DELAY_POOLS
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
1815NAME: tproxy_uses_indirect_client
1816COMMENT: on|off
1817TYPE: onoff
1818IFDEF: FOLLOW_X_FORWARDED_FOR&&LINUX_NETFILTER
1819DEFAULT: off
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.
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
1831 of follow_x_forwarded_for with a limited set of trusted
1832 sources is required to prevent abuse of your proxy.
1833DOC_END
1834
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
1855NAME: http_access
1856TYPE: acl_access
1857LOC: Config.accessList.http
1858DEFAULT_IF_NONE: deny all
1859DEFAULT_DOC: Deny, unless rules exist in squid.conf.
1860DOC_START
1861 Allowing or Denying access based on defined access lists
1862
1863 To allow or deny a message received on an HTTP, HTTPS, or FTP port:
1864 http_access allow|deny [!]aclname ...
1865
1866 NOTE on default values:
1867
1868 If there are no "access" lines present, the default is to deny
1869 the request.
1870
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
1875 good idea to have an "deny all" entry at the end of your access
1876 lists to avoid potential confusion.
1877
1878 This clause supports both fast and slow acl types.
1879 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
1880
1881CONFIG_START
1882
1883#
1884# Recommended minimum Access Permission configuration:
1885#
1886# Deny requests to certain unsafe ports
1887http_access deny !Safe_ports
1888
1889# Deny CONNECT to other than secure SSL ports
1890http_access deny CONNECT !SSL_ports
1891
1892# Only allow cachemgr access from localhost
1893http_access allow localhost manager
1894http_access deny manager
1895
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
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
1912
1913#
1914# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
1915#
1916
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
1920
1921# And finally deny all other access to this proxy
1922http_access deny all
1923CONFIG_END
1924DOC_END
1925
1926NAME: adapted_http_access http_access2
1927TYPE: acl_access
1928LOC: Config.accessList.adapted_http
1929DEFAULT: none
1930DEFAULT_DOC: Allow, unless rules exist in squid.conf.
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
1941NAME: http_reply_access
1942TYPE: acl_access
1943LOC: Config.accessList.reply
1944DEFAULT: none
1945DEFAULT_DOC: Allow, unless rules exist in squid.conf.
1946DOC_START
1947 Allow replies to client requests. This is complementary to http_access.
1948
1949 http_reply_access allow|deny [!] aclname ...
1950
1951 NOTE: if there are no access lines present, the default is to allow
1952 all replies.
1953
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.
1957
1958 This clause supports both fast and slow acl types.
1959 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
1960DOC_END
1961
1962NAME: icp_access
1963TYPE: acl_access
1964LOC: Config.accessList.icp
1965DEFAULT: none
1966DEFAULT_DOC: Deny, unless rules exist in squid.conf.
1967DOC_START
1968 Allowing or Denying access to the ICP port based on defined
1969 access lists
1970
1971 icp_access allow|deny [!]aclname ...
1972
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.
1976
1977 This clause only supports fast acl types.
1978 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
1979
1980# Allow ICP queries from local networks only
1981#icp_access allow localnet
1982#icp_access deny all
1983DOC_END
1984
1985NAME: htcp_access
1986IFDEF: USE_HTCP
1987TYPE: acl_access
1988LOC: Config.accessList.htcp
1989DEFAULT: none
1990DEFAULT_DOC: Deny, unless rules exist in squid.conf.
1991DOC_START
1992 Allowing or Denying access to the HTCP port based on defined
1993 access lists
1994
1995 htcp_access allow|deny [!]aclname ...
1996
1997 See also htcp_clr_access for details on access control for
1998 cache purge (CLR) HTCP messages.
1999
2000 NOTE: The default if no htcp_access lines are present is to
2001 deny all traffic. This default may cause problems with peers
2002 using the htcp option.
2003
2004 This clause only supports fast acl types.
2005 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
2006
2007# Allow HTCP queries from local networks only
2008#htcp_access allow localnet
2009#htcp_access deny all
2010DOC_END
2011
2012NAME: htcp_clr_access
2013IFDEF: USE_HTCP
2014TYPE: acl_access
2015LOC: Config.accessList.htcp_clr
2016DEFAULT: none
2017DEFAULT_DOC: Deny, unless rules exist in squid.conf.
2018DOC_START
2019 Allowing or Denying access to purge content using HTCP based
2020 on defined access lists.
2021 See htcp_access for details on general HTCP access control.
2022
2023 htcp_clr_access allow|deny [!]aclname ...
2024
2025 This clause only supports fast acl types.
2026 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
2027
2028# Allow HTCP CLR requests from trusted peers
2029acl htcp_clr_peer src 192.0.2.2 2001:DB8::2
2030htcp_clr_access allow htcp_clr_peer
2031htcp_clr_access deny all
2032DOC_END
2033
2034NAME: miss_access
2035TYPE: acl_access
2036LOC: Config.accessList.miss
2037DEFAULT: none
2038DEFAULT_DOC: Allow, unless rules exist in squid.conf.
2039DOC_START
2040 Determines whether network access is permitted when satisfying a request.
2041
2042 For example;
2043 to force your neighbors to use you as a sibling instead of
2044 a parent.
2045
2046 acl localclients src 192.0.2.0/24 2001:DB8::a:0/64
2047 miss_access deny !localclients
2048 miss_access allow all
2049
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
2054 The default for this setting allows all clients who passed the
2055 http_access rules to relay via this proxy.
2056
2057 This clause only supports fast acl types.
2058 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
2059DOC_END
2060
2061NAME: ident_lookup_access
2062TYPE: acl_access
2063IFDEF: USE_IDENT
2064DEFAULT: none
2065DEFAULT_DOC: Unless rules exist in squid.conf, IDENT is not fetched.
2066LOC: Ident::TheConfig.identLookup
2067DOC_START
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.
2074
2075 To enable ident lookups for specific client addresses, you
2076 can follow this example:
2077
2078 acl ident_aware_hosts src 198.168.1.0/24
2079 ident_lookup_access allow ident_aware_hosts
2080 ident_lookup_access deny all
2081
2082 Only src type ACL checks are fully supported. A srcdomain
2083 ACL might work at times, but it will not always provide
2084 the correct result.
2085
2086 This clause only supports fast acl types.
2087 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
2088DOC_END
2089
2090NAME: reply_body_max_size
2091COMMENT: size [acl acl...]
2092TYPE: acl_b_size_t
2093DEFAULT: none
2094DEFAULT_DOC: No limit is applied.
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.
2124
2125 Configuration Format is:
2126 reply_body_max_size SIZE UNITS [acl ...]
2127 ie.
2128 reply_body_max_size 10 MB
2129
2130DOC_END
2131
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
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.
2144
2145 on_unsupported_protocol <action> [!]acl ...
2146
2147 The first matching action wins. Only fast ACLs are supported.
2148
2149 Supported actions are:
2150
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.
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
2167 Currently, this directive has effect on intercepted connections and
2168 bumped tunnels only. Other cases are not supported because Squid
2169 cannot know the intended destination of other traffic.
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
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
2231COMMENT_START
2232 NETWORK OPTIONS
2233 -----------------------------------------------------------------------------
2234COMMENT_END
2235
2236NAME: http_port ascii_port
2237TYPE: PortCfg
2238DEFAULT: none
2239LOC: HttpPortList
2240DOC_START
2241 Usage: port [mode] [options]
2242 hostname:port [mode] [options]
2243 1.2.3.4:port [mode] [options]
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
2250 address. Most likely, you do not need to bind to a specific
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
2262 Modes:
2263
2264 intercept Support for IP-Layer NAT interception delivering
2265 traffic to this Squid port.
2266 NP: disables authentication on the port.
2267
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.
2271
2272 accel Accelerator / reverse proxy mode
2273
2274 ssl-bump For each CONNECT request allowed by ssl_bump ACLs,
2275 establish secure connection with the client and with
2276 the server, decrypt HTTPS messages as they pass through
2277 Squid, and treat them as unencrypted HTTP messages,
2278 becoming the man-in-the-middle.
2279
2280 The ssl_bump option is required to fully enable
2281 bumping of CONNECT requests.
2282
2283 Omitting the mode flag causes default forward proxy mode to be used.
2284
2285
2286 Accelerator Mode Options:
2287
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.
2292
2293 no-vhost Disable using HTTP/1.1 Host header for virtual domain support.
2294
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
2301
2302 vport Virtual host port support. Using the http_port number
2303 instead of the port passed on Host: headers.
2304
2305 vport=NN Virtual host port support. Using the specified port
2306 number instead of the port passed on Host: headers.
2307
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:.
2312
2313 ignore-cc Ignore request Cache-Control headers.
2314
2315 WARNING: This option violates HTTP specifications if
2316 used in non-accelerator setups.
2317
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
2327
2328 SSL Bump Mode Options:
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
2333 destination hosts of bumped CONNECT requests.When
2334 enabled, the cert and key options are used to sign
2335 generated certificates. Otherwise generated
2336 certificate will be selfsigned.
2337 If there is a CA certificate lifetime of the generated
2338 certificate equals lifetime of the CA certificate. If
2339 generated certificate is selfsigned lifetime is three
2340 years.
2341 This option is enabled by default when ssl-bump is used.
2342 See the ssl-bump option above for more information.
2343
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
2347 default value is 4MB.
2348
2349 TLS / SSL Options:
2350
2351 tls-cert= Path to file containing an X.509 certificate (PEM format)
2352 to be used in the TLS handshake ServerHello.
2353
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.
2378
2379 cipher= Colon separated list of supported ciphers.
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.
2384
2385 options= Various SSL implementation options. The most important
2386 being:
2387
2388 NO_SSLv3 Disallow the use of SSLv3
2389
2390 NO_TLSv1 Disallow the use of TLSv1.0
2391
2392 NO_TLSv1_1 Disallow the use of TLSv1.1
2393
2394 NO_TLSv1_2 Disallow the use of TLSv1.2
2395
2396 SINGLE_DH_USE
2397 Always create a new key when using
2398 temporary/ephemeral DH key exchanges
2399
2400 SINGLE_ECDH_USE
2401 Enable ephemeral ECDH key exchange.
2402 The adopted curve should be specified
2403 using the tls-dh option.
2404
2405 NO_TICKET
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
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.
2415
2416 See the OpenSSL SSL_CTX_set_options documentation for a
2417 more complete list.
2418
2419 clientca= File containing the list of CAs to use when
2420 requesting a client certificate.
2421
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.
2425
2426 capath= Directory containing additional CA certificates
2427 and CRL lists to use when verifying client certificates.
2428 Requires OpenSSL or LibreSSL.
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
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.
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).
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.
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
2464 tls-default-ca[=off]
2465 Whether to use the system Trusted CAs. Default is OFF.
2466
2467 tls-no-npn Do not use the TLS NPN extension to advertise HTTP/1.1.
2468
2469 sslcontext= SSL session ID context identifier.
2470
2471 Other Options:
2472
2473 connection-auth[=on|off]
2474 use connection-auth=off to tell Squid to prevent
2475 forwarding Microsoft connection oriented authentication
2476 (NTLM, Negotiate and Kerberos)
2477
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
2494 name= Specifies a internal name for the port. Defaults to
2495 the port specification (port or addr:port)
2496
2497 tcpkeepalive[=idle,interval,timeout]
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
2501 timeout the time before giving up.
2502
2503 require-proxy-header
2504 Require PROXY protocol version 1 or 2 connections.
2505 The proxy_protocol_access is required to permit
2506 downstream proxies which can be trusted.
2507
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
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
2523CONFIG_START
2524
2525# Squid normally listens to port 3128
2526http_port @DEFAULT_HTTP_PORT@
2527CONFIG_END
2528DOC_END
2529
2530NAME: https_port
2531IFDEF: USE_GNUTLS||USE_OPENSSL
2532TYPE: PortCfg
2533DEFAULT: none
2534LOC: HttpPortList
2535DOC_START
2536 Usage: [ip:]port [mode] tls-cert=certificate.pem [options]
2537
2538 The socket address where Squid will listen for client requests made
2539 over TLS or SSL connections. Commonly referred to as HTTPS.
2540
2541 This is most useful for situations where you are running squid in
2542 accelerator mode and you want to do the TLS work at the accelerator
2543 level.
2544
2545 You may specify multiple socket addresses on multiple lines,
2546 each with their own certificate and/or options.
2547
2548 The tls-cert= option is mandatory on HTTPS ports.
2549
2550 See http_port for a list of modes and options.
2551DOC_END
2552
2553NAME: ftp_port
2554TYPE: PortCfg
2555DEFAULT: none
2556LOC: FtpPortList
2557DOC_START
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
2584 intercept Same as http_port intercept. The FTP origin address is
2585 determined based on the intended destination of the
2586 intercepted connection.
2587
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
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
2598 name=token Specifies an internal name for the port. Defaults to
2599 the port address. Usable with myportname ACL.
2600
2601 ftp-track-dirs
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
2605 directory. Tracking is disabled by default.
2606
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
2613 Other http_port modes and options that are not specific to HTTP and
2614 HTTPS may also work.
2615DOC_END
2616
2617NAME: tcp_outgoing_tos tcp_outgoing_ds tcp_outgoing_dscp
2618TYPE: acl_tos
2619DEFAULT: none
2620LOC: Ip::Qos::TheConfig.tosToServer
2621DOC_START
2622 Allows you to select a TOS/Diffserv value for packets outgoing
2623 on the server side, based on an ACL.
2624
2625 tcp_outgoing_tos ds-field [!]aclname ...
2626
2627 Example where normal_service_net uses the TOS value 0x00
2628 and good_service_net uses 0x20
2629
2630 acl normal_service_net src 10.0.0.0/24
2631 acl good_service_net src 10.0.1.0/24
2632 tcp_outgoing_tos 0x00 normal_service_net
2633 tcp_outgoing_tos 0x20 good_service_net
2634
2635 TOS/DSCP values really only have local significance - so you should
2636 know what you're specifying. For more information, see RFC2474,
2637 RFC2475, and RFC3260.
2638
2639 The TOS/DSCP byte must be exactly that - a octet value 0 - 255, or
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.
2644
2645 Processing proceeds in the order specified, and stops at first fully
2646 matching line.
2647
2648 Only fast ACLs are supported.
2649DOC_END
2650
2651NAME: clientside_tos
2652TYPE: acl_tos
2653DEFAULT: none
2654LOC: Ip::Qos::TheConfig.tosToClient
2655DOC_START
2656 Allows you to select a TOS/DSCP value for packets being transmitted
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.
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
2678 This clause only supports fast acl types.
2679 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
2680DOC_END
2681
2682NAME: tcp_outgoing_mark
2683TYPE: acl_nfmark
2684IFDEF: SO_MARK&&USE_LIBCAP
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
2700
2701 Only fast ACLs are supported.
2702DOC_END
2703
2704NAME: mark_client_packet clientside_mark
2705TYPE: acl_nfmark
2706IFDEF: SO_MARK&&USE_LIBCAP
2707DEFAULT: none
2708LOC: Ip::Qos::TheConfig.nfmarkToClient
2709DOC_START
2710 Allows you to apply a Netfilter MARK value to packets being transmitted
2711 on the client-side, based on an ACL.
2712
2713 mark_client_packet mark-value [!]aclname ...
2714
2715 Example where normal_service_net uses the MARK value 0x00
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
2720 mark_client_packet 0x00 normal_service_net
2721 mark_client_packet 0x20 good_service_net
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.
2725
2726 This clause only supports fast acl types.
2727 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
2728DOC_END
2729
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
2766NAME: qos_flows
2767TYPE: QosConfig
2768IFDEF: USE_QOS_TOS
2769DEFAULT: none
2770LOC: Ip::Qos::TheConfig
2771DOC_START
2772 Allows you to select a TOS/DSCP value to mark outgoing
2773 connections to the client, based on where the reply was sourced.
2774 For platforms using netfilter, allows you to set a netfilter mark
2775 value instead of, or in addition to, a TOS value.
2776
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
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.
2789
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.
2794
2795 Mark values can be any unsigned 32-bit integer value.
2796
2797 This setting is configured by setting the following values:
2798
2799 tos|mark Whether to set TOS or netfilter mark values
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
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.
2811
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.
2817
2818 disable-preserve-miss
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).
2826
2827 miss-mask=0xFF
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).
2838
2839DOC_END
2840
2841NAME: tcp_outgoing_address
2842TYPE: acl_address
2843DEFAULT: none
2844DEFAULT_DOC: Address selection is performed by the operating system.
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.
2850
2851 tcp_outgoing_address ipaddr [[!]aclname] ...
2852
2853 For example;
2854 Forwarding clients with dedicated IPs for certain subnets.
2855
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
2867
2868 Processing proceeds in the order specified, and stops at first fully
2869 matching line.
2870
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
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.
2880
2881 NOTE: The use of this directive to set a local IP on outgoing TCP links
2882 is incompatible with using TPROXY to set client IP out outbound TCP links.
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.
2885
2886 This clause only supports fast acl types.
2887 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
2888DOC_END
2889
2890NAME: host_verify_strict
2891TYPE: onoff
2892DEFAULT: off
2893LOC: Config.onoff.hostStrictVerify
2894DOC_START
2895 Regardless of this option setting, when dealing with intercepted
2896 traffic, Squid always verifies that the destination IP address matches
2897 the Host header domain or IP (called 'authority form URL').
2898
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".
2902
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.
2906
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:
2912
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.
2917
2918 * Port numbers must be identical, but if a port is missing
2919 the scheme-default port is assumed.
2920
2921
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.
2925
2926 * Forward-proxy traffic is not checked at all.
2927
2928 * Reverse-proxy traffic is not checked at all.
2929
2930 * Intercepted traffic which passes verification is handled
2931 according to client_dst_passthru.
2932
2933 * Intercepted requests which fail verification are sent
2934 to the client original destination instead of DIRECT.
2935 This overrides 'client_dst_passthru off'.
2936
2937 For now suspicious intercepted CONNECT requests are always
2938 responded to with an HTTP 409 (Conflict) error page.
2939
2940
2941 SECURITY NOTE:
2942
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.
2947
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.
2953
2954DOC_END
2955
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.
2964
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.
2969
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.
2973
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.
2977
2978 see host_verify_strict for details on the verification process.
2979DOC_END
2980
2981COMMENT_START
2982 TLS OPTIONS
2983 -----------------------------------------------------------------------------
2984COMMENT_END
2985
2986NAME: tls_outgoing_options
2987IFDEF: USE_GNUTLS||USE_OPENSSL
2988TYPE: securePeerOptions
2989DEFAULT: min-version=1.0
2990LOC: Security::ProxyOutgoingConfig
2991DOC_START
2992 disable Do not support https:// URLs.
2993
2994 cert=/path/to/client/certificate
2995 A client X.509 certificate to use when connecting.
2996
2997 key=/path/to/client/private_key
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.
3003
3004 cipher=... The list of valid TLS ciphers to use.
3005
3006 min-version=1.N
3007 The minimum TLS protocol version to permit.
3008 To control SSLv3 use the options= parameter.
3009 Supported Values: 1.0 (default), 1.1, 1.2, 1.3
3010
3011 options=... Specify various TLS/SSL implementation options.
3012
3013 OpenSSL options most important are:
3014
3015 NO_SSLv3 Disallow the use of SSLv3
3016
3017 SINGLE_DH_USE
3018 Always create a new key when using
3019 temporary/ephemeral DH key exchanges
3020
3021 NO_TICKET
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
3027 ALL Enable various bug workarounds
3028 suggested as "harmless" by OpenSSL
3029 Be warned that this reduces SSL/TLS
3030 strength to some attacks.
3031
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
3047
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
3052 use when verifying the peer certificate.
3053 Requires OpenSSL or LibreSSL.
3054
3055 crlfile=... A certificate revocation list file to use when
3056 verifying the peer certificate.
3057
3058 flags=... Specify various flags modifying the TLS implementation:
3059
3060 DONT_VERIFY_PEER
3061 Accept certificates even if they fail to
3062 verify.
3063 DONT_VERIFY_DOMAIN
3064 Don't verify the peer certificate
3065 matches the server name
3066
3067 default-ca[=off]
3068 Whether to use the system Trusted CAs. Default is ON.
3069
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
3076COMMENT_START
3077 SSL OPTIONS
3078 -----------------------------------------------------------------------------
3079COMMENT_END
3080
3081NAME: ssl_unclean_shutdown
3082IFDEF: USE_OPENSSL
3083TYPE: onoff
3084DEFAULT: off
3085LOC: Config.SSL.unclean_shutdown
3086DOC_START
3087 Some browsers (especially MSIE) bugs out on SSL shutdown
3088 messages.
3089DOC_END
3090
3091NAME: ssl_engine
3092IFDEF: USE_OPENSSL
3093TYPE: string
3094LOC: Config.SSL.ssl_engine
3095DEFAULT: none
3096DOC_START
3097 The OpenSSL engine to use. You will need to set this if you
3098 would like to use hardware SSL acceleration for example.
3099
3100 Not supported in builds with OpenSSL 3.0 or newer.
3101DOC_END
3102
3103NAME: sslproxy_session_ttl
3104IFDEF: USE_OPENSSL
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
3113IFDEF: USE_OPENSSL
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
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.
3139DOC_END
3140
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
3159NAME: ssl_bump
3160IFDEF: USE_OPENSSL
3161TYPE: sslproxy_ssl_bump
3162LOC: Config.accessList.ssl_bump
3163DEFAULT_DOC: Become a TCP tunnel without decrypting proxied traffic.
3164DEFAULT: none
3165DOC_START
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,
3171 depending on the first matching bumping "action".
3172
3173 ssl_bump <action> [!]acl ...
3174
3175 The following bumping actions are currently supported:
3176
3177 splice
3178 Become a TCP tunnel without decrypting proxied traffic.
3179 This is the default action.
3180
3181 bump
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.
3187
3188 peek
3189 Receive client (step SslBump1) or server (step SslBump2)
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.
3193
3194 stare
3195 Receive client (step SslBump1) or server (step SslBump2)
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.
3199
3200 terminate
3201 Close client and server connections.
3202
3203 Backward compatibility actions available at step SslBump1:
3204
3205 client-first
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.
3210
3211 server-first
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.
3217
3218 peek-and-splice
3219 Decide whether to bump or splice the connection based on
3220 client-to-squid and server-to-squid SSL hello messages.
3221 XXX: Remove.
3222
3223 none
3224 Same as the "splice" action.
3225
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.
3230 See the at_step ACL for a list of the supported SslBump steps.
3231
3232 This clause supports both fast and slow acl types.
3233 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
3234
3235 See also: http_port ssl-bump, https_port ssl-bump, and acl at_step.
3236
3237
3238 # Example: Bump all TLS connections except those originating from
3239 # localhost or those going to example.com.
3240
3241 acl broken_sites ssl::server_name .example.com
3242 ssl_bump splice localhost
3243 ssl_bump splice broken_sites
3244 ssl_bump bump all
3245DOC_END
3246
3247NAME: sslproxy_cert_error
3248IFDEF: USE_OPENSSL
3249DEFAULT: none
3250DEFAULT_DOC: Server certificate errors terminate the transaction.
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
3257 when talking to servers for example.com. All other
3258 validation errors will result in ERR_SECURE_CONNECT_FAIL error.
3259
3260 acl BrokenButTrustedServers dstdomain example.com
3261 sslproxy_cert_error allow BrokenButTrustedServers
3262 sslproxy_cert_error deny all
3263
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
3267
3268 Without this option, all server certificate validation errors
3269 terminate the transaction to protect Squid and the client.
3270
3271 SQUID_X509_V_ERR_INFINITE_VALIDATION error cannot be bypassed
3272 but should not happen unless your OpenSSL library is buggy.
3273
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.
3278
3279 See also: sslproxy_flags and DONT_VERIFY_PEER.
3280DOC_END
3281
3282NAME: sslproxy_cert_sign
3283IFDEF: USE_OPENSSL
3284DEFAULT: none
3285POSTSCRIPTUM: signUntrusted ssl::certUntrusted
3286POSTSCRIPTUM: signSelf ssl::certSelfSigned
3287POSTSCRIPTUM: signTrusted all
3288TYPE: sslproxy_cert_sign
3289LOC: Config.ssl_client.cert_sign
3290DOC_START
3291
3292 sslproxy_cert_sign <signing algorithm> acl ...
3293
3294 The following certificate signing algorithms are supported:
3295
3296 signTrusted
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.
3300
3301 signUntrusted
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).
3305
3306 signSelf
3307 Sign using a self-signed certificate with the right CN to
3308 generate a X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT error in the
3309 browser. This is the default for self-signed origin server
3310 certificates (see ssl::certSelfSigned).
3311
3312 This clause only supports fast acl types.
3313
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.
3319
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.
3326DOC_END
3327
3328NAME: sslproxy_cert_adapt
3329IFDEF: USE_OPENSSL
3330DEFAULT: none
3331TYPE: sslproxy_cert_adapt
3332LOC: Config.ssl_client.cert_adapt
3333DOC_START
3334
3335 sslproxy_cert_adapt <adaptation algorithm> acl ...
3336
3337 The following certificate adaptation algorithms are supported:
3338
3339 setValidAfter
3340 Sets the "Not After" property to the "Not After" property of
3341 the CA certificate used to sign generated certificates.
3342
3343 setValidBefore
3344 Sets the "Not Before" property to the "Not Before" property of
3345 the CA certificate used to sign generated certificates.
3346
3347 setCommonName or setCommonName{CN}
3348 Sets Subject.CN property to the host name specified as a
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.
3353
3354 This clause only supports fast acl types.
3355
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.
3362
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.
3369DOC_END
3370
3371NAME: sslpassword_program
3372IFDEF: USE_OPENSSL
3373DEFAULT: none
3374LOC: Config.Program.ssl_password
3375TYPE: string
3376DOC_START
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.
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.
3385DOC_END
3386
3387COMMENT_START
3388 OPTIONS RELATING TO EXTERNAL SSL_CRTD
3389 -----------------------------------------------------------------------------
3390COMMENT_END
3391
3392NAME: sslcrtd_program
3393TYPE: eol
3394IFDEF: USE_SSL_CRTD
3395DEFAULT: @DEFAULT_SSL_CRTD@ -s @DEFAULT_SSL_DB_DIR@ -M 4MB
3396LOC: Ssl::TheConfig.ssl_crtd
3397DOC_START
3398 Specify the location and options of the executable for certificate
3399 generator.
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
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
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
3424 The startup= and idle= options allow some measure of skew in your
3425 tuning.
3426
3427 startup=N
3428
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.
3432
3433 Starting too few children temporary slows Squid under load while it
3434 tries to spawn enough additional processes to cope with traffic.
3435
3436 idle=N
3437
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.
3442
3443 queue-size=N
3444
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.
3450
3451 You must have at least one ssl_crtd process.
3452DOC_END
3453
3454NAME: sslcrtvalidator_program
3455TYPE: eol
3456IFDEF: USE_OPENSSL
3457DEFAULT: none
3458LOC: Ssl::TheConfig.ssl_crt_validator
3459DOC_START
3460 Specify the location and options of the executable for ssl_crt_validator
3461 process.
3462
3463 Usage: sslcrtvalidator_program [ttl=...] [cache=n] path ...
3464
3465 Options:
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.
3483DOC_END
3484
3485NAME: sslcrtvalidator_children
3486TYPE: HelperChildConfig
3487IFDEF: USE_OPENSSL
3488DEFAULT: 32 startup=5 idle=1 concurrency=1
3489LOC: Ssl::TheConfig.ssl_crt_validator_Children
3490DOC_START
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]...
3498
3499 The startup= and idle= options allow some measure of skew in your
3500 tuning.
3501
3502 startup=N
3503
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.
3507
3508 Starting too few children temporary slows Squid under load while it
3509 tries to spawn enough additional processes to cope with traffic.
3510
3511 idle=N
3512
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.
3517
3518 concurrency=
3519
3520 The number of requests each certificate validator helper can handle in
3521 parallel. A value of 0 indicates the certificate validator does not
3522 support concurrency. Defaults to 1.
3523
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.
3529
3530 queue-size=N
3531
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.
3537
3538 You must have at least one ssl_crt_validator process.
3539DOC_END
3540
3541COMMENT_START
3542 OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
3543 -----------------------------------------------------------------------------
3544COMMENT_END
3545
3546NAME: cache_peer
3547TYPE: peer
3548DEFAULT: none
3549LOC: Config.peers
3550DOC_START
3551 To specify other caches in a hierarchy, use the format:
3552
3553 cache_peer hostname type http-port icp-port [options]
3554
3555 For example,
3556
3557 # proxy icp
3558 # hostname type port port options
3559 # -------------------- -------- ----- ----- -----------
3560 cache_peer parent.foo.net parent 3128 3130 default
3561 cache_peer sib1.foo.net sibling 3128 3130 proxy-only
3562 cache_peer sib2.foo.net sibling 3128 3130 proxy-only
3563 cache_peer example.com parent 80 0 default
3564 cache_peer cdn.example.com sibling 3128 0
3565
3566 type: either 'parent', 'sibling', or 'multicast'.
3567
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
3571
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.
3575
3576
3577 ==== ICP OPTIONS ====
3578
3579 You MUST also set icp_port and icp_access explicitly when using these options.
3580 The defaults will prevent peer traffic using ICP.
3581
3582
3583 no-query Disable ICP queries to this neighbor.
3584
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.
3589
3590 closest-only Indicates that, for ICP_OP_MISS replies, we'll only forward
3591 CLOSEST_PARENT_MISSes and never FIRST_PARENT_MISSes.
3592
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.
3597
3598
3599 ==== HTCP OPTIONS ====
3600
3601 You MUST also set htcp_port and htcp_access explicitly when using these options.
3602 The defaults will prevent peer traffic using HTCP.
3603
3604
3605 htcp Send HTCP, instead of ICP, queries to the neighbor.
3606 You probably also want to set the "icp-port" to 4827
3607 instead of 3130. This directive accepts a comma separated
3608 list of options described below.
3609
3610 htcp=oldsquid Send HTCP to old Squid versions (2.5 or earlier).
3611
3612 htcp=no-clr Send HTCP to the neighbor but without
3613 sending any CLR requests. This cannot be used with
3614 only-clr.
3615
3616 htcp=only-clr Send HTCP to the neighbor but ONLY CLR requests.
3617 This cannot be used with no-clr.
3618
3619 htcp=no-purge-clr
3620 Send HTCP to the neighbor including CLRs but only when
3621 they do not result from PURGE requests.
3622
3623 htcp=forward-clr
3624 Forward any HTCP CLR requests this proxy receives to the peer.
3625
3626
3627 ==== PEER SELECTION METHODS ====
3628
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.
3631
3632
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.
3636
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.
3640
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.
3647
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.
3651
3652 userhash Load-balance parents based on the client proxy_auth or ident username.
3653
3654 sourcehash Load-balance parents based on the client source IP.
3655
3656 multicast-siblings
3657 To be used only for cache peers of type "multicast".
3658 ALL members of this multicast group have "sibling"
3659 relationship with it, not "parent". This is to a multicast
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.
3664
3665
3666 ==== PEER SELECTION OPTIONS ====
3667
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.
3674
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.
3680
3681 ttl=N Specify a TTL to use when sending multicast ICP queries
3682 to this address.
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.
3687
3688 no-delay To prevent access to this neighbor from influencing the
3689 delay pools.
3690
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.
3694
3695
3696 ==== CARP OPTIONS ====
3697
3698 carp-key=key-specification
3699 use a different key than the full URL to hash against the peer.
3700 the key-specification is a comma-separated list of the keywords
3701 scheme, host, port, path, params
3702 Order is not important.
3703
3704 ==== ACCELERATOR / REVERSE-PROXY OPTIONS ====
3705
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.
3709
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
3715
3716 no-digest Disable request of cache digests.
3717
3718 no-netdb-exchange
3719 Disables requesting ICMP RTT database (NetDB).
3720
3721
3722 ==== AUTHENTICATION OPTIONS ====
3723
3724 login=user:password
3725 If this is a personal/workgroup proxy and your parent
3726 requires proxy authentication.
3727
3728 Note: The string can include URL escapes (i.e. %20 for
3729 spaces). This also means % must be written as %%.
3730
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.
3736
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.
3740
3741 login=PASS Send login details received from client to this peer.
3742 Authentication is not required by this option.
3743
3744 If there are no client-provided authentication headers
3745 to pass on, but username and password are available
3746 from an external ACL user= and password= result tags
3747 they may be sent instead.
3748
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
3754
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.
3764
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
3769 the environment variable KRB5_KTNAME will be used.
3770
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.
3774
3775 login=NEGOTIATE:principal_name
3776 If this is a personal/workgroup proxy and your parent
3777 requires a secure proxy authentication.
3778 The principal principal_name from the default keytab or
3779 defined by the environment variable KRB5_KTNAME will be
3780 used.
3781
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.
3785
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.
3792
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.
3798
3799
3800 ==== SSL / HTTPS / TLS OPTIONS ====
3801
3802 tls Encrypt connections to this peer with TLS.
3803
3804 sslcert=/path/to/ssl/certificate
3805 A client X.509 certificate to use when connecting to
3806 this peer.
3807
3808 sslkey=/path/to/ssl/key
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.
3814
3815 sslcipher=... The list of valid SSL ciphers to use when connecting
3816 to this peer.
3817
3818 tls-min-version=1.N
3819 The minimum TLS protocol version to permit. To control
3820 SSLv3 use the tls-options= parameter.
3821 Supported Values: 1.0 (default), 1.1, 1.2
3822
3823 tls-options=... Specify various TLS implementation options.
3824
3825 OpenSSL options most important are:
3826
3827 NO_SSLv3 Disallow the use of SSLv3
3828
3829 SINGLE_DH_USE
3830 Always create a new key when using
3831 temporary/ephemeral DH key exchanges
3832
3833 NO_TICKET
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
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.
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
3859 tls-cafile= PEM file containing CA certificates to use when verifying
3860 the peer certificate. May be repeated to load multiple files.
3861
3862 sslcapath=... A directory containing additional CA certificates to
3863 use when verifying the peer certificate.
3864 Requires OpenSSL or LibreSSL.
3865
3866 sslcrlfile=... A certificate revocation list file to use when
3867 verifying the peer certificate.
3868
3869 sslflags=... Specify various flags modifying the SSL implementation:
3870
3871 DONT_VERIFY_PEER
3872 Accept certificates even if they fail to
3873 verify.
3874
3875 DONT_VERIFY_DOMAIN
3876 Don't verify the peer certificate
3877 matches the server name
3878
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.
3883
3884 front-end-https[=off|on|auto]
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.
3890
3891 tls-default-ca[=off]
3892 Whether to use the system Trusted CAs. Default is ON.
3893
3894 tls-no-npn Do not use the TLS NPN extension to advertise HTTP/1.1.
3895
3896 ==== GENERAL OPTIONS ====
3897
3898 connect-timeout=N
3899 A peer-specific connect timeout.
3900 Also see the peer_connect_timeout directive.
3901
3902 connect-fail-limit=N
3903 How many times connecting to a peer must fail before
3904 it is marked as down. Standby connection failures
3905 count towards this limit. Default is 10.
3906
3907 allow-miss Disable Squid's use of only-if-cached when forwarding
3908 requests to siblings. This is primarily useful when
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
3915
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.
3920
3921 A peer exceeding the limit is not used for new
3922 requests unless a standby connection is available.
3923
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.
3930
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).
3936
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.
3944
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.
3951
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.
3960
3961 name=xxx Unique name for the peer.
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
3971 Can be used by outgoing access controls through the
3972 peername ACL type.
3973
3974 The name value preserves configured spelling, but name uniqueness
3975 checks and name-based search are case-insensitive.
3976
3977 no-tproxy Do not use the client-spoof TPROXY support when forwarding
3978 requests to this peer. Use normal address selection instead.
3979 This overrides the spoof_client_ip ACL.
3980
3981 proxy-only objects fetched from the peer will not be stored locally.
3982
3983DOC_END
3984
3985NAME: cache_peer_access
3986TYPE: peer_access
3987DEFAULT: none
3988DEFAULT_DOC: No peer usage restrictions.
3989LOC: none
3990DOC_START
3991 Restricts usage of cache_peer proxies.
3992
3993 Usage:
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.
4024
4025DOC_END
4026
4027NAME: neighbor_type_domain
4028TYPE: hostdomaintype
4029DEFAULT: none
4030DEFAULT_DOC: The peer type from cache_peer directive is used for all requests to that peer.
4031LOC: none
4032DOC_START
4033 Modify the cache_peer neighbor type when passing requests
4034 about specific domains to the peer.
4035
4036 Usage:
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.
4042
4043 For example:
4044 cache_peer foo.example.com parent 3128 3130
4045 neighbor_type_domain foo.example.com sibling .au .de
4046
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.
4049DOC_END
4050
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.
4063
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
4072
4073NAME: forward_max_tries
4074DEFAULT: 25
4075TYPE: int
4076LOC: Config.forward_max_tries
4077DOC_START
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
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)
4087
4088 See also: forward_timeout, connect_retries, and %request_attempts.
4089DOC_END
4090
4091COMMENT_START
4092 MEMORY CACHE OPTIONS
4093 -----------------------------------------------------------------------------
4094COMMENT_END
4095
4096NAME: cache_mem
4097COMMENT: (bytes)
4098TYPE: b_size_t
4099DEFAULT: 256 MB
4100LOC: Config.memMaxSize
4101DOC_START
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.
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.
4136DOC_END
4137
4138NAME: maximum_object_size_in_memory
4139COMMENT: (bytes)
4140TYPE: b_size_t
4141DEFAULT: 512 KB
4142LOC: Config.Store.maxInMemObjSize
4143DOC_START
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.
4148DOC_END
4149
4150NAME: memory_cache_shared
4151COMMENT: on|off
4152TYPE: YesNoNone
4153LOC: Config.memShared
4154DEFAULT: none
4155DEFAULT_DOC: "on" where supported if doing memory caching with multiple SMP workers.
4156DOC_START
4157 Controls whether the memory cache is shared among SMP workers.
4158
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
4165 By default, the memory cache is shared if and only if all of the
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.
4174DOC_END
4175
4176NAME: memory_cache_mode
4177TYPE: memcachemode
4178LOC: Config
4179DEFAULT: always
4180DEFAULT_DOC: Keep the most recently fetched objects in memory
4181DOC_START
4182 Controls which objects to keep in the memory cache (cache_mem)
4183
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
4191DOC_END
4192
4193NAME: memory_replacement_policy
4194TYPE: removalpolicy
4195LOC: Config.memPolicy
4196DEFAULT: lru
4197DOC_START
4198 The memory replacement policy parameter determines which
4199 objects are purged from memory when memory space is needed.
4200
4201 See cache_replacement_policy for details on algorithms.
4202DOC_END
4203
4204COMMENT_START
4205 DISK CACHE OPTIONS
4206 -----------------------------------------------------------------------------
4207COMMENT_END
4208
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.
4216
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
4221
4222 Applies to any cache_dir lines listed below this directive.
4223
4224 The LRU policies keeps recently referenced objects.
4225
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.
4230
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.
4235
4236 Both policies utilize a dynamic aging mechanism that prevents
4237 cache pollution that can otherwise occur with frequency-based
4238 replacement policies.
4239
4240 NOTE: if using the LFUDA replacement policy you should increase
4241 the value of maximum_object_size above its default of 4 MB to
4242 to maximize the potential byte hit rate improvement of LFUDA.
4243
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.
4247DOC_END
4248
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
4267 Set the default value for max-size parameter on any cache_dir.
4268 The value is specified in bytes, and the default is 4 MB.
4269
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).
4273
4274 If you wish to increase hit ratio more than you want to
4275 save bandwidth you should leave this low.
4276
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
4282NAME: cache_dir
4283TYPE: cachedir
4284DEFAULT: none
4285DEFAULT_DOC: No disk cache. Store cache objects only in memory.
4286LOC: Config.cacheSwap
4287DOC_START
4288 Format:
4289 cache_dir Type Directory-Name Fs-specific-data [options]
4290
4291 You can specify multiple cache_dir lines to spread the
4292 cache among different disk partitions.
4293
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.
4297
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.
4303
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
4308
4309 ==== The ufs store type ====
4310
4311 "ufs" is the old well-known Squid storage format that has always
4312 been there.
4313
4314 Usage:
4315 cache_dir ufs Directory-Name Mbytes L1 L2 [options]
4316
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.
4322
4323 'L1' is the number of first-level subdirectories which
4324 will be created under the 'Directory'. The default is 16.
4325
4326 'L2' is the number of second-level subdirectories which
4327 will be created under each first-level directory. The default
4328 is 256.
4329
4330
4331 ==== The aufs store type ====
4332
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.
4336
4337 Usage:
4338 cache_dir aufs Directory-Name Mbytes L1 L2 [options]
4339
4340 see argument descriptions under ufs above
4341
4342
4343 ==== The diskd store type ====
4344
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.
4348
4349 Usage:
4350 cache_dir diskd Directory-Name Mbytes L1 L2 [options] [Q1=n] [Q2=n]
4351
4352 see argument descriptions under ufs above
4353
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
4357
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
4361
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.
4367
4368
4369 ==== The rock store type ====
4370
4371 Usage:
4372 cache_dir rock Directory-Name Mbytes [options]
4373
4374 The Rock Store type is a database-style storage. All cached
4375 entries are stored in a "database" file, using fixed-size slots.
4376 A single entry occupies one or more slots.
4377
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
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
4392 max-swap-rate=swaps/sec: Artificially limits disk access using
4393 the specified I/O rate limit. Swap out requests that
4394 would cause the average I/O rate to exceed the limit are
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
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
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
4417
4418 ==== COMMON OPTIONS ====
4419
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
4426 (e.g. Rock).
4427 Defaults to 0.
4428
4429 max-size=n the maximum object size in bytes this cache_dir
4430 supports.
4431 The value in maximum_object_size directive sets
4432 the default unless more specific details are
4433 available (ie a small store capacity).
4434
4435 Note: To make optimal use of the max-size limits you should order
4436 the cache_dir lines with the smallest max-size value first.
4437
4438CONFIG_START
4439
4440# Uncomment and adjust the following to add a disk cache directory.
4441#cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
4442CONFIG_END
4443DOC_END
4444
4445NAME: store_dir_select_algorithm
4446TYPE: string
4447LOC: Config.store_dir_select_algorithm
4448DEFAULT: least-load
4449DOC_START
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
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
4504DOC_END
4505
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
4545NAME: max_open_disk_fds
4546TYPE: int
4547LOC: Config.max_open_disk_fds
4548DEFAULT: 0
4549DEFAULT_DOC: no limit
4550DOC_START
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.
4556DOC_END
4557
4558NAME: cache_swap_low
4559COMMENT: (percent, 0-100)
4560TYPE: int
4561DEFAULT: 90
4562LOC: Config.Swap.lowWaterMark
4563DOC_START
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
4572 by cache_swap_high object eviction becomes more aggressive.
4573
4574 The value difference in percentages between low- and high-water
4575 marks represent an eviction rate of 300 objects per second and
4576 the rate continues to scale in aggressiveness by multiples of
4577 this above the high-water mark.
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
4583 See also cache_swap_high and cache_replacement_policy
4584DOC_END
4585
4586NAME: cache_swap_high
4587COMMENT: (percent, 0-100)
4588TYPE: int
4589DEFAULT: 95
4590LOC: Config.Swap.highWaterMark
4591DOC_START
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
4600 eviction becomes more aggressive.
4601
4602 The value difference in percentages between low- and high-water
4603 marks represent an eviction rate of 300 objects per second and
4604 the rate continues to scale in aggressiveness by multiples of
4605 this above the high-water mark.
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.
4610
4611 See also cache_swap_low and cache_replacement_policy
4612DOC_END
4613
4614COMMENT_START
4615 LOGFILE OPTIONS
4616 -----------------------------------------------------------------------------
4617COMMENT_END
4618
4619NAME: logformat
4620TYPE: logformat
4621LOC: Log::TheConfig
4622DEFAULT: none
4623DEFAULT_DOC: The format definitions squid, common, combined, referrer, useragent are built in.
4624DOC_START
4625 Usage:
4626
4627 logformat <name> <format specification>
4628
4629 Defines an access log format.
4630
4631 The <format specification> is a string with embedded % format codes
4632
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.
4636
4637 % [encoding] [-] [[0]width] [{arg}] formatcode [{arg}]
4638
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.
4669
4670 - left aligned
4671
4672 width minimum and/or maximum field width:
4673 [width_min][.width_max]
4674 When minimum starts with 0, the field is zero-padded.
4675 String values exceeding maximum width are truncated.
4676
4677 {arg} argument such as header name etc. This field may be
4678 placed before or after the token, but not both at once.
4679
4680 Format codes:
4681
4682 % a literal % character
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.
4687 note The annotation specified by the argument. Also
4688 logs the adaptation meta headers set by the
4689 adaptation_meta configuration parameter.
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.
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.
4711
4712 Connection related format codes:
4713
4714 >a Client source IP address
4715 >A Client FQDN
4716 >p Client source port
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
4720 >qos Client connection TOS/DSCP value set by Squid
4721 >nfmark Client connection netfilter packet MARK set by Squid
4722
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
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
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
4742 <la Local IP address of the last server or peer connection
4743 <lp Local port number of the last server or peer connection
4744 <qos Server connection TOS/DSCP value set by Squid
4745 <nfmark Server connection netfilter packet MARK set by Squid
4746
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
4778 Time related format codes:
4779
4780 ts Seconds since epoch
4781 tu subsecond time (milliseconds)
4782 tl Local time. Optional strftime format argument
4783 default %d/%b/%Y:%H:%M:%S %z
4784 tg GMT time. Optional strftime format argument
4785 default %d/%b/%Y:%H:%M:%S %z
4786 tr Response time (milliseconds)
4787 dt Total time spent making DNS lookups (milliseconds)
4788 tS Approximate master transaction start time in
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).
4798
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
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
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
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 ".
4832
4833 HTTP related format codes:
4834
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
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
4874 [http::]<ru Request URL sent to server or peer
4875 [http::]>rs Request URL scheme from client
4876 [http::]<rs Request URL scheme sent to server or peer
4877 [http::]>rd Request URL domain from client
4878 [http::]<rd Request URL domain sent to server or peer
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
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
4888 [http::]>h Original received request header.
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.
4897 Optional header name argument as for >h
4898
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
4904 [http::]<h Reply header. Optional header name argument
4905 as for >h
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
4923 [http::]<bs Number of HTTP-equivalent message body bytes
4924 received from the next hop, excluding chunked
4925 transfer encoding and control messages.
4926 Generated FTP listings are treated as
4927 received bodies.
4928
4929 TIMING
4930
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.
4934 [http::]<tt Total time in milliseconds. The timer
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
4939 Squid handling related format codes:
4940
4941 Ss Squid request status (TCP_MISS etc)
4942 Sh Squid hierarchy status (DEFAULT_PARENT etc)
4943
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
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
4961 corresponding SslBump mode ("splice", "bump",
4962 "peek", "stare", "terminate", "server-first"
4963 or "client-first"). See the ssl_bump option
4964 for more information about these modes.
4965
4966 A "none" token is logged for requests that
4967 triggered "ssl_bump" ACL evaluation matching
4968 a "none" rule.
4969
4970 In all other cases, a single dash ("-") is
4971 logged.
4972
4973 ssl::>sni SSL client SNI sent to Squid.
4974
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
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
4995 ssl::<cert_issuer
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
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
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
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
5061 If ICAP is enabled, the following code becomes available (as
5062 well as ICAP log codes documented with the icap_log option):
5063
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.
5087
5088 If adaptation is enabled the following codes become available:
5089
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.
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
5105 replacement (next) transaction. Lifetimes of individually
5106 listed adaptation transactions may overlap.
5107 See also: %icap::tt and %adapt::all_trs.
5108
5109 adapt::all_trs All adaptation transaction response times.
5110 Same as %adapt::sum_trs but response times of
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
5118
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
5147 The default formats available (which do not need re-defining) are:
5148
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
5152logformat referrer %ts.%03tu %>a %{Referer}>h %ru
5153logformat useragent %>a [%tl] "%{User-Agent}>h"
5154
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.
5161
5162DOC_END
5163
5164NAME: access_log cache_access_log
5165TYPE: access_log
5166LOC: Config.Log.accesslogs
5167DEFAULT_IF_NONE: daemon:@DEFAULT_ACCESS_LOG@ squid
5168DOC_START
5169 Configures whether and how Squid logs HTTP and ICP transactions.
5170 If access logging is enabled, a single line is logged for every
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:
5177 access_log <module>:<place> [<logformat name> [acl acl ...]]
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.
5182
5183 Will log to the specified module:place using the specified format (which
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).
5186 If no acl is specified, all requests will be logged to this destination.
5187
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
5206 kills the affected worker. The drop action
5207 support has not been tested for modules other
5208 than tcp.
5209
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
5219 ===== Modules Currently available =====
5220
5221 none Do not log any requests matching these ACL.
5222 Do not specify Place or logformat name.
5223
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.
5227
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.
5231
5232 log_file_daemon Place: the file name and path to be written.
5233
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
5237
5238 where facility could be any of:
5239 authpriv, daemon, local0 ... local7 or user.
5240
5241 And priority could be any of:
5242 err, warning, notice, info, debug.
5243
5244 udp To send each log line as text data to a UDP receiver.
5245 Place: The destination host name or IP and port.
5246 Place Format: //host:port
5247
5248 tcp To send each log line as text data to a TCP receiver.
5249 Lines may be accumulated before sending (see buffered_logs).
5250 Place: The destination host name or IP and port.
5251 Place Format: //host:port
5252
5253 Default:
5254 access_log daemon:@DEFAULT_ACCESS_LOG@ squid
5255DOC_END
5256
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 ...]]
5269
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
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.
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
5318 icap::rm ICAP request method (REQMOD, RESPMOD, or
5319 OPTIONS). Similar to existing rm.
5320
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).
5324
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).
5328
5329 icap::<bs The size of the ICAP response body received from the
5330 ICAP server, excluding chunking metadata (if any).
5331
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
5360logformat icap_squid %ts.%03tu %6icap::tr %>A %icap::to/%03icap::Hs %icap::<st %icap::rm %icap::ru %un -/%icap::<A -
5361
5362 See also: logformat and %adapt::<last_h
5363DOC_END
5364
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.
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
5377 O\n - reopen file
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.
5383DOC_END
5384
5385NAME: stats_collection
5386TYPE: acl_access
5387LOC: Config.accessList.stats_collection
5388DEFAULT: none
5389DEFAULT_DOC: Allow logging for all transactions.
5390COMMENT: allow|deny acl acl...
5391DOC_START
5392 This options allows you to control which requests gets accounted
5393 in performance counters.
5394
5395 This clause only supports fast acl types.
5396 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
5397DOC_END
5398
5399NAME: cache_store_log
5400TYPE: string
5401DEFAULT: none
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
5406 saved and for how long.
5407 There are not really utilities to analyze this data, so you can safely
5408 disable it (the default).
5409
5410 Store log uses modular logging outputs. See access_log for the list
5411 of modules supported.
5412
5413 Example:
5414 cache_store_log stdio:@DEFAULT_STORE_LOG@
5415 cache_store_log daemon:@DEFAULT_STORE_LOG@
5416DOC_END
5417
5418NAME: cache_swap_state cache_swap_log
5419TYPE: string
5420LOC: Config.Log.swap
5421DEFAULT: none
5422DEFAULT_DOC: Store the journal inside its cache_dir
5423DOC_START
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!
5431
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.
5436
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:
5439
5440 cache_swap_log.00
5441 cache_swap_log.01
5442 cache_swap_log.02
5443
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.
5451DOC_END
5452
5453NAME: logfile_rotate
5454TYPE: int
5455DEFAULT: 10
5456LOC: Config.Log.rotateNumber
5457DOC_START
5458 Specifies the default number of logfile rotations to make when you
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.
5464
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
5468 Note, from Squid-4 this option is only a default for access.log
5469 recorded by stdio: module. Those logs can be rotated separately by
5470 using the rotate=N option on their access_log directive.
5471
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>'.
5478
5479DOC_END
5480
5481NAME: mime_table
5482TYPE: string
5483DEFAULT: @DEFAULT_MIME_TABLE@
5484LOC: Config.mimeTablePathname
5485DOC_START
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.
5490DOC_END
5491
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
5504
5505NAME: pid_filename
5506TYPE: string
5507DEFAULT: @DEFAULT_PID_FILE@
5508LOC: Config.pidFilename
5509DOC_START
5510 A filename to write the process-id to. To disable, enter "none".
5511DOC_END
5512
5513NAME: client_netmask
5514TYPE: address
5515LOC: Config.Addrs.client_netmask
5516DEFAULT: no_addr
5517DEFAULT_DOC: Log full client IP address
5518DOC_START
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'.
5523DOC_END
5524
5525NAME: strip_query_terms
5526TYPE: onoff
5527LOC: Config.onoff.strip_query_terms
5528DEFAULT: on
5529DOC_START
5530 By default, Squid strips query terms from requested URLs before
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.
5535DOC_END
5536
5537NAME: buffered_logs
5538COMMENT: on|off
5539TYPE: onoff
5540DEFAULT: off
5541LOC: Config.onoff.buffered_logs
5542DOC_START
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
5554 Currently honored by 'daemon' and 'tcp' access_log modules only.
5555DOC_END
5556
5557NAME: netdb_filename
5558TYPE: string
5559DEFAULT: stdio:@DEFAULT_NETDB_FILE@
5560LOC: Config.netdbFilename
5561IFDEF: USE_ICMP
5562DOC_START
5563 Where Squid stores it's netdb journal.
5564 When enabled this journal preserves netdb state between restarts.
5565
5566 To disable, enter "none".
5567DOC_END
5568
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
5627COMMENT_START
5628 OPTIONS FOR TROUBLESHOOTING
5629 -----------------------------------------------------------------------------
5630COMMENT_END
5631
5632NAME: cache_log
5633TYPE: string
5634DEFAULT_IF_NONE: @DEFAULT_CACHE_LOG@
5635LOC: Debug::cache_log
5636DOC_START
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"
5642DOC_END
5643
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
5690NAME: debug_options
5691TYPE: eol
5692DEFAULT: ALL,1
5693DEFAULT_DOC: Log all critical and important messages.
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.
5702 The default is to run with "ALL,1" to record important warnings.
5703
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.
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
5713DEFAULT_IF_NONE: none
5714DEFAULT_DOC: Use the directory from where Squid was started.
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
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
5726CONFIG_START
5727
5728# Leave coredumps in the first cache dir
5729coredump_dir @DEFAULT_SWAP_DIR@
5730CONFIG_END
5731DOC_END
5732
5733
5734COMMENT_START
5735 OPTIONS FOR FTP GATEWAYING
5736 -----------------------------------------------------------------------------
5737COMMENT_END
5738
5739NAME: ftp_user
5740TYPE: string
5741DEFAULT: Squid@
5742LOC: Config.Ftp.anon_user
5743DOC_START
5744 If you want the anonymous login password to be more informative
5745 (and enable the use of picky FTP servers), set this to something
5746 reasonable for your domain, like wwwuser@somewhere.net
5747
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.
5751 Some FTP server also validate the email address is valid
5752 (for example perl.com).
5753DOC_END
5754
5755NAME: ftp_passive
5756TYPE: onoff
5757DEFAULT: on
5758LOC: Config.Ftp.passive
5759DOC_START
5760 If your firewall does not allow Squid to use passive
5761 connections, turn off this option.
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
5777 When a client only expects to do two-way FTP transfers this may be
5778 useful.
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
5785 Requires ftp_passive to be ON (default) for any effect.
5786DOC_END
5787
5788NAME: ftp_epsv
5789TYPE: ftp_epsv
5790DEFAULT: none
5791LOC: Config.accessList.ftp_epsv
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
5796 translator using EPSV, as the EPRT command will never be used
5797 and therefore, translation of the data portion of the segments
5798 will never be needed.
5799
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.
5810
5811 Only fast ACLs are supported.
5812 Requires ftp_passive to be ON (default) for any effect.
5813DOC_END
5814
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
5830 may result in crashes. Devices which support EPRT enough to fail
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
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
5849
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
5892IFDEF: USE_ICMP
5893TYPE: icmp
5894DEFAULT: @DEFAULT_PINGER@
5895LOC: IcmpCfg
5896DOC_START
5897 Specify the location of the executable for the pinger process.
5898DOC_END
5899
5900NAME: pinger_enable
5901TYPE: onoff
5902DEFAULT: on
5903LOC: IcmpCfg.enable
5904IFDEF: USE_ICMP
5905DOC_START
5906 Control whether the pinger is active at run-time.
5907 Enables turning ICMP pinger on and off with a simple
5908 squid -k reconfigure.
5909DOC_END
5910
5911
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
5922 The name and command line parameters of an admin-provided executable
5923 for redirecting clients or adjusting/replacing client request URLs.
5924
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.
5929
5930
5931 For each request, the helper gets one line in the following format:
5932
5933 [channel-ID <SP>] request-URL [<SP> extras] <NL>
5934
5935 Use url_rewrite_extras to configure what Squid sends as 'extras'.
5936
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.
5951
5952 OK rewrite-url="..."
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.
5967
5968 OK
5969 Keep the client request intact.
5970
5971 ERR
5972 Keep the client request intact.
5973
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.
5978
5979 In addition to the kv-pairs mentioned above, Squid also understands
5980 the following optional kv-pairs in URL rewriter responses:
5981
5982 clt_conn_tag=TAG
5983 Associates a TAG with the client TCP connection.
5984
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.
5989
5990
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.
5995
5996 By default, Squid does not use a URL rewriter.
5997DOC_END
5998
5999NAME: url_rewrite_children redirect_children
6000TYPE: HelperChildConfig
6001DEFAULT: 20 startup=0 idle=1 concurrency=0
6002LOC: Config.redirectChildren
6003DOC_START
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
6011 The startup= and idle= options allow some measure of skew in your
6012 tuning.
6013
6014 startup=
6015
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.
6019
6020 Starting too few will cause an initial slowdown in traffic as Squid
6021 attempts to simultaneously spawn enough processes to cope.
6022
6023 idle=
6024
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=
6031
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.
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
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.
6040
6041 queue-size=N
6042
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.
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.
6069DOC_END
6070
6071NAME: url_rewrite_host_header redirect_rewrites_host_header
6072TYPE: onoff
6073DEFAULT: on
6074LOC: Config.onoff.redir_rewrites_host
6075DOC_START
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.
6079
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.
6083
6084 WARNING: Entries are cached on the result of the URL rewriting
6085 process, so be careful if you have domain-virtual hosts.
6086
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.
6090DOC_END
6091
6092NAME: url_rewrite_access redirector_access
6093TYPE: acl_access
6094DEFAULT: none
6095DEFAULT_DOC: Allow, unless rules exist in squid.conf.
6096LOC: Config.accessList.redirector
6097DOC_START
6098 If defined, this access list specifies which requests are
6099 sent to the redirector processes.
6100
6101 This clause supports both fast and slow acl types.
6102 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
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
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
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.
6118
6119 Enabling this option sets the default url_rewrite_children queue-size
6120 option value to 0.
6121DOC_END
6122
6123NAME: url_rewrite_extras
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
6135NAME: url_rewrite_timeout
6136TYPE: UrlHelperTimeout
6137LOC: Config.onUrlRewriteTimeout
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
6145 url_rewrite_timeout timeout time-units on_timeout=<action> [response=<quoted-response>]
6146
6147 supported timeout actions:
6148 fail Squid return a ERR_GATEWAY_FAILURE error page
6149
6150 bypass Do not re-write the URL
6151
6152 retry Send the lookup to the helper again
6153
6154 use_configured_response
6155 Use the <quoted-response> as helper response
6156DOC_END
6157
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
6173 [channel-ID <SP>] URL [<SP> extras]<NL>
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
6189 An internal error occurred in the helper, preventing
6190 a result being identified.
6191
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
6198
6199 Helper programs should be prepared to receive and possibly ignore
6200 additional whitespace-separated tokens on each input line.
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
6217NAME: store_id_extras
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
6229NAME: store_id_children storeurl_rewrite_children
6230TYPE: HelperChildConfig
6231DEFAULT: 20 startup=0 idle=1 concurrency=0
6232LOC: Config.storeIdChildren
6233DOC_START
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]...
6240
6241 The startup= and idle= options allow some measure of skew in your
6242 tuning.
6243
6244 startup=
6245
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.
6249
6250 Starting too few will cause an initial slowdown in traffic as Squid
6251 attempts to simultaneously spawn enough processes to cope.
6252
6253 idle=
6254
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.
6270
6271 queue-size=N
6272
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.
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.
6298DOC_END
6299
6300NAME: store_id_access storeurl_rewrite_access
6301TYPE: acl_access
6302DEFAULT: none
6303DEFAULT_DOC: Allow, unless rules exist in squid.conf.
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
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
6324 helpers for critical caching components, and you enable this
6325 option, users may not get objects from cache.
6326 This options sets default queue-size option of the store_id_children
6327 to 0.
6328DOC_END
6329
6330COMMENT_START
6331 OPTIONS FOR TUNING THE CACHE
6332 -----------------------------------------------------------------------------
6333COMMENT_END
6334
6335NAME: cache no_cache
6336TYPE: acl_access
6337DEFAULT: none
6338DEFAULT_DOC: By default, this directive is unused and has no effect.
6339LOC: Config.accessList.noCache
6340DOC_START
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.
6344
6345 This clause supports both fast and slow acl types.
6346 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
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.
6429DOC_END
6430
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.
6439 Can be overridden by the refresh_pattern max-stale option.
6440DOC_END
6441
6442NAME: refresh_pattern
6443TYPE: refreshpattern
6444LOC: Config.Refresh
6445DEFAULT: none
6446DOC_START
6447 usage: refresh_pattern [-i] regex min percent max [options]
6448
6449 By default, regular expressions are CASE-SENSITIVE. To make
6450 them case-insensitive, use the -i option.
6451
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.
6457
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.
6461
6462 'Max' is an upper limit on how long objects without an explicit
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.
6466
6467 options: override-expire
6468 override-lastmod
6469 reload-into-ims
6470 ignore-reload
6471 ignore-no-store
6472 ignore-private
6473 max-stale=NN
6474 refresh-ims
6475 store-stale
6476
6477 override-expire enforces min age even if the server
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.
6482
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
6488 override-lastmod enforces min age even on objects
6489 that were modified recently.
6490
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.
6497
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.
6502
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
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
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
6521 not cache such responses because they usually can't be
6522 reused. Note that such responses will be stale by default.
6523
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
6528 Basically a cached object is:
6529
6530 FRESH if expire > now, else STALE
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
6544CONFIG_START
6545
6546#
6547# Add any of your own refresh_pattern entries above these.
6548#
6549refresh_pattern ^ftp: 1440 20% 10080
6550refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
6551refresh_pattern . 0 20% 4320
6552CONFIG_END
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
6583 quick_abort values to the amount of data transferred until
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
6602
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
6612
6613NAME: negative_ttl
6614IFDEF: USE_HTTP_VIOLATIONS
6615COMMENT: time-units
6616TYPE: time_t
6617LOC: Config.negativeTtl
6618DEFAULT: 0 seconds
6619DOC_START
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.
6628
6629 WARNING: Doing this VIOLATES the HTTP standard. Enabling
6630 this feature could make you liable for problems which it
6631 causes.
6632DOC_END
6633
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
6644
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
6656
6657NAME: range_offset_limit
6658COMMENT: size [acl acl...]
6659TYPE: acl_b_size_t
6660LOC: Config.rangeOffsetLimit
6661DEFAULT: none
6662DOC_START
6663 usage: (size) [units] [[!]aclname]
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
6668 the result is NOT cached.
6669
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.
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
6677 default limit of 0 bytes will be used.
6678
6679 'size' is the limit specified as a number of units.
6680
6681 'units' specifies whether to use bytes, KB, MB, etc.
6682 If no units are specified bytes are assumed.
6683
6684 A size of 0 causes Squid to never fetch more than the
6685 client requested. (default)
6686
6687 A size of 'none' causes Squid to always fetch the object from the
6688 beginning so it may cache the result. (2.0 style)
6689
6690 'aclname' is the name of a defined ACL.
6691
6692 NP: Using 'none' as the byte value here will override any quick_abort settings
6693 that may otherwise apply to the range request. The range request will
6694 be fully fetched from start to finish regardless of the client
6695 actions. This affects bandwidth usage.
6696DOC_END
6697
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)
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.
6714DOC_END
6715
6716NAME: store_avg_object_size
6717COMMENT: (bytes)
6718TYPE: b_int64_t
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.
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.
6732DOC_END
6733
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
6749NAME: request_header_max_size
6750COMMENT: (KB)
6751TYPE: b_size_t
6752DEFAULT: 64 KB
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
6765DEFAULT: 64 KB
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
6779DEFAULT_DOC: No limit.
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.
6788
6789 See also client_request_buffer_max_size for an alternative
6790 limitation on client uploads which can be configured.
6791DOC_END
6792
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
6804NAME: broken_posts
6805IFDEF: USE_HTTP_VIOLATIONS
6806TYPE: acl_access
6807DEFAULT: none
6808DEFAULT_DOC: Obey RFC 2616.
6809LOC: Config.accessList.brokenPosts
6810DOC_START
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.
6813
6814 Some HTTP servers has broken implementations of PUT/POST,
6815 and rely on an extra CRLF pair sent by some WWW clients.
6816
6817 Quote from RFC2616 section 4.1 on this matter:
6818
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.
6823
6824 This clause only supports fast acl types.
6825 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
6826
6827Example:
6828 acl buggy_server url_regex ^http://....
6829 broken_posts allow buggy_server
6830DOC_END
6831
6832NAME: adaptation_uses_indirect_client icap_uses_indirect_client
6833COMMENT: on|off
6834TYPE: onoff
6835IFDEF: FOLLOW_X_FORWARDED_FOR&&USE_ADAPTATION
6836DEFAULT: on
6837LOC: Adaptation::Config::use_indirect_client
6838DOC_START
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
6843DOC_END
6844
6845NAME: via
6846IFDEF: USE_HTTP_VIOLATIONS
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
6855
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.
6867
6868 WARNING: If turned on this may eventually cause some
6869 varying objects not intended for caching to get cached.
6870DOC_END
6871
6872NAME: request_header_access
6873IFDEF: USE_HTTP_VIOLATIONS
6874TYPE: http_header_access
6875LOC: Config.request_header_access
6876DEFAULT: none
6877DEFAULT_DOC: No limits.
6878DOC_START
6879 Usage: request_header_access header_name allow|deny [!]aclname ...
6880
6881 WARNING: Doing this VIOLATES the HTTP standard. Enabling
6882 this feature could make you liable for problems which it
6883 causes.
6884
6885 This option replaces the old 'anonymize_headers' and the
6886 older 'http_anonymizer' option with something that is much
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.
6911
6912 For example, to achieve the same behavior as the old
6913 'http_anonymizer standard' option, you should use:
6914
6915 request_header_access From deny all
6916 request_header_access Referer deny all
6917 request_header_access User-Agent deny all
6918
6919 Or, to reproduce the old 'http_anonymizer paranoid' feature
6920 you should use:
6921
6922 request_header_access Authorization allow all
6923 request_header_access Proxy-Authorization allow all
6924 request_header_access Cache-Control allow all
6925 request_header_access Content-Length allow all
6926 request_header_access Content-Type allow all
6927 request_header_access Date allow all
6928 request_header_access Host allow all
6929 request_header_access If-Modified-Since allow all
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
6935 request_header_access Connection allow all
6936 request_header_access All deny all
6937
6938 HTTP reply headers are controlled with the reply_header_access directive.
6939
6940 By default, all headers are allowed (no anonymizing is performed).
6941DOC_END
6942
6943NAME: reply_header_access
6944IFDEF: USE_HTTP_VIOLATIONS
6945TYPE: http_header_access
6946LOC: Config.reply_header_access
6947DEFAULT: none
6948DEFAULT_DOC: No limits.
6949DOC_START
6950 Usage: reply_header_access header_name allow|deny [!]aclname ...
6951
6952 WARNING: Doing this VIOLATES the HTTP standard. Enabling
6953 this feature could make you liable for problems which it
6954 causes.
6955
6956 This option only applies to reply headers, i.e., from the
6957 server to the client.
6958
6959 This is the same as request_header_access, but in the other
6960 direction. Please see request_header_access for detailed
6961 documentation.
6962
6963 For example, to achieve the same behavior as the old
6964 'http_anonymizer standard' option, you should use:
6965
6966 reply_header_access Server deny all
6967 reply_header_access WWW-Authenticate deny all
6968 reply_header_access Link deny all
6969
6970 Or, to reproduce the old 'http_anonymizer paranoid' feature
6971 you should use:
6972
6973 reply_header_access Allow allow all
6974 reply_header_access WWW-Authenticate allow all
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
6982 reply_header_access Last-Modified allow all
6983 reply_header_access Location allow all
6984 reply_header_access Pragma allow all
6985 reply_header_access Content-Language allow all
6986 reply_header_access Retry-After allow all
6987 reply_header_access Title allow all
6988 reply_header_access Content-Disposition allow all
6989 reply_header_access Connection allow all
6990 reply_header_access All deny all
6991
6992 HTTP request headers are controlled with the request_header_access directive.
6993
6994 By default, all headers are allowed (no anonymizing is
6995 performed).
6996DOC_END
6997
6998NAME: request_header_replace header_replace
6999IFDEF: USE_HTTP_VIOLATIONS
7000TYPE: http_header_replace
7001LOC: Config.request_header_access
7002DEFAULT: none
7003DOC_START
7004 Usage: request_header_replace header_name message
7005 Example: request_header_replace User-Agent Nutscrape/1.0 (CP/M; 8-bit)
7006
7007 This option allows you to change the contents of headers
7008 denied with request_header_access above, by replacing them
7009 with some fixed string.
7010
7011 This only applies to request headers, not reply headers.
7012
7013 By default, headers are removed if denied.
7014DOC_END
7015
7016NAME: reply_header_replace
7017IFDEF: USE_HTTP_VIOLATIONS
7018TYPE: http_header_replace
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
7034NAME: request_header_add
7035TYPE: HeaderWithAclList
7036LOC: Config.request_header_add
7037DEFAULT: none
7038DOC_START
7039 Usage: request_header_add field-name field-value [ acl ... ]
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
7059 One or more Squid ACLs may be specified to restrict header
7060 injection to matching requests. As always in squid.conf, all
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.
7098DOC_END
7099
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 ...
7114
7115 This clause only supports fast acl types.
7116 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
7117DOC_END
7118
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.
7130
7131 If set to "warn" then a warning will be emitted in cache.log
7132 each time such HTTP error is encountered.
7133
7134 If set to "off" then such HTTP errors will cause the request
7135 or response to be rejected.
7136DOC_END
7137
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
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.
7171DOC_END
7172
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
7203NAME: shared_transient_entries_limit collapsed_forwarding_shared_entries_limit
7204COMMENT: (number of entries)
7205TYPE: int64_t
7206LOC: Config.shared_transient_entries_limit
7207DEFAULT: 16384
7208DOC_START
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.
7214
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
7218 setting of 16384 should be plenty.
7219
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.
7233DOC_END
7234
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.
7248DOC_END
7249
7250NAME: connect_timeout
7251COMMENT: time-units
7252TYPE: time_t
7253LOC: Config.Timeout.connect
7254DEFAULT: 1 minute
7255DOC_START
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.
7259DOC_END
7260
7261NAME: peer_connect_timeout
7262COMMENT: time-units
7263TYPE: time_t
7264LOC: Config.Timeout.peer_connect
7265DEFAULT: 30 seconds
7266DOC_START
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
7272
7273NAME: read_timeout
7274COMMENT: time-units
7275TYPE: time_t
7276LOC: Config.Timeout.read
7277DEFAULT: 15 minutes
7278DOC_START
7279 Applied on peer server connections.
7280
7281 After each successful read(), the timeout will be extended by this
7282 amount. If no data is read again after this amount of time,
7283 the request is aborted and logged with ERR_READ_TIMEOUT.
7284
7285 The default is 15 minutes.
7286DOC_END
7287
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
7303NAME: request_timeout
7304TYPE: time_t
7305LOC: Config.Timeout.request
7306DEFAULT: 5 minutes
7307DOC_START
7308 How long to wait for complete HTTP request headers after initial
7309 connection establishment.
7310DOC_END
7311
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
7321NAME: client_idle_pconn_timeout persistent_request_timeout
7322TYPE: time_t
7323LOC: Config.Timeout.clientIdlePconn
7324DEFAULT: 2 minutes
7325DOC_START
7326 How long to wait for the next HTTP request on a persistent
7327 client connection after the previous request completes.
7328DOC_END
7329
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
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.
7354
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.
7361DOC_END
7362
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".
7375
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.
7381
7382 Currently, a new lifetime value supplied via Squid reconfiguration
7383 has no effect on already idle connections unless they become busy.
7384
7385 When set to '0' this limit is not used.
7386DOC_END
7387
7388NAME: half_closed_clients
7389TYPE: onoff
7390LOC: Config.onoff.half_closed_clients
7391DEFAULT: off
7392DOC_START
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
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
7401 Change this option to 'on' and Squid will keep open connections
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.
7405DOC_END
7406
7407NAME: server_idle_pconn_timeout pconn_timeout
7408TYPE: time_t
7409LOC: Config.Timeout.serverIdlePconn
7410DEFAULT: 1 minute
7411DOC_START
7412 Timeout for idle persistent connections to servers and other
7413 proxies.
7414DOC_END
7415
7416NAME: ident_timeout
7417TYPE: time_t
7418IFDEF: USE_IDENT
7419LOC: Ident::TheConfig.timeout
7420DEFAULT: 10 seconds
7421DOC_START
7422 Maximum time to wait for IDENT lookups to complete.
7423
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.
7427DOC_END
7428
7429NAME: shutdown_lifetime
7430COMMENT: time-units
7431TYPE: time_t
7432LOC: Config.shutdownLifetime
7433DEFAULT: 30 seconds
7434DOC_START
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.
7440DOC_END
7441
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
7453 mail if the cache dies. The default is "webmaster".
7454DOC_END
7455
7456NAME: mail_from
7457TYPE: string
7458DEFAULT: none
7459LOC: Config.EmailFrom
7460DOC_START
7461 From: email-address for mail sent when the cache dies.
7462 The default is to use 'squid@unique_hostname'.
7463
7464 See also: unique_hostname directive.
7465DOC_END
7466
7467NAME: mail_program
7468TYPE: eol
7469DEFAULT: mail
7470LOC: Config.EmailProgram
7471DOC_START
7472 Email program used to send mail if the cache dies.
7473 The default is "mail". The specified program must comply
7474 with the standard Unix mail syntax:
7475 mail-program recipient < mailfile
7476
7477 Optional command line options can be specified.
7478DOC_END
7479
7480NAME: cache_effective_user
7481TYPE: string
7482DEFAULT: @DEFAULT_CACHE_EFFECTIVE_USER@
7483LOC: Config.effectiveUser
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
7487 to UID of @DEFAULT_CACHE_EFFECTIVE_USER@.
7488 see also; cache_effective_group
7489DOC_END
7490
7491NAME: cache_effective_group
7492TYPE: string
7493DEFAULT: none
7494DEFAULT_DOC: Use system group memberships of the cache_effective_user account
7495LOC: Config.effectiveGroup
7496DOC_START
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
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
7504 all other group privileges of the effective user are ignored
7505 and only this GID is effective. If Squid is not started as
7506 root the user starting Squid MUST be member of the specified
7507 group.
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.
7512DOC_END
7513
7514NAME: httpd_suppress_version_string
7515COMMENT: on|off
7516TYPE: onoff
7517DEFAULT: off
7518LOC: Config.onoff.httpd_suppress_version_string
7519DOC_START
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.
7524DOC_END
7525
7526NAME: visible_hostname
7527TYPE: string
7528LOC: Config.visibleHostname
7529DEFAULT: none
7530DEFAULT_DOC: Automatically detect the system host name
7531DOC_START
7532 If you want to present a special hostname in error messages, etc,
7533 define this. Otherwise, the return value of gethostname()
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
7539NAME: unique_hostname
7540TYPE: string
7541LOC: Config.uniqueHostname
7542DEFAULT: none
7543DEFAULT_DOC: Copy the value from visible_hostname
7544DOC_START
7545 If you want to have multiple machines with the same
7546 'visible_hostname' you must give each machine a different
7547 'unique_hostname' so forwarding loops can be detected.
7548DOC_END
7549
7550NAME: hostname_aliases
7551TYPE: wordlist
7552LOC: Config.hostnameAliases
7553DEFAULT: none
7554DOC_START
7555 A list of other DNS names your cache has.
7556DOC_END
7557
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
7570COMMENT_START
7571 HTTPD-ACCELERATOR OPTIONS
7572 -----------------------------------------------------------------------------
7573COMMENT_END
7574
7575NAME: httpd_accel_surrogate_id
7576TYPE: string
7577DEFAULT: none
7578DEFAULT_DOC: visible_hostname is used if no specific ID is set.
7579LOC: Config.Accel.surrogate_id
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.
7585
7586 When the surrogate is a reverse-proxy, this ID is also
7587 used as cdn-id for CDN-Loop detection (RFC 8586).
7588DOC_END
7589
7590NAME: http_accel_surrogate_remote
7591COMMENT: on|off
7592TYPE: onoff
7593DEFAULT: off
7594LOC: Config.onoff.surrogate_is_remote
7595DOC_START
7596 Remote surrogates (such as those in a CDN) honour the header
7597 "Surrogate-Control: no-store-remote".
7598
7599 Set this to on to have squid behave as a remote surrogate.
7600DOC_END
7601
7602NAME: esi_parser
7603IFDEF: USE_SQUID_ESI
7604COMMENT: libxml2|expat
7605TYPE: string
7606LOC: ESIParser::Type
7607DEFAULT: auto
7608DEFAULT_DOC: Selects libxml2 if available at ./configure time or libexpat otherwise.
7609DOC_START
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.
7614DOC_END
7615
7616COMMENT_START
7617 DELAY POOL PARAMETERS
7618 -----------------------------------------------------------------------------
7619COMMENT_END
7620
7621NAME: delay_pools
7622TYPE: delay_pool_count
7623DEFAULT: 0
7624IFDEF: USE_DELAY_POOLS
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.
7630
7631 See also delay_parameters, delay_class, delay_access for pool
7632 configuration details.
7633DOC_END
7634
7635NAME: delay_class
7636TYPE: delay_pool_class
7637DEFAULT: none
7638IFDEF: USE_DELAY_POOLS
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
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
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
7660 from bits 25 through 32 of the IPv4 address.
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
7666 32 of the IPv4 address.
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
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
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"
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.
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.
7694DOC_END
7695
7696NAME: delay_access
7697TYPE: delay_pool_access
7698DEFAULT: none
7699DEFAULT_DOC: Deny using the pool, unless allow rules exist in squid.conf for the pool.
7700IFDEF: USE_DELAY_POOLS
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
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
7721DOC_END
7722
7723NAME: delay_parameters
7724TYPE: delay_pool_rates
7725DEFAULT: none
7726IFDEF: USE_DELAY_POOLS
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
7731 description of delay_class.
7732
7733 For a class 1 delay pool, the syntax is:
7734 delay_class pool 1
7735 delay_parameters pool aggregate
7736
7737 For a class 2 delay pool:
7738 delay_class pool 2
7739 delay_parameters pool aggregate individual
7740
7741 For a class 3 delay pool:
7742 delay_class pool 3
7743 delay_parameters pool aggregate network individual
7744
7745 For a class 4 delay pool:
7746 delay_class pool 4
7747 delay_parameters pool aggregate network individual user
7748
7749 For a class 5 delay pool:
7750 delay_class pool 5
7751 delay_parameters pool tagrate
7752
7753 The option variables are:
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
7759 aggregate the speed limit parameters for the aggregate bucket
7760 (class 1, 2, 3).
7761
7762 individual the speed limit parameters for the individual
7763 buckets (class 2, 3).
7764
7765 network the speed limit parameters for the network buckets
7766 (class 3).
7767
7768 user the speed limit parameters for the user buckets
7769 (class 4).
7770
7771 tagrate the speed limit parameters for the tag buckets
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
7779 There must be one delay_parameters line for each delay pool.
7780
7781
7782 For example, if delay pool number 1 is a class 2 delay pool as in the
7783 above example, and is being used to strictly limit each host to 64Kbit/sec
7784 (plus overheads), with no overall limit, the line is:
7785
7786 delay_parameters 1 none 8000/8000
7787
7788 Note that 8 x 8K Byte/sec -> 64K bit/sec.
7789
7790 Note that the word 'none' is used to represent no limit.
7791
7792
7793 And, if delay pool number 2 is a class 3 delay pool as in the above
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
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
7801 delay_parameters 2 32000/32000 8000/8000 600/8000
7802
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.
7806
7807
7808 Finally, for a class 4 delay pool as in the example - each user will
7809 be limited to 128Kbits/sec no matter how many workstations they are logged into.:
7810
7811 delay_parameters 4 32000/32000 8000/8000 600/64000 16000/16000
7812
7813
7814 See also delay_class and delay_access.
7815
7816DOC_END
7817
7818NAME: delay_initial_bucket_level
7819COMMENT: (percent, 0-100)
7820TYPE: u_short
7821DEFAULT: 50
7822IFDEF: USE_DELAY_POOLS
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
7832COMMENT_START
7833 CLIENT DELAY POOL PARAMETERS
7834 -----------------------------------------------------------------------------
7835COMMENT_END
7836
7837NAME: client_delay_pools
7838TYPE: client_delay_pool_count
7839DEFAULT: 0
7840IFDEF: USE_DELAY_POOLS
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
7846 Example:
7847 client_delay_pools 2
7848
7849 See also client_delay_parameters and client_delay_access.
7850DOC_END
7851
7852NAME: client_delay_initial_bucket_level
7853COMMENT: (percent, 0-no_limit)
7854TYPE: u_short
7855DEFAULT: 50
7856IFDEF: USE_DELAY_POOLS
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
7868 Example:
7869 client_delay_initial_bucket_level 50
7870DOC_END
7871
7872NAME: client_delay_parameters
7873TYPE: client_delay_pool_rates
7874DEFAULT: none
7875IFDEF: USE_DELAY_POOLS
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
7894 Example:
7895 client_delay_parameters 1 1024 2048
7896 client_delay_parameters 2 51200 16384
7897
7898 See also client_delay_access.
7899
7900DOC_END
7901
7902NAME: client_delay_access
7903TYPE: client_delay_pool_access
7904DEFAULT: none
7905DEFAULT_DOC: Deny use of the pool, unless allow rules exist in squid.conf for the pool.
7906IFDEF: USE_DELAY_POOLS
7907LOC: Config.ClientDelay
7908DOC_START
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
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
7930 Please see delay_access for more examples.
7931
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.
7938DOC_END
7939
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
7998COMMENT_START
7999 WCCPv1 AND WCCPv2 CONFIGURATION OPTIONS
8000 -----------------------------------------------------------------------------
8001COMMENT_END
8002
8003NAME: wccp_router
8004TYPE: address
8005LOC: Config.Wccp.router
8006DEFAULT: any_addr
8007DEFAULT_DOC: WCCP disabled.
8008IFDEF: USE_WCCP
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
8020
8021NAME: wccp2_router
8022TYPE: IpAddress_list
8023LOC: Config.Wccp2.router
8024DEFAULT: none
8025DEFAULT_DOC: WCCPv2 disabled.
8026IFDEF: USE_WCCPv2
8027DOC_START
8028 Use this option to define your WCCP ``home'' router for
8029 Squid.
8030
8031 wccp_router supports a single WCCP(v1) router
8032
8033 wccp2_router supports multiple WCCPv2 routers
8034
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
8040TYPE: int
8041LOC: Config.Wccp.version
8042DEFAULT: 4
8043IFDEF: USE_WCCP
8044DOC_START
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.
8050
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.
8055DOC_END
8056
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
8066
8067NAME: wccp2_forwarding_method
8068TYPE: wccp2_method
8069LOC: Config.Wccp2.forwarding_method
8070DEFAULT: gre
8071IFDEF: USE_WCCPv2
8072DOC_START
8073 WCCP2 allows the setting of forwarding methods between the
8074 router/switch and the cache. Valid values are as follows:
8075
8076 gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
8077 l2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
8078
8079 Currently (as of IOS 12.4) cisco routers only support GRE.
8080 Cisco switches only support the L2 redirect assignment method.
8081DOC_END
8082
8083NAME: wccp2_return_method
8084TYPE: wccp2_method
8085LOC: Config.Wccp2.return_method
8086DEFAULT: gre
8087IFDEF: USE_WCCPv2
8088DOC_START
8089 WCCP2 allows the setting of return methods between the
8090 router/switch and the cache for packets that the cache
8091 decides not to handle. Valid values are as follows:
8092
8093 gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
8094 l2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
8095
8096 Currently (as of IOS 12.4) cisco routers only support GRE.
8097 Cisco switches only support the L2 redirect assignment.
8098
8099 If the "ip wccp redirect exclude in" command has been
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.
8103DOC_END
8104
8105NAME: wccp2_assignment_method
8106TYPE: wccp2_amethod
8107LOC: Config.Wccp2.assignment_method
8108DEFAULT: hash
8109IFDEF: USE_WCCPv2
8110DOC_START
8111 WCCP2 allows the setting of methods to assign the WCCP hash
8112 Valid values are as follows:
8113
8114 hash - Hash assignment
8115 mask - Mask assignment
8116
8117 As a general rule, cisco routers support the hash assignment method
8118 and cisco switches support the mask assignment method.
8119DOC_END
8120
8121NAME: wccp2_service
8122TYPE: wccp2_service
8123LOC: Config.Wccp2.info
8124DEFAULT_IF_NONE: standard 0
8125DEFAULT_DOC: Use the 'web-cache' standard service.
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
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
8165 + source_port_hash, dst_port_hash
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
8195DEFAULT_DOC: Address selected by the operating system.
8196IFDEF: USE_WCCP
8197DOC_START
8198 Use this option if you require WCCP(v1) to use a specific
8199 interface address.
8200
8201 The default behavior is to not bind to any specific address.
8202DOC_END
8203
8204NAME: wccp2_address
8205TYPE: address
8206LOC: Config.Wccp2.address
8207DEFAULT: 0.0.0.0
8208DEFAULT_DOC: Address selected by the operating system.
8209IFDEF: USE_WCCPv2
8210DOC_START
8211 Use this option if you require WCCPv2 to use a specific
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
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
8233
8234NAME: server_persistent_connections
8235TYPE: onoff
8236LOC: Config.onoff.server_pconns
8237DEFAULT: on
8238DOC_START
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.
8242DOC_END
8243
8244NAME: persistent_connection_after_error
8245TYPE: onoff
8246LOC: Config.onoff.error_pconns
8247DEFAULT: on
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
8282 enabled if Squid is compiled with --enable-cache-digests defined.
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
8303 This is the wait time between Cache Digest rebuilds.
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
8313 This is the wait time between Cache Digest writes to
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
8340COMMENT_START
8341 SNMP OPTIONS
8342 -----------------------------------------------------------------------------
8343COMMENT_END
8344
8345NAME: snmp_port
8346TYPE: u_short
8347LOC: Config.Port.snmp
8348DEFAULT: 0
8349DEFAULT_DOC: SNMP disabled.
8350IFDEF: SQUID_SNMP
8351DOC_START
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)
8356
8357 Example:
8358 snmp_port 3401
8359DOC_END
8360
8361NAME: snmp_access
8362TYPE: acl_access
8363LOC: Config.accessList.snmp
8364DEFAULT: none
8365DEFAULT_DOC: Deny, unless rules exist in squid.conf.
8366IFDEF: SQUID_SNMP
8367DOC_START
8368 Allowing or denying access to the SNMP port.
8369
8370 All access to the agent is denied by default.
8371 usage:
8372
8373 snmp_access allow|deny [!]aclname ...
8374
8375 This clause only supports fast acl types.
8376 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
8377
8378Example:
8379 snmp_access allow snmppublic localhost
8380 snmp_access deny all
8381DOC_END
8382
8383NAME: snmp_incoming_address
8384TYPE: address
8385LOC: Config.Addrs.snmp_incoming
8386DEFAULT: any_addr
8387DEFAULT_DOC: Accept SNMP packets from all machine interfaces.
8388IFDEF: SQUID_SNMP
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
8398
8399NAME: snmp_outgoing_address
8400TYPE: address
8401LOC: Config.Addrs.snmp_outgoing
8402DEFAULT: no_addr
8403DEFAULT_DOC: Use snmp_incoming_address or an address selected by the operating system.
8404IFDEF: SQUID_SNMP
8405DOC_START
8406 Just like 'udp_outgoing_address', but for the SNMP port.
8407
8408 snmp_outgoing_address is used for SNMP packets returned to SNMP
8409 agents.
8410
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.
8415
8416 NOTE, snmp_incoming_address and snmp_outgoing_address can not have
8417 the same value since they both use the same port.
8418DOC_END
8419
8420COMMENT_START
8421 ICP OPTIONS
8422 -----------------------------------------------------------------------------
8423COMMENT_END
8424
8425NAME: icp_port udp_port
8426TYPE: u_short
8427DEFAULT: 0
8428DEFAULT_DOC: ICP disabled.
8429LOC: Config.Port.icp
8430DOC_START
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.
8433
8434 Example:
8435 icp_port @DEFAULT_ICP_PORT@
8436DOC_END
8437
8438NAME: htcp_port
8439IFDEF: USE_HTCP
8440TYPE: u_short
8441DEFAULT: 0
8442DEFAULT_DOC: HTCP disabled.
8443LOC: Config.Port.htcp
8444DOC_START
8445 The port number where Squid sends and receives HTCP queries to
8446 and from neighbor caches. To turn it on you want to set it to
8447 4827.
8448
8449 Example:
8450 htcp_port 4827
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
8464NAME: udp_incoming_address
8465TYPE: address
8466LOC:Config.Addrs.udp_incoming
8467DEFAULT: any_addr
8468DEFAULT_DOC: Accept packets from all machine interfaces.
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
8486
8487NAME: udp_outgoing_address
8488TYPE: address
8489LOC: Config.Addrs.udp_outgoing
8490DEFAULT: no_addr
8491DEFAULT_DOC: Use udp_incoming_address or an address selected by the operating system.
8492DOC_START
8493 udp_outgoing_address is used for UDP packets sent out to other
8494 caches.
8495
8496 The default behavior is to not bind to any specific address.
8497
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
8501 caches.
8502
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
8508 NOTE, udp_incoming_address and udp_outgoing_address can not
8509 have the same value since they both use the same port.
8510DOC_END
8511
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
8527NAME: minimum_direct_hops
8528TYPE: int
8529DEFAULT: 4
8530LOC: Config.minDirectHops
8531DOC_START
8532 If using the ICMP pinging stuff, do direct fetches for sites
8533 which are no more than this many hops away.
8534DOC_END
8535
8536NAME: minimum_direct_rtt
8537COMMENT: (msec)
8538TYPE: int
8539DEFAULT: 400
8540LOC: Config.minDirectRtt
8541DOC_START
8542 If using the ICMP pinging stuff, do direct fetches for sites
8543 which are no more than this many rtt milliseconds away.
8544DOC_END
8545
8546NAME: netdb_low
8547TYPE: int
8548DEFAULT: 900
8549LOC: Config.Netdb.low
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
8560
8561NAME: netdb_high
8562TYPE: int
8563DEFAULT: 1000
8564LOC: Config.Netdb.high
8565DOC_START
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.
8574DOC_END
8575
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
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
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
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
8616NAME: icp_query_timeout
8617COMMENT: (msec)
8618DEFAULT: 0
8619DEFAULT_DOC: Dynamic detection.
8620TYPE: int
8621LOC: Config.Timeout.icp_query
8622DOC_START
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:
8629
8630 icp_query_timeout 2000
8631DOC_END
8632
8633NAME: maximum_icp_query_timeout
8634COMMENT: (msec)
8635DEFAULT: 2000
8636TYPE: int
8637LOC: Config.Timeout.icp_query_max
8638DOC_START
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.
8645DOC_END
8646
8647NAME: minimum_icp_query_timeout
8648COMMENT: (msec)
8649DEFAULT: 5
8650TYPE: int
8651LOC: Config.Timeout.icp_query_min
8652DOC_START
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.
8660DOC_END
8661
8662NAME: background_ping_rate
8663COMMENT: time-units
8664TYPE: time_t
8665DEFAULT: 10 seconds
8666LOC: Config.backgroundPingRate
8667DOC_START
8668 Controls how often the ICP pings are sent to siblings that
8669 have background-ping set.
8670DOC_END
8671
8672COMMENT_START
8673 MULTICAST ICP OPTIONS
8674 -----------------------------------------------------------------------------
8675COMMENT_END
8676
8677NAME: mcast_groups
8678TYPE: wordlist
8679LOC: Config.mcast_group_list
8680DEFAULT: none
8681DOC_START
8682 This tag specifies a list of multicast groups which your server
8683 should join to receive multicasted ICP queries.
8684
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.
8692
8693 You must be very careful to NOT use a multicast address which
8694 is already in use by another group of caches.
8695
8696 If you are unsure about multicast, please read the Multicast
8697 chapter in the Squid FAQ (http://www.squid-cache.org/FAQ/).
8698
8699 Usage: mcast_groups 239.128.16.128 224.0.1.20
8700
8701 By default, Squid doesn't listen on any multicast groups.
8702DOC_END
8703
8704NAME: mcast_miss_addr
8705IFDEF: MULTICAST_MISS_STREAM
8706TYPE: address
8707LOC: Config.mcast_miss.addr
8708DEFAULT: no_addr
8709DEFAULT_DOC: disabled.
8710DOC_START
8711 If you enable this option, every "cache miss" URL will
8712 be sent out on the specified multicast address.
8713
8714 Do not enable this option unless you are are absolutely
8715 certain you understand what you are doing.
8716DOC_END
8717
8718NAME: mcast_miss_ttl
8719IFDEF: MULTICAST_MISS_STREAM
8720TYPE: u_short
8721LOC: Config.mcast_miss.ttl
8722DEFAULT: 16
8723DOC_START
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
8728
8729NAME: mcast_miss_port
8730IFDEF: MULTICAST_MISS_STREAM
8731TYPE: u_short
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
8738
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
8748
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.
8760DOC_END
8761
8762COMMENT_START
8763 INTERNAL ICON OPTIONS
8764 -----------------------------------------------------------------------------
8765COMMENT_END
8766
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
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
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
8811DEFAULT: none
8812DEFAULT_DOC: Send error pages in the clients preferred language
8813DOC_START
8814 If you wish to create your own versions of the default
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.
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
8824 language that Squid does not currently provide please consider
8825 contributing your translation back to the project.
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
8837DEFAULT_DOC: Generate English language pages.
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
8849DOC_END
8850
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
8862 of its error page translations.
8863DOC_END
8864
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
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
8909 or deny_info TCP_RESET acl
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.
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.
8924
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
8928
8929 By default Squid will send "403 Forbidden". A different 4xx or 5xx
8930 may be specified by prefixing the file name with the code and a colon.
8931 e.g. 404:ERR_CUSTOM_ACCESS_DENIED
8932
8933 Alternatively you can tell Squid to reset the TCP connection
8934 by specifying TCP_RESET.
8935
8936 Or you can specify an error URL or URL pattern. The browsers will
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/
8941
8942 URL FORMAT TAGS:
8943 %a - username (if available. Password NOT included)
8944 %A - Local listening IP address the client connection was connected to
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
8952 %O - Unescaped message result from external ACL helper
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
8962 %x - Error name
8963 %% - Literal percent (%) code
8964
8965DOC_END
8966
8967COMMENT_START
8968 OPTIONS INFLUENCING REQUEST FORWARDING
8969 -----------------------------------------------------------------------------
8970COMMENT_END
8971
8972NAME: nonhierarchical_direct
8973TYPE: onoff
8974LOC: Config.onoff.nonhierarchical_direct
8975DEFAULT: on
8976DOC_START
8977 By default, Squid will send any non-hierarchical requests
8978 (not cacheable request type) direct to origin servers.
8979
8980 When this is set to "off", Squid will prefer to send these
8981 requests to parents.
8982
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.
8986
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.
8990DOC_END
8991
8992NAME: prefer_direct
8993TYPE: onoff
8994LOC: Config.onoff.prefer_direct
8995DEFAULT: off
8996DOC_START
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.
9000
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.
9008DOC_END
9009
9010NAME: cache_miss_revalidate
9011COMMENT: on|off
9012TYPE: onoff
9013DEFAULT: on
9014LOC: Config.onoff.cache_miss_revalidate
9015DOC_START
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.
9026
9027 When set to 'on' (default), Squid will pass all client If-* headers
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.
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
9033 the request sent to the server. This requests a 200 status response
9034 from the server to create a new cache entry with.
9035DOC_END
9036
9037NAME: always_direct
9038TYPE: acl_access
9039LOC: Config.accessList.AlwaysDirect
9040DEFAULT: none
9041DEFAULT_DOC: Prevent any cache_peer being used for this request.
9042DOC_START
9043 Usage: always_direct allow|deny [!]aclname ...
9044
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:
9050
9051 acl local-servers dstdomain my.domain.net
9052 always_direct allow local-servers
9053
9054 To always forward FTP requests directly, use
9055
9056 acl FTP proto FTP
9057 always_direct allow FTP
9058
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:
9064
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
9069
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.
9074
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
9077 the replies see the 'cache' directive.
9078
9079 This clause supports both fast and slow acl types.
9080 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
9081DOC_END
9082
9083NAME: never_direct
9084TYPE: acl_access
9085LOC: Config.accessList.NeverDirect
9086DEFAULT: none
9087DEFAULT_DOC: Allow DNS results to be used for this request.
9088DOC_START
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
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
9112 This clause supports both fast and slow acl types.
9113 See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
9114DOC_END
9115
9116COMMENT_START
9117 ADVANCED NETWORKING OPTIONS
9118 -----------------------------------------------------------------------------
9119COMMENT_END
9120
9121NAME: incoming_udp_average incoming_icp_average
9122TYPE: int
9123DEFAULT: 6
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
9130
9131NAME: incoming_tcp_average incoming_http_average
9132TYPE: int
9133DEFAULT: 4
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
9140
9141NAME: incoming_dns_average
9142TYPE: int
9143DEFAULT: 4
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
9150
9151NAME: min_udp_poll_cnt min_icp_poll_cnt
9152TYPE: int
9153DEFAULT: 8
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
9160
9161NAME: min_dns_poll_cnt
9162TYPE: int
9163DEFAULT: 8
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
9170
9171NAME: min_tcp_poll_cnt min_http_poll_cnt
9172TYPE: int
9173DEFAULT: 8
9174LOC: Config.comm_incoming.tcp.min_poll
9175DOC_START
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
9182TYPE: string
9183DEFAULT: none
9184LOC: Config.accept_filter
9185DOC_START
9186 FreeBSD:
9187
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
9193 to Squid until a full HTTP request has been received.
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:
9201
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.
9207EXAMPLE:
9208# FreeBSD
9209accept_filter httpready
9210# Linux
9211accept_filter data
9212DOC_END
9213
9214NAME: client_ip_max_connections
9215TYPE: int
9216LOC: Config.client_ip_max_connections
9217DEFAULT: -1
9218DEFAULT_DOC: No limit.
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
9224 Note that this is a global limit. It affects all HTTP, HTCP, and FTP
9225 connections from the client. For finer control use the ACL access controls.
9226
9227 Requires client_db to be enabled (the default).
9228
9229 WARNING: This may noticeably slow down traffic received via external proxies
9230 or NAT devices and cause them to rebound error messages back to their clients.
9231DOC_END
9232
9233NAME: tcp_recv_bufsize
9234COMMENT: (bytes)
9235TYPE: b_size_t
9236DEFAULT: 0 bytes
9237DEFAULT_DOC: Use operating system TCP defaults.
9238LOC: Config.tcpRcvBufsz
9239DOC_START
9240 Size of receive buffer to set for TCP sockets. Probably just
9241 as easy to change your kernel's default.
9242 Omit from squid.conf to use the default buffer size.
9243DOC_END
9244
9245COMMENT_START
9246 ICAP OPTIONS
9247 -----------------------------------------------------------------------------
9248COMMENT_END
9249
9250NAME: icap_enable
9251TYPE: onoff
9252IFDEF: ICAP_CLIENT
9253COMMENT: on|off
9254LOC: Adaptation::Icap::TheConfig.onoff
9255DEFAULT: off
9256DOC_START
9257 If you want to enable the ICAP module support, set this to on.
9258DOC_END
9259
9260NAME: icap_connect_timeout
9261TYPE: time_t
9262DEFAULT: none
9263LOC: Adaptation::Icap::TheConfig.connect_timeout_raw
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
9279DEFAULT_DOC: Use read_timeout.
9280LOC: Adaptation::Icap::TheConfig.io_timeout_raw
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.
9287DOC_END
9288
9289NAME: icap_service_failure_limit
9290COMMENT: limit [in memory-depth time-units]
9291TYPE: icap_service_failure_limit
9292IFDEF: ICAP_CLIENT
9293LOC: Adaptation::Icap::TheConfig
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
9300 OPTIONS.
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.
9305
9306 Squid forgets ICAP service failures older than the specified
9307 value of memory-depth. The memory fading algorithm
9308 is approximate because Squid does not remember individual
9309 errors but groups them instead, splitting the option
9310 value into ten time slots of equal length.
9311
9312 When memory-depth is 0 and by default this option has no
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
9322DOC_END
9323
9324NAME: icap_service_revival_delay
9325TYPE: int
9326IFDEF: ICAP_CLIENT
9327LOC: Adaptation::Icap::TheConfig.service_revival_delay
9328DEFAULT: 180
9329DOC_START
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.
9334
9335 The actual delay cannot be smaller than the hardcoded minimum
9336 delay of 30 seconds.
9337DOC_END
9338
9339NAME: icap_preview_enable
9340TYPE: onoff
9341IFDEF: ICAP_CLIENT
9342COMMENT: on|off
9343LOC: Adaptation::Icap::TheConfig.preview_enable
9344DEFAULT: on
9345DOC_START
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
9348 or even without receiving the body at all. In some environments,
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
9359DOC_END
9360
9361NAME: icap_preview_size
9362TYPE: int
9363IFDEF: ICAP_CLIENT
9364LOC: Adaptation::Icap::TheConfig.preview_size
9365DEFAULT: -1
9366DEFAULT_DOC: No preview sent.
9367DOC_START
9368 The default size of preview data to be sent to the ICAP server.
9369 This value might be overwritten on a per server basis by OPTIONS requests.
9370DOC_END
9371
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
9386 negotiation correctly even if they do not support the extension, but
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
9394NAME: icap_default_options_ttl
9395TYPE: int
9396IFDEF: ICAP_CLIENT
9397LOC: Adaptation::Icap::TheConfig.default_options_ttl
9398DEFAULT: 60
9399DOC_START
9400 The default TTL value for ICAP OPTIONS responses that don't have
9401 an Options-TTL header.
9402DOC_END
9403
9404NAME: icap_persistent_connections
9405TYPE: onoff
9406IFDEF: ICAP_CLIENT
9407COMMENT: on|off
9408LOC: Adaptation::Icap::TheConfig.reuse_connections
9409DEFAULT: on
9410DOC_START
9411 Whether or not Squid should use persistent connections to
9412 an ICAP server.
9413DOC_END
9414
9415NAME: adaptation_send_client_ip icap_send_client_ip
9416TYPE: onoff
9417IFDEF: USE_ADAPTATION
9418COMMENT: on|off
9419LOC: Adaptation::Config::send_client_ip
9420DEFAULT: off
9421DOC_START
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
9427DOC_END
9428
9429NAME: adaptation_send_username icap_send_client_username
9430TYPE: onoff
9431IFDEF: USE_ADAPTATION
9432COMMENT: on|off
9433LOC: Adaptation::Config::send_username
9434DEFAULT: off
9435DOC_START
9436 This sends authenticated HTTP client username (if available) to
9437 the adaptation service.
9438
9439 For ICAP, the username value is encoded based on the
9440 icap_client_username_encode option and is sent using the header
9441 specified by the icap_client_username_header option.
9442DOC_END
9443
9444NAME: icap_client_username_header
9445TYPE: string
9446IFDEF: ICAP_CLIENT
9447LOC: Adaptation::Icap::TheConfig.client_username_header
9448DEFAULT: X-Client-Username
9449DOC_START
9450 ICAP request header name to use for adaptation_send_username.
9451DOC_END
9452
9453NAME: icap_client_username_encode
9454TYPE: onoff
9455IFDEF: ICAP_CLIENT
9456COMMENT: on|off
9457LOC: Adaptation::Icap::TheConfig.client_username_encode
9458DEFAULT: off
9459DOC_START
9460 Whether to base64 encode the authenticated client username.
9461DOC_END
9462
9463NAME: icap_service
9464TYPE: icap_service_type
9465IFDEF: ICAP_CLIENT
9466LOC: Adaptation::Icap::TheConfig
9467DEFAULT: none
9468DOC_START
9469 Defines a single ICAP service using the following format:
9470
9471 icap_service id vectoring_point uri [option ...]
9472
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.
9477
9478 vectoring_point: reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache
9479 This specifies at which point of transaction processing the
9480 ICAP service should be activated. *_postcache vectoring points
9481 are not yet supported.
9482
9483 uri: icap://servername:port/servicepath
9484 ICAP server and service location.
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).
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
9498 To activate a service, use the adaptation_access directive. To group
9499 services, use adaptation_service_chain and adaptation_service_set.
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.
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.
9527
9528 Routing is not allowed by default: the ICAP X-Next-Services
9529 response header is ignored.
9530
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
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
9542 * force: proceed, ignoring the Max-Connections limit
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".
9550
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
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
9567 ==== ICAPS / TLS OPTIONS ====
9568
9569 These options are used for Secure ICAP (icaps://....) services only.
9570
9571 tls-cert=/path/to/ssl/certificate
9572 A client X.509 certificate to use when connecting to
9573 this ICAP server.
9574
9575 tls-key=/path/to/ssl/key
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.
9582
9583 tls-cipher=... The list of valid TLS/SSL ciphers to use when connecting
9584 to this icap server.
9585
9586 tls-min-version=1.N
9587 The minimum TLS protocol version to permit. To control
9588 SSLv3 use the tls-options= parameter.
9589 Supported Values: 1.0 (default), 1.1, 1.2
9590
9591 tls-options=... Specify various OpenSSL library options:
9592
9593 NO_SSLv3 Disallow the use of SSLv3
9594
9595 SINGLE_DH_USE
9596 Always create a new key when using
9597 temporary/ephemeral DH key exchanges
9598
9599 ALL Enable various bug workarounds
9600 suggested as "harmless" by OpenSSL
9601 Be warned that this reduces SSL/TLS
9602 strength to some attacks.
9603
9604 See the OpenSSL SSL_CTX_set_options documentation for a
9605 more complete list. Options relevant only to SSLv2 are
9606 not supported.
9607
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
9612 using the tls-default-ca=off flag.
9613 May be repeated to load multiple files.
9614
9615 tls-capath=... A directory containing additional CA certificates to
9616 use when verifying the icap server certificate.
9617 Requires OpenSSL or LibreSSL.
9618
9619 tls-crlfile=... A certificate revocation list file to use when
9620 verifying the icap server certificate.
9621
9622 tls-flags=... Specify various flags modifying the Squid TLS implementation:
9623
9624 DONT_VERIFY_PEER
9625 Accept certificates even if they fail to
9626 verify.
9627 DONT_VERIFY_DOMAIN
9628 Don't verify the icap server certificate
9629 matches the server name
9630
9631 tls-default-ca[=off]
9632 Whether to use the system Trusted CAs. Default is ON.
9633
9634 tls-domain= The icap server name as advertised in it's certificate.
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
9639 Older icap_service format without optional named parameters is
9640 deprecated but supported for backward compatibility.
9641
9642Example:
9643icap_service svcBlocker reqmod_precache icap://icap1.mydomain.net:1344/reqmod bypass=0
9644icap_service svcLogger reqmod_precache icaps://icap2.mydomain.net:11344/reqmod routing=on
9645DOC_END
9646
9647NAME: icap_class
9648TYPE: icap_class_type
9649IFDEF: ICAP_CLIENT
9650LOC: none
9651DEFAULT: none
9652DOC_START
9653 This deprecated option was documented to define an ICAP service
9654 chain, even though it actually defined a set of similar, redundant
9655 services, and the chains were not supported.
9656
9657 To define a set of redundant services, please use the
9658 adaptation_service_set directive. For service chains, use
9659 adaptation_service_chain.
9660DOC_END
9661
9662NAME: icap_access
9663TYPE: icap_access_type
9664IFDEF: ICAP_CLIENT
9665LOC: none
9666DEFAULT: none
9667DOC_START
9668 This option is deprecated. Please use adaptation_access, which
9669 has the same ICAP functionality, but comes with better
9670 documentation, and eCAP support.
9671DOC_END
9672
9673COMMENT_START
9674 eCAP OPTIONS
9675 -----------------------------------------------------------------------------
9676COMMENT_END
9677
9678NAME: ecap_enable
9679TYPE: onoff
9680IFDEF: USE_ECAP
9681COMMENT: on|off
9682LOC: Adaptation::Ecap::TheConfig.onoff
9683DEFAULT: off
9684DOC_START
9685 Controls whether eCAP support is enabled.
9686DOC_END
9687
9688NAME: ecap_service
9689TYPE: ecap_service_type
9690IFDEF: USE_ECAP
9691LOC: Adaptation::Ecap::TheConfig
9692DEFAULT: none
9693DOC_START
9694 Defines a single eCAP service
9695
9696 ecap_service id vectoring_point uri [option ...]
9697
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
9704 This specifies at which point of transaction processing the
9705 eCAP service should be activated. *_postcache vectoring points
9706 are not yet supported.
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
9714 To activate a service, use the adaptation_access directive. To group
9715 services, use adaptation_service_chain and adaptation_service_set.
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
9724 was not enabled. No all eCAP errors can be bypassed.
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
9727 HTTP client.
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
9741 connection-encryption=on|off
9742 Determines the eCAP service effect on the connections_encrypted
9743 ACL.
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
9750 Older ecap_service format without optional named parameters is
9751 deprecated but supported for backward compatibility.
9752
9753
9754Example:
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
9757DOC_END
9758
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
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
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.
9793
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.
9796
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
9813
9814Example:
9815adaptation_service_set svcBlocker urlFilterPrimary urlFilterBackup
9816adaptation service_set svcLogger loggerLocal loggerRemote
9817DOC_END
9818
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
9858NAME: adaptation_access
9859TYPE: adaptation_access_type
9860IFDEF: USE_ADAPTATION
9861LOC: none
9862DEFAULT: none
9863DEFAULT_DOC: Allow, unless rules exist in squid.conf.
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
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
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
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
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.
9939
9940 Squid will store and forward the set entry to subsequent adaptation
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
9950NAME: adaptation_meta
9951TYPE: note
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.
9960
9961 The addition of a meta header is ACL-driven:
9962 adaptation_meta name value [!]aclname ...
9963
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
9966 lists match for a given header name, no such header is added. For
9967 example:
9968
9969 # do not debug transactions except for those that need debugging
9970 adaptation_meta X-Debug 1 needs_debugging
9971
9972 # log all transactions except for those that must remain secret
9973 adaptation_meta X-Log 1 !keep_secret
9974
9975 # mark transactions from users in the "G 1" group
9976 adaptation_meta X-Authenticated-Groups "G 1" authed_as_G1
9977
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\""
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).
9989DOC_END
9990
9991NAME: icap_retry
9992TYPE: acl_access
9993IFDEF: ICAP_CLIENT
9994LOC: Adaptation::Icap::TheConfig.repeat
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
10015DEFAULT_DOC: No retries are allowed.
10016DOC_START
10017 Limits the number of retries allowed.
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
10027COMMENT_START
10028 DNS OPTIONS
10029 -----------------------------------------------------------------------------
10030COMMENT_END
10031
10032NAME: check_hostnames
10033TYPE: onoff
10034DEFAULT: off
10035LOC: Config.onoff.check_hostnames
10036DOC_START
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.
10040DOC_END
10041
10042NAME: allow_underscore
10043TYPE: onoff
10044DEFAULT: on
10045LOC: Config.onoff.allow_underscore
10046DOC_START
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.
10051DOC_END
10052
10053NAME: dns_retransmit_interval
10054TYPE: time_msec
10055DEFAULT: 5 seconds
10056LOC: Config.Timeout.idns_retransmit
10057DOC_START
10058 Initial retransmit interval for DNS queries. The interval is
10059 doubled each time all configured DNS servers have been tried.
10060DOC_END
10061
10062NAME: dns_timeout
10063TYPE: time_msec
10064DEFAULT: 30 seconds
10065LOC: Config.Timeout.idns_query
10066DOC_START
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.
10070DOC_END
10071
10072NAME: dns_packet_max
10073TYPE: b_ssize_t
10074DEFAULT_DOC: EDNS disabled
10075DEFAULT: none
10076LOC: Config.dns.packet_max
10077DOC_START
10078 Maximum number of bytes packet size to advertise via EDNS.
10079 Set to "none" to disable EDNS large packet support.
10080
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.
10086
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.
10090
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
10100NAME: dns_defnames
10101COMMENT: on|off
10102TYPE: onoff
10103DEFAULT: off
10104DEFAULT_DOC: Search for single-label domain names is disabled.
10105LOC: Config.onoff.res_defnames
10106DOC_START
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.
10111DOC_END
10112
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
10126NAME: dns_nameservers
10127TYPE: SBufList
10128DEFAULT: none
10129DEFAULT_DOC: Use operating system definitions
10130LOC: Config.dns.nameservers
10131DOC_START
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.
10135
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.
10140
10141 Example: dns_nameservers 10.0.0.1 192.172.0.4
10142DOC_END
10143
10144NAME: hosts_file
10145TYPE: string
10146DEFAULT: @DEFAULT_HOSTS@
10147LOC: Config.etcHostsPath
10148DOC_START
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
10160
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.
10165
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.
10171DOC_END
10172
10173NAME: append_domain
10174TYPE: string
10175LOC: Config.appendDomain
10176DEFAULT: none
10177DEFAULT_DOC: Use operating system definitions
10178DOC_START
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
10188DOC_END
10189
10190NAME: ignore_unknown_nameservers
10191TYPE: onoff
10192LOC: Config.onoff.ignore_unknown_nameservers
10193DEFAULT: on
10194DOC_START
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'.
10200DOC_END
10201
10202NAME: ipcache_size
10203COMMENT: (number of entries)
10204TYPE: int
10205DEFAULT: 1024
10206LOC: Config.ipcache.size
10207DOC_START
10208 Maximum number of DNS IP cache entries.
10209DOC_END
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
10236COMMENT_START
10237 MISCELLANEOUS
10238 -----------------------------------------------------------------------------
10239COMMENT_END
10240
10241NAME: configuration_includes_quoted_values
10242COMMENT: on|off
10243TYPE: configuration_includes_quoted_values
10244DEFAULT: off
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
10254NAME: memory_pools
10255COMMENT: on|off
10256TYPE: onoff
10257DEFAULT: on
10258LOC: Config.onoff.mem_pools
10259DOC_START
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.
10264DOC_END
10265
10266NAME: memory_pools_limit
10267COMMENT: (bytes)
10268TYPE: b_int64_t
10269DEFAULT: 5 MB
10270LOC: Config.MemPools.limit
10271DOC_START
10272 Used only with memory_pools on:
10273 memory_pools_limit 50 MB
10274
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.
10282
10283 If set to none, Squid will keep all memory it can. That is, there
10284 will be no limit on the total amount of memory used for safe-keeping.
10285
10286 To disable memory allocation optimization, do not set
10287 memory_pools_limit to 0 or none. Set memory_pools to "off" instead.
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.
10293DOC_END
10294
10295NAME: forwarded_for
10296COMMENT: on|off|transparent|truncate|delete
10297TYPE: string
10298DEFAULT: on
10299LOC: opt_forwarded_for
10300DOC_START
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:
10303
10304 X-Forwarded-For: 192.1.2.3
10305
10306 If set to "off", it will appear as
10307
10308 X-Forwarded-For: unknown
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
10317 X-Forwarded-For entries, and place the client IP as the sole entry.
10318DOC_END
10319
10320NAME: cachemgr_passwd
10321TYPE: cachemgrpasswd
10322DEFAULT: none
10323DEFAULT_DOC: No password. Actions which require password are denied.
10324LOC: Config.passwd_list
10325DOC_START
10326 Specify passwords for cachemgr operations.
10327
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
10359 reconfigure *
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
10383DOC_END
10384
10385NAME: client_db
10386COMMENT: on|off
10387TYPE: onoff
10388DEFAULT: on
10389LOC: Config.onoff.client_db
10390DOC_START
10391 If you want to disable collecting per-client statistics,
10392 turn off client_db here.
10393DOC_END
10394
10395NAME: refresh_all_ims
10396COMMENT: on|off
10397TYPE: onoff
10398DEFAULT: off
10399LOC: Config.onoff.refresh_all_ims
10400DOC_START
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.
10406
10407 By default (off), squid may return a Not Modified response
10408 based on the age of the cached version.
10409DOC_END
10410
10411NAME: reload_into_ims
10412IFDEF: USE_HTTP_VIOLATIONS
10413COMMENT: on|off
10414TYPE: onoff
10415DEFAULT: off
10416LOC: Config.onoff.reload_into_ims
10417DOC_START
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.
10425DOC_END
10426
10427NAME: connect_retries
10428TYPE: int
10429LOC: Config.connect_retries
10430DEFAULT: 0
10431DEFAULT_DOC: Do not retry failed connections.
10432DOC_START
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.
10439
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).
10442
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.
10447
10448 See also: connect_timeout, forward_timeout, icap_connect_timeout,
10449 ident_timeout, and forward_max_tries.
10450DOC_END
10451
10452NAME: retry_on_error
10453TYPE: onoff
10454LOC: Config.retry.onerror
10455DEFAULT: off
10456DOC_START
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.
10461
10462 This is mainly useful if you are in a complex cache hierarchy to
10463 work around access control errors.
10464
10465 NOTE: This retry will attempt to find another working destination.
10466 Which is different from the server which just failed.
10467DOC_END
10468
10469NAME: as_whois_server
10470TYPE: string
10471LOC: Config.as_whois_server
10472DEFAULT: whois.ra.net
10473DOC_START
10474 WHOIS server to query for AS numbers. NOTE: AS numbers are
10475 queried only when Squid starts up, not for every request.
10476DOC_END
10477
10478NAME: offline_mode
10479TYPE: onoff
10480LOC: Config.onoff.offline
10481DEFAULT: off
10482DOC_START
10483 Enable this option and Squid will never try to validate cached
10484 objects.
10485DOC_END
10486
10487NAME: uri_whitespace
10488TYPE: uri_whitespace
10489LOC: Config.uri_whitespace
10490DEFAULT: strip
10491DOC_START
10492 What to do with requests that have whitespace characters in the
10493 URI. Options:
10494
10495 strip: The whitespace characters are stripped out of the URL.
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
10500 deny: The request is denied. The user receives an "Invalid
10501 Request" message.
10502 This is the behaviour recommended by RFC2616 for safe
10503 handling of HTTP request URL.
10504
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.
10509 Note this may be considered a violation of RFC2616
10510 request parsing where whitespace is prohibited in the
10511 URL field.
10512
10513 encode: The request is allowed and the whitespace characters are
10514 encoded according to RFC1738.
10515
10516 chop: The request is allowed and the URI is chopped at the
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.
10522DOC_END
10523
10524NAME: chroot
10525TYPE: string
10526LOC: Config.chroot_dir
10527DEFAULT: none
10528DOC_START
10529 Specifies a directory where Squid should do a chroot() while
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.
10534DOC_END
10535
10536NAME: pipeline_prefetch
10537TYPE: pipelinePrefetch
10538LOC: Config.pipeline_max_prefetch
10539DEFAULT: 0
10540DEFAULT_DOC: Do not pre-parse pipelined requests.
10541DOC_START
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.
10548
10549 Defaults to 0 (off) for bandwidth management and access logging
10550 reasons.
10551
10552 NOTE: pipelining requires persistent connections to clients.
10553
10554 WARNING: pipelining breaks NTLM and Negotiate/Kerberos authentication.
10555DOC_END
10556
10557NAME: high_response_time_warning
10558TYPE: int
10559COMMENT: (msec)
10560LOC: Config.warnings.high_rptm
10561DEFAULT: 0
10562DEFAULT_DOC: disabled.
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.
10567DOC_END
10568
10569NAME: high_page_fault_warning
10570TYPE: int
10571LOC: Config.warnings.high_pf
10572DEFAULT: 0
10573DEFAULT_DOC: disabled.
10574DOC_START
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
10580
10581NAME: high_memory_warning
10582TYPE: b_size_t
10583LOC: Config.warnings.high_memory
10584IFDEF: HAVE_MSTATS&&HAVE_GNUMALLOC_H
10585DEFAULT: 0 KB
10586DEFAULT_DOC: disabled.
10587DOC_START
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
10590 the administrators attention.
10591DOC_END
10592# TODO: link high_memory_warning to mempools?
10593
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.
10610DOC_END
10611
10612NAME: windows_ipaddrchangemonitor
10613IFDEF: _SQUID_WINDOWS_
10614COMMENT: on|off
10615TYPE: onoff
10616DEFAULT: on
10617LOC: Config.onoff.WIN32_IpAddrChangeMonitor
10618DOC_START
10619 On Windows Squid by default will monitor IP address changes and will
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
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
10636NAME: max_filedescriptors max_filedesc
10637TYPE: int
10638DEFAULT: 0
10639DEFAULT_DOC: Use operating system soft limit set by ulimit.
10640LOC: Config.max_filedescriptors
10641DOC_START
10642 Set the maximum number of filedescriptors, either below the
10643 operating system default or up to the hard limit.
10644
10645 Remove from squid.conf to inherit the current ulimit soft
10646 limit setting.
10647
10648 Note: Changing this requires a restart of Squid. Also
10649 not all I/O types supports large values (eg on Windows).
10650DOC_END
10651
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.
10662
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!
10672
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
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
10777
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
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
10911EOF