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