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