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