-
Notifications
You must be signed in to change notification settings - Fork 0
/
squid.conf
9156 lines (8717 loc) · 388 KB
/
squid.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# WELCOME TO SQUID 5.7
# ----------------------------
#
# This is the documentation for the Squid configuration file.
# This documentation can also be found online at:
# http://www.squid-cache.org/Doc/config/
#
# You may wish to look at the Squid home page and wiki for the
# FAQ and other documentation:
# http://www.squid-cache.org/
# http://wiki.squid-cache.org/SquidFaq
# http://wiki.squid-cache.org/ConfigExamples
#
# This documentation shows what the defaults for various directives
# happen to be. If you don't need to change the default, you should
# leave the line out of your squid.conf in most cases.
#
# In some cases "none" refers to no default setting at all,
# while in other cases it refers to the value of the option
# - the comments for that keyword indicate if this is the case.
#
# Configuration options can be included using the "include" directive.
# Include takes a list of files to include. Quoting and wildcards are
# supported.
#
# For example,
#
# include /path/to/included/file/squid.acl.config
#
# Includes can be nested up to a hard-coded depth of 16 levels.
# This arbitrary restriction is to prevent recursive include references
# from causing Squid entering an infinite loop whilst trying to load
# configuration files.
#
# Values with byte units
#
# Squid accepts size units on some size related directives. All
# such directives are documented with a default value displaying
# a unit.
#
# Units accepted by Squid are:
# bytes - byte
# KB - Kilobyte (1024 bytes)
# MB - Megabyte
# GB - Gigabyte
#
# Values with time units
#
# Time-related directives marked with either "time-units" or
# "time-units-small" accept a time unit. The supported time units are:
#
# nanosecond (time-units-small only)
# microsecond (time-units-small only)
# millisecond
# second
# minute
# hour
# day
# week
# fortnight
# month - 30 days
# year - 31557790080 milliseconds (just over 365 days)
# decade
#
# Values with spaces, quotes, and other special characters
#
# Squid supports directive parameters with spaces, quotes, and other
# special characters. Surround such parameters with "double quotes". Use
# the configuration_includes_quoted_values directive to enable or
# disable that support.
#
# Squid supports reading configuration option parameters from external
# files using the syntax:
# parameters("/path/filename")
# For example:
# acl allowlist dstdomain parameters("/etc/squid/allowlist.txt")
#
# Conditional configuration
#
# If-statements can be used to make configuration directives
# depend on conditions:
#
# if <CONDITION>
# ... regular configuration directives ...
# [else
# ... regular configuration directives ...]
# endif
#
# The else part is optional. The keywords "if", "else", and "endif"
# must be typed on their own lines, as if they were regular
# configuration directives.
#
# NOTE: An else-if condition is not supported.
#
# These individual conditions types are supported:
#
# true
# Always evaluates to true.
# false
# Always evaluates to false.
# <integer> = <integer>
# Equality comparison of two integer numbers.
#
#
# SMP-Related Macros
#
# The following SMP-related preprocessor macros can be used.
#
# ${process_name} expands to the current Squid process "name"
# (e.g., squid1, squid2, or cache1).
#
# ${process_number} expands to the current Squid process
# identifier, which is an integer number (e.g., 1, 2, 3) unique
# across all Squid processes of the current service instance.
#
# ${service_name} expands into the current Squid service instance
# name identifier which is provided by -n on the command line.
#
# Logformat Macros
#
# Logformat macros can be used in many places outside of the logformat
# directive. In theory, all of the logformat codes can be used as %macros,
# where they are supported. In practice, a %macro expands as a dash (-) when
# the transaction does not yet have enough information and a value is needed.
#
# There is no definitive list of what tokens are available at the various
# stages of the transaction.
#
# And some information may already be available to Squid but not yet
# committed where the macro expansion code can access it (report
# such instances!). The macro will be expanded into a single dash
# ('-') in such cases. Not all macros have been tested.
#
# TAG: broken_vary_encoding
# This option is not yet supported by Squid-3.
#Default:
# none
# TAG: cache_vary
# This option is not yet supported by Squid-3.
#Default:
# none
# TAG: error_map
# This option is not yet supported by Squid-3.
#Default:
# none
# TAG: external_refresh_check
# This option is not yet supported by Squid-3.
#Default:
# none
# TAG: location_rewrite_program
# This option is not yet supported by Squid-3.
#Default:
# none
# TAG: refresh_stale_hit
# This option is not yet supported by Squid-3.
#Default:
# none
# TAG: dns_v4_first
# Remove this line. Squid no longer supports preferential treatment of DNS A records.
#Default:
# none
# TAG: cache_peer_domain
# Replace with dstdomain ACLs and cache_peer_access.
#Default:
# none
# TAG: ie_refresh
# Remove this line. The behaviour enabled by this is no longer needed.
#Default:
# none
# TAG: sslproxy_cafile
# Remove this line. Use tls_outgoing_options cafile= instead.
#Default:
# none
# TAG: sslproxy_capath
# Remove this line. Use tls_outgoing_options capath= instead.
#Default:
# none
# TAG: sslproxy_cipher
# Remove this line. Use tls_outgoing_options cipher= instead.
#Default:
# none
# TAG: sslproxy_client_certificate
# Remove this line. Use tls_outgoing_options cert= instead.
#Default:
# none
# TAG: sslproxy_client_key
# Remove this line. Use tls_outgoing_options key= instead.
#Default:
# none
# TAG: sslproxy_flags
# Remove this line. Use tls_outgoing_options flags= instead.
#Default:
# none
# TAG: sslproxy_options
# Remove this line. Use tls_outgoing_options options= instead.
#Default:
# none
# TAG: sslproxy_version
# Remove this line. Use tls_outgoing_options options= instead.
#Default:
# none
# TAG: hierarchy_stoplist
# Remove this line. Use always_direct or cache_peer_access ACLs instead if you need to prevent cache_peer use.
#Default:
# none
# TAG: log_access
# Remove this line. Use acls with access_log directives to control access logging
#Default:
# none
# TAG: log_icap
# Remove this line. Use acls with icap_log directives to control icap logging
#Default:
# none
# TAG: ignore_ims_on_miss
# Remove this line. The HTTP/1.1 feature is now configured by 'cache_miss_revalidate'.
#Default:
# none
# TAG: balance_on_multiple_ip
# Remove this line. Squid performs a 'Happy Eyeballs' algorithm, this multiple-IP algorithm is not longer relevant.
#Default:
# none
# TAG: chunked_request_body_max_size
# Remove this line. Squid is now HTTP/1.1 compliant.
#Default:
# none
# TAG: dns_v4_fallback
# Remove this line. Squid performs a 'Happy Eyeballs' algorithm, the 'fallback' algorithm is no longer relevant.
#Default:
# none
# TAG: emulate_httpd_log
# Replace this with an access_log directive using the format 'common' or 'combined'.
#Default:
# none
# TAG: forward_log
# Use a regular access.log with ACL limiting it to MISS events.
#Default:
# none
# TAG: ftp_list_width
# Remove this line. Configure FTP page display using the CSS controls in errorpages.css instead.
#Default:
# none
# TAG: ignore_expect_100
# Remove this line. The HTTP/1.1 feature is now fully supported by default.
#Default:
# none
# TAG: log_fqdn
# Remove this option from your config. To log FQDN use %>A in the log format.
#Default:
# none
# TAG: log_ip_on_direct
# Remove this option from your config. To log server or peer names use %<A in the log format.
#Default:
# none
# TAG: maximum_single_addr_tries
# Replaced by connect_retries. The behaviour has changed, please read the documentation before altering.
#Default:
# none
# TAG: referer_log
# Replace this with an access_log directive using the format 'referrer'.
#Default:
# none
# TAG: update_headers
# Remove this line. The feature is supported by default in storage types where update is implemented.
#Default:
# none
# TAG: url_rewrite_concurrency
# Remove this line. Set the 'concurrency=' option of url_rewrite_children instead.
#Default:
# none
# TAG: useragent_log
# Replace this with an access_log directive using the format 'useragent'.
#Default:
# none
# TAG: dns_testnames
# Remove this line. DNS is no longer tested on startup.
#Default:
# none
# TAG: extension_methods
# Remove this line. All valid methods for HTTP are accepted by default.
#Default:
# none
# TAG: zero_buffers
#Default:
# none
# TAG: incoming_rate
#Default:
# none
# TAG: server_http11
# Remove this line. HTTP/1.1 is supported by default.
#Default:
# none
# TAG: upgrade_http0.9
# Remove this line. ICY/1.0 streaming protocol is supported by default.
#Default:
# none
# TAG: zph_local
# Alter these entries. Use the qos_flows directive instead.
#Default:
# none
# TAG: header_access
# Since squid-3.0 replace with request_header_access or reply_header_access
# depending on whether you wish to match client requests or server replies.
#Default:
# none
# TAG: httpd_accel_no_pmtu_disc
# Since squid-3.0 use the 'disable-pmtu-discovery' flag on http_port instead.
#Default:
# none
# TAG: wais_relay_host
# Replace this line with 'cache_peer' configuration.
#Default:
# none
# TAG: wais_relay_port
# Replace this line with 'cache_peer' configuration.
#Default:
# none
# OPTIONS FOR SMP
# -----------------------------------------------------------------------------
# TAG: workers
# Number of main Squid processes or "workers" to fork and maintain.
# 0: "no daemon" mode, like running "squid -N ..."
# 1: "no SMP" mode, start one main Squid process daemon (default)
# N: start N main Squid process daemons (i.e., SMP mode)
#
# In SMP mode, each worker does nearly all what a single Squid daemon
# does (e.g., listen on http_port and forward HTTP requests).
#Default:
# SMP support disabled.
# TAG: cpu_affinity_map
# Usage: cpu_affinity_map process_numbers=P1,P2,... cores=C1,C2,...
#
# Sets 1:1 mapping between Squid processes and CPU cores. For example,
#
# cpu_affinity_map process_numbers=1,2,3,4 cores=1,3,5,7
#
# affects processes 1 through 4 only and places them on the first
# four even cores, starting with core #1.
#
# CPU cores are numbered starting from 1. Requires support for
# sched_getaffinity(2) and sched_setaffinity(2) system calls.
#
# Multiple cpu_affinity_map options are merged.
#
# See also: workers
#Default:
# Let operating system decide.
# TAG: shared_memory_locking on|off
# Whether to ensure that all required shared memory is available by
# "locking" that shared memory into RAM when Squid starts. The
# alternative is faster startup time followed by slightly slower
# performance and, if not enough RAM is actually available during
# runtime, mysterious crashes.
#
# SMP Squid uses many shared memory segments. These segments are
# brought into Squid memory space using an mmap(2) system call. During
# Squid startup, the mmap() call often succeeds regardless of whether
# the system has enough RAM. In general, Squid cannot tell whether the
# kernel applies this "optimistic" memory allocation policy (but
# popular modern kernels usually use it).
#
# Later, if Squid attempts to actually access the mapped memory
# regions beyond what the kernel is willing to allocate, the
# "optimistic" kernel simply kills Squid kid with a SIGBUS signal.
# Some of the memory limits enforced by the kernel are currently
# poorly understood: We do not know how to detect and check them. This
# option ensures that the mapped memory will be available.
#
# This option may have a positive performance side-effect: Locking
# memory at start avoids runtime paging I/O. Paging slows Squid down.
#
# Locking memory may require a large enough RLIMIT_MEMLOCK OS limit,
# CAP_IPC_LOCK capability, or equivalent.
#Default:
# shared_memory_locking off
# TAG: hopeless_kid_revival_delay time-units
# Normally, when a kid process dies, Squid immediately restarts the
# kid. A kid experiencing frequent deaths is marked as "hopeless" for
# the duration specified by this directive. Hopeless kids are not
# automatically restarted.
#
# Currently, zero values are not supported because they result in
# misconfigured SMP Squid instances running forever, endlessly
# restarting each dying kid. To effectively disable hopeless kids
# revival, set the delay to a huge value (e.g., 1 year).
#
# Reconfiguration also clears all hopeless kids designations, allowing
# for manual revival of hopeless kids.
#Default:
# hopeless_kid_revival_delay 1 hour
# OPTIONS FOR AUTHENTICATION
# -----------------------------------------------------------------------------
# TAG: auth_param
# This is used to define parameters for the various authentication
# schemes supported by Squid.
#
# format: auth_param scheme parameter [setting]
#
# The order in which authentication schemes are presented to the client is
# dependent on the order the scheme first appears in config file. IE
# has a bug (it's not RFC 2617 compliant) in that it will use the basic
# scheme if basic is the first entry presented, even if more secure
# schemes are presented. For now use the order in the recommended
# settings section below. If other browsers have difficulties (don't
# recognize the schemes offered even if you are using basic) either
# put basic first, or disable the other schemes (by commenting out their
# program entry).
#
# Once an authentication scheme is fully configured, it can only be
# shutdown by shutting squid down and restarting. Changes can be made on
# the fly and activated with a reconfigure. I.E. You can change to a
# different helper, but not unconfigure the helper completely.
#
# Please note that while this directive defines how Squid processes
# authentication it does not automatically activate authentication.
# To use authentication you must in addition make use of ACLs based
# on login name in http_access (proxy_auth, proxy_auth_regex or
# external with %LOGIN used in the format tag). The browser will be
# challenged for authentication on the first such acl encountered
# in http_access processing and will also be re-challenged for new
# login credentials if the request is being denied by a proxy_auth
# type acl.
#
# WARNING: authentication can't be used in a transparently intercepting
# proxy as the client then thinks it is talking to an origin server and
# not the proxy. This is a limitation of bending the TCP/IP protocol to
# transparently intercepting port 80, not a limitation in Squid.
# Ports flagged 'transparent', 'intercept', or 'tproxy' have
# authentication disabled.
#
# === Parameters common to all schemes. ===
#
# "program" cmdline
# Specifies the command for the external authenticator.
#
# By default, each authentication scheme is not used unless a
# program is specified.
#
# See http://wiki.squid-cache.org/Features/AddonHelpers for
# more details on helper operations and creating your own.
#
# "key_extras" format
# Specifies a string to be append to request line format for
# the authentication helper. "Quoted" format values may contain
# spaces and logformat %macros. In theory, any logformat %macro
# can be used. In practice, a %macro expands as a dash (-) if
# the helper request is sent before the required macro
# information is available to Squid.
#
# By default, Squid uses request formats provided in
# scheme-specific examples below (search for %credentials).
#
# The expanded key_extras value is added to the Squid credentials
# cache and, hence, will affect authentication. It can be used to
# autenticate different users with identical user names (e.g.,
# when user authentication depends on http_port).
#
# Avoid adding frequently changing information to key_extras. For
# example, if you add user source IP, and it changes frequently
# in your environment, then max_user_ip ACL is going to treat
# every user+IP combination as a unique "user", breaking the ACL
# and wasting a lot of memory on those user records. It will also
# force users to authenticate from scratch whenever their IP
# changes.
#
# "realm" string
# Specifies the protection scope (aka realm name) which is to be
# reported to the client for the authentication scheme. It is
# commonly part of the text the user will see when prompted for
# their username and password.
#
# For Basic the default is "Squid proxy-caching web server".
# For Digest there is no default, this parameter is mandatory.
# For NTLM and Negotiate this parameter is ignored.
#
# "children" numberofchildren [startup=N] [idle=N] [concurrency=N]
# [queue-size=N] [on-persistent-overload=action]
# [reservation-timeout=seconds]
#
# The maximum number of authenticator processes to spawn. If
# you start too few Squid will have to wait for them to process
# a backlog of credential verifications, slowing it down. When
# password verifications are done via a (slow) network you are
# likely to need lots of authenticator processes.
#
# The startup= and idle= options permit some skew in the exact
# amount run. A minimum of startup=N will begin during startup
# and reconfigure. Squid will start more in groups of up to
# idle=N in an attempt to meet traffic needs and to keep idle=N
# free above those traffic needs up to the maximum.
#
# The concurrency= option sets the number of concurrent requests
# the helper can process. The default of 0 is used for helpers
# who only supports one request at a time. Setting this to a
# number greater than 0 changes the protocol used to include a
# channel ID field first on the request/response line, allowing
# multiple requests to be sent to the same helper in parallel
# without waiting for the response.
#
# Concurrency must not be set unless it's known the helper
# supports the input format with channel-ID fields.
#
# The queue-size option sets the maximum number of queued
# requests. A request is queued when no existing child can
# accept it due to concurrency limit and no new child can be
# started due to numberofchildren limit. The default maximum is
# 2*numberofchildren. Squid is allowed to temporarily exceed the
# configured maximum, marking the affected helper as
# "overloaded". If the helper overload lasts more than 3
# minutes, the action prescribed by the on-persistent-overload
# option applies.
#
# The on-persistent-overload=action option specifies Squid
# reaction to a new helper request arriving when the helper
# has been overloaded for more that 3 minutes already. The number
# of queued requests determines whether the helper is overloaded
# (see the queue-size option).
#
# Two actions are supported:
#
# die Squid worker quits. This is the default behavior.
#
# ERR Squid treats the helper request as if it was
# immediately submitted, and the helper immediately
# replied with an ERR response. This action has no effect
# on the already queued and in-progress helper requests.
#
# NOTE: NTLM and Negotiate schemes do not support concurrency
# in the Squid code module even though some helpers can.
#
# The reservation-timeout=seconds option allows NTLM and Negotiate
# helpers to forget about clients that abandon their in-progress
# connection authentication without closing the connection. The
# timeout is measured since the last helper response received by
# Squid for the client. Fractional seconds are not supported.
#
# After the timeout, the helper will be used for other clients if
# there are no unreserved helpers available. In the latter case,
# the old client attempt to resume authentication will not be
# forwarded to the helper (and the client should open a new HTTP
# connection and retry authentication from scratch).
#
# By default, reservations do not expire and clients that keep
# their connections open without completing authentication may
# exhaust all NTLM and Negotiate helpers.
#
# "keep_alive" on|off
# If you experience problems with PUT/POST requests when using
# the NTLM or Negotiate schemes then you can try setting this
# to off. This will cause Squid to forcibly close the connection
# on the initial request where the browser asks which schemes
# are supported by the proxy.
#
# For Basic and Digest this parameter is ignored.
#
# "utf8" on|off
# Useful for sending credentials to authentication backends that
# expect UTF-8 encoding (e.g., LDAP).
#
# When this option is enabled, Squid uses HTTP Accept-Language
# request header to guess the received credentials encoding
# (ISO-Latin-1, CP1251, or UTF-8) and then converts the first
# two encodings into UTF-8.
#
# When this option is disabled and by default, Squid sends
# credentials in their original (i.e. received) encoding.
#
# This parameter is only honored for Basic and Digest schemes.
# For Basic, the entire username:password credentials are
# checked and, if necessary, re-encoded. For Digest -- just the
# username component. For NTLM and Negotiate schemes, this
# parameter is ignored.
#
#
# === Example Configuration ===
#
# This configuration displays the recommended authentication scheme
# order from most to least secure with recommended minimum configuration
# settings for each scheme:
#
##auth_param negotiate program <uncomment and complete this line to activate>
##auth_param negotiate children 20 startup=0 idle=1
##
##auth_param digest program <uncomment and complete this line to activate>
##auth_param digest children 20 startup=0 idle=1
##auth_param digest realm Squid proxy-caching web server
##auth_param digest nonce_garbage_interval 5 minutes
##auth_param digest nonce_max_duration 30 minutes
##auth_param digest nonce_max_count 50
##
##auth_param ntlm program <uncomment and complete this line to activate>
##auth_param ntlm children 20 startup=0 idle=1
##
##auth_param basic program <uncomment and complete this line>
##auth_param basic children 5 startup=5 idle=1
##auth_param basic credentialsttl 2 hours
#Default:
# none
# TAG: authenticate_cache_garbage_interval
# The time period between garbage collection across the username cache.
# This is a trade-off between memory utilization (long intervals - say
# 2 days) and CPU (short intervals - say 1 minute). Only change if you
# have good reason to.
#Default:
# authenticate_cache_garbage_interval 1 hour
# TAG: authenticate_ttl
# The time a user & their credentials stay in the logged in
# user cache since their last request. When the garbage
# interval passes, all user credentials that have passed their
# TTL are removed from memory.
#Default:
# authenticate_ttl 1 hour
# TAG: authenticate_ip_ttl
# If you use proxy authentication and the 'max_user_ip' ACL,
# this directive controls how long Squid remembers the IP
# addresses associated with each user. Use a small value
# (e.g., 60 seconds) if your users might change addresses
# quickly, as is the case with dialup. You might be safe
# using a larger value (e.g., 2 hours) in a corporate LAN
# environment with relatively static address assignments.
#Default:
# authenticate_ip_ttl 1 second
# ACCESS CONTROLS
# -----------------------------------------------------------------------------
# TAG: external_acl_type
# This option defines external acl classes using a helper program
# to look up the status
#
# external_acl_type name [options] FORMAT /path/to/helper [helper arguments]
#
# Options:
#
# ttl=n TTL in seconds for cached results (defaults to 3600
# for 1 hour)
#
# negative_ttl=n
# TTL for cached negative lookups (default same
# as ttl)
#
# grace=n Percentage remaining of TTL where a refresh of a
# cached entry should be initiated without needing to
# wait for a new reply. (default is for no grace period)
#
# cache=n The maximum number of entries in the result cache. The
# default limit is 262144 entries. Each cache entry usually
# consumes at least 256 bytes. Squid currently does not remove
# expired cache entries until the limit is reached, so a proxy
# will sooner or later reach the limit. The expanded FORMAT
# value is used as the cache key, so if the details in FORMAT
# are highly variable, a larger cache may be needed to produce
# reduction in helper load.
#
# children-max=n
# Maximum number of acl helper processes spawned to service
# external acl lookups of this type. (default 5)
#
# children-startup=n
# Minimum number of acl helper processes to spawn during
# startup and reconfigure to service external acl lookups
# of this type. (default 0)
#
# children-idle=n
# Number of acl helper processes to keep ahead of traffic
# loads. Squid will spawn this many at once whenever load
# rises above the capabilities of existing processes.
# Up to the value of children-max. (default 1)
#
# concurrency=n concurrency level per process. Only used with helpers
# capable of processing more than one query at a time.
#
# queue-size=N The queue-size option sets the maximum number of
# queued requests. A request is queued when no existing
# helper can accept it due to concurrency limit and no
# new helper can be started due to children-max limit.
# If the queued requests exceed queue size, the acl is
# ignored. The default value is set to 2*children-max.
#
# protocol=2.5 Compatibility mode for Squid-2.5 external acl helpers.
#
# ipv4 / ipv6 IP protocol used to communicate with this helper.
# The default is to auto-detect IPv6 and use it when available.
#
#
# FORMAT is a series of %macro codes. See logformat directive for a full list
# of the accepted codes. Although note that at the time of any external ACL
# being tested data may not be available and thus some %macro expand to '-'.
#
# In addition to the logformat codes; when processing external ACLs these
# additional macros are made available:
#
# %ACL The name of the ACL being tested.
#
# %DATA The ACL arguments specified in the referencing config
# 'acl ... external' line, separated by spaces (an
# "argument string"). see acl external.
#
# If there are no ACL arguments %DATA expands to '-'.
#
# If you do not specify a DATA macro inside FORMAT,
# Squid automatically appends %DATA to your FORMAT.
# Note that Squid-3.x may expand %DATA to whitespace
# or nothing in this case.
#
# By default, Squid applies URL-encoding to each ACL
# argument inside the argument string. If an explicit
# encoding modifier is used (e.g., %#DATA), then Squid
# encodes the whole argument string as a single token
# (e.g., with %#DATA, spaces between arguments become
# %20).
#
# If SSL is enabled, the following formating codes become available:
#
# %USER_CERT SSL User certificate in PEM format
# %USER_CERTCHAIN SSL User certificate chain in PEM format
# %USER_CERT_xx SSL User certificate subject attribute xx
# %USER_CA_CERT_xx SSL User certificate issuer attribute xx
#
#
# NOTE: all other format codes accepted by older Squid versions
# are deprecated.
#
#
# General request syntax:
#
# [channel-ID] FORMAT-values
#
#
# FORMAT-values consists of transaction details expanded with
# whitespace separation per the config file FORMAT specification
# using the FORMAT macros listed above.
#
# Request values sent to the helper are URL escaped to protect
# each value in requests against whitespaces.
#
# If using protocol=2.5 then the request sent to the helper is not
# URL escaped to protect against whitespace.
#
# NOTE: protocol=3.0 is deprecated as no longer necessary.
#
# When using the concurrency= option the protocol is changed by
# introducing a query channel tag in front of the request/response.
# The query channel tag is a number between 0 and concurrency-1.
# This value must be echoed back unchanged to Squid as the first part
# of the response relating to its request.
#
#
# The helper receives lines expanded per the above format specification
# and for each input line returns 1 line starting with OK/ERR/BH result
# code and optionally followed by additional keywords with more details.
#
#
# General result syntax:
#
# [channel-ID] result keyword=value ...
#
# Result consists of one of the codes:
#
# OK
# the ACL test produced a match.
#
# ERR
# the ACL test does not produce a match.
#
# BH
# An internal error occurred in the helper, preventing
# a result being identified.
#
# The meaning of 'a match' is determined by your squid.conf
# access control configuration. See the Squid wiki for details.
#
# Defined keywords:
#
# user= The users name (login)
#
# password= The users password (for login= cache_peer option)
#
# message= Message describing the reason for this response.
# Available as %o in error pages.
# Useful on (ERR and BH results).
#
# tag= Apply a tag to a request. Only sets a tag once,
# does not alter existing tags.
#
# log= String to be logged in access.log. Available as
# %ea in logformat specifications.
#
# clt_conn_tag= Associates a TAG with the client TCP connection.
# Please see url_rewrite_program related documentation
# for this kv-pair.
#
# Any keywords may be sent on any response whether OK, ERR or BH.
#
# All response keyword values need to be a single token with URL
# escaping, or enclosed in double quotes (") and escaped using \ on
# any double quotes or \ characters within the value. The wrapping
# double quotes are removed before the value is interpreted by Squid.
# \r and \n are also replace by CR and LF.
#
# Some example key values:
#
# user=John%20Smith
# user="John Smith"
# user="J. \"Bob\" Smith"
#Default:
# none
# TAG: acl
# Defining an Access List
#
# Every access list definition must begin with an aclname and acltype,
# followed by either type-specific arguments or a quoted filename that
# they are read from.
#
# acl aclname acltype argument ...
# acl aclname acltype "file" ...
#
# When using "file", the file should contain one item per line.
#
#
# ACL Options
#
# Some acl types supports options which changes their default behaviour:
#
# -i,+i By default, regular expressions are CASE-SENSITIVE. To make them
# case-insensitive, use the -i option. To return case-sensitive
# use the +i option between patterns, or make a new ACL line
# without -i.
#
# -n Disable lookups and address type conversions. If lookup or
# conversion is required because the parameter type (IP or
# domain name) does not match the message address type (domain
# name or IP), then the ACL would immediately declare a mismatch
# without any warnings or lookups.
#
# -m[=delimiters]
# Perform a list membership test, interpreting values as
# comma-separated token lists and matching against individual
# tokens instead of whole values.
# The optional "delimiters" parameter specifies one or more
# alternative non-alphanumeric delimiter characters.
# non-alphanumeric delimiter characters.
#
# -- Used to stop processing all options, in the case the first acl
# value has '-' character as first character (for example the '-'
# is a valid domain name)
#
# Some acl types require suspending the current request in order
# to access some external data source.
# Those which do are marked with the tag [slow], those which
# don't are marked as [fast].
# See http://wiki.squid-cache.org/SquidFaq/SquidAcl
# for further information
#
# ***** ACL TYPES AVAILABLE *****
#
# acl aclname src ip-address/mask ... # clients IP address [fast]
# acl aclname src addr1-addr2/mask ... # range of addresses [fast]
# acl aclname dst [-n] ip-address/mask ... # URL host's IP address [slow]
# acl aclname localip ip-address/mask ... # IP address the client connected to [fast]
#
#if USE_SQUID_EUI
# acl aclname arp mac-address ...
# acl aclname eui64 eui64-address ...
# # [fast]
# # MAC (EUI-48) and EUI-64 addresses use xx:xx:xx:xx:xx:xx notation.
# #
# # The 'arp' ACL code is not portable to all operating systems.
# # It works on Linux, Solaris, Windows, FreeBSD, and some other
# # BSD variants.
# #
# # The eui_lookup directive is required to be 'on' (the default)
# # and Squid built with --enable-eui for MAC/EUI addresses to be
# # available for this ACL.
# #
# # Squid can only determine the MAC/EUI address for IPv4
# # clients that are on the same subnet. If the client is on a
# # different subnet, then Squid cannot find out its address.
# #
# # IPv6 protocol does not contain ARP. MAC/EUI is either
# # encoded directly in the IPv6 address or not available.
#endif
# acl aclname clientside_mark mark[/mask] ...
# # matches CONNMARK of an accepted connection [fast]
# # DEPRECATED. Use the 'client_connection_mark' instead.
#
# acl aclname client_connection_mark mark[/mask] ...
# # matches CONNMARK of an accepted connection [fast]
# #
# # mark and mask are unsigned integers (hex, octal, or decimal).
# # If multiple marks are given, then the ACL matches if at least
# # one mark matches.
# #
# # Uses netfilter-conntrack library.
# # Requires building Squid with --enable-linux-netfilter.
# #
# # The client, various intermediaries, and Squid itself may set
# # CONNMARK at various times. The last CONNMARK set wins. This ACL
# # checks the mark present on an accepted connection or set by
# # Squid afterwards, depending on the ACL check timing. This ACL
# # effectively ignores any mark set by other agents after Squid has
# # accepted the connection.
#
# acl aclname srcdomain .foo.com ...
# # reverse lookup, from client IP [slow]
# acl aclname dstdomain [-n] .foo.com ...
# # Destination server from URL [fast]
# acl aclname srcdom_regex [-i] \.foo\.com ...
# # regex matching client name [slow]
# acl aclname dstdom_regex [-n] [-i] \.foo\.com ...
# # regex matching server [fast]
# #
# # For dstdomain and dstdom_regex a reverse lookup is tried if a IP
# # based URL is used and no match is found. The name "none" is used
# # if the reverse lookup fails.
#
# acl aclname src_as number ...
# acl aclname dst_as number ...
# # [fast]
# # Except for access control, AS numbers can be used for
# # routing of requests to specific caches. Here's an
# # example for routing all requests for AS#1241 and only
# # those to mycache.mydomain.net:
# # acl asexample dst_as 1241
# # cache_peer_access mycache.mydomain.net allow asexample
# # cache_peer_access mycache_mydomain.net deny all
#
# acl aclname peername myPeer ...
# acl aclname peername_regex [-i] regex-pattern ...
# # [fast]
# # match against a named cache_peer entry
# # set unique name= on cache_peer lines for reliable use.
#
# acl aclname time [day-abbrevs] [h1:m1-h2:m2]
# # [fast]
# # day-abbrevs:
# # S - Sunday
# # M - Monday
# # T - Tuesday
# # W - Wednesday
# # H - Thursday
# # F - Friday
# # A - Saturday