Squid HOWTO

Z Gentoo Linux Wiki

Přejít na: navigace, hledání

Tento článek je nedokončený. Můžete nám jej pomoci rozšířit.


Obsah

[editovat] image:popis.png Popis

Informace tykajici se instalace a konfigurace proxy servisu Squid. Tipy a triky pro Squid naleznete tady.

[editovat] image:instalace.pngInstalace

[editovat] image:console.png Konfigurace


Tento článek musí být ještě přeložen!
Překlad hotov z 0 %.


/etc/squid/squid.conf.default

Vitame vas ve SQUID 2.6.STABLE12

Toto je standradni konfihurace pro program Squid. Take se muzete podivat na domovskou stranku proektu na adrese www.squid-cache.org (eng.) naleznete tam casto kladene otazky a dalsi dokumentace. Standardni konfiguracni soubor ukazuje jake jsou nastaveni pouzije program, pokud' tyto opcie nebudou zadane a vysvetli jake muzou mit hodnoty. Pokud' chcete zmenit standradni nastaveni parametru, tak musite odkomentovat radek. Tady to budeme psat bez komentarniho oznaceni # pro lepsi citelnost. Originalni soubor naleznete v /etc/squid/squid.conf.default

Formatovani bude podle takove sablony:

parametr (standardni hodnota)
popis

[editovat] Sit'

http_port (3128)
Pouziti:  port [parametry]
          hostname:port [parametry]
          1.2.3.4:port [parametry]
        The socket addresses where Squid will listen for HTTP client
        requests.  You may specify multiple socket addresses.
        There are three forms: port alone, hostname with port, and
        IP address with port.  If you specify a hostname or IP
        address, Squid binds the socket to that specific
        address.  This replaces the old 'tcp_incoming_address'
        option.  Most likely, you do not need to bind to a specific
        address, so you can use the port number alone.

        The default port number is 3128.

        If you are running Squid in accelerator mode, you
        probably want to listen on port 80 also, or instead.

        The -a command line option will override the *first* port
        number listed here.   That option will NOT override an IP
        address, however.

        You may specify multiple socket addresses on multiple lines.

        options are:

                transparent     Support for transparent interception of
                                outgoing requests without browser settings

                accel           Accelerator mode. Also needs at least one
                                of vhost/vport/defaultsite.

                defaultsite=    Main web site name for accelerators. Implies
                                accel.

                vhost           Accelerator using the Host header for
                                virtual domain support. Implies accel.

                vport           Accelerator with IP based virtual host support.
                                Implies accel.

                vport=          As above, but uses specified port number
                                rather than the http_port number. Implies accel.

                urlgroup=       Default urlgroup to mark requests
                                with (see also acl urlgroup and
                                url_rewrite_program)

                protocol=       Protocol to reconstruct accelerated
                                requests with. Defaults to http.

                no-connection-auth
                                Prevent forwarding of Microsoft
                                connection oriented authentication
                                (NTLM, Negotiate and Kerberos)

                tproxy          Support Linux TPROXY for spoofing
                                outgoing connections using the client
                                IP address.

        If you run Squid on a dual-homed machine with an internal
        and an external interface we recommend you to specify the
        internal address:port in http_port. This way Squid will only be
        visible on the internal address.

 Squid normally listens to port 3128
https_port
Usage:  [ip:]port cert=certificate.pem [key=key.pem] [options...]

        The socket address where Squid will listen for HTTPS client
        requests.

        This is really only useful for situations where you are running
        squid in accelerator mode and you want to do the SSL work at the
        accelerator level.

        You may specify multiple socket addresses on multiple lines,
        each with their own SSL certificate and/or options.

        Options:

           accel        Accelerator mode. Also needs at least one of
                        defaultsite or vhost.

           defaultsite= The name of the https site presented on
                        this port. Implies accel.

           vhost        Domain based virtual host support. Useful
                        in combination with a wildcard certificate or
                        other certificates valid for more than one domain.
                        Implies accel.

           urlgroup=    Default urlgroup to mark requests with (see
                        also acl urlgroup and url_rewrite_program)

           protocol=    Protocol to reconstruct accelerated requests
                        with. Defaults to https.

           cert=        Path to SSL certificate (PEM format)

           key=         Path to SSL private key file (PEM format)
                        if not specified, the certificate file is
                        assumed to be a combined certificate and
                        key file

           version=     The version of SSL/TLS supported
                            1   automatic (default)
                            2   SSLv2 only
                            3   SSLv3 only
                            4   TLSv1 only

           cipher=      Colon separated list of supported ciphers

           options=     Various SSL engine options. The most important
                        being:
                            NO_SSLv2  Disallow the use of SSLv2
                            NO_SSLv3  Disallow the use of SSLv3
                            NO_TLSv1  Disallow the use of TLSv1
                            SINGLE_DH_USE Always create a new key when using
                                      temporary/ephemeral DH key exchanges
                        See src/ssl_support.c or OpenSSL SSL_CTX_set_options
                        documentation for a complete list of options.

           clientca=    File containing the list of CAs to use when
                        requesting a client certificate

           cafile=      File containing additional CA certificates to
                        use when verifying client certificates. If unset
                        clientca will be used.

           capath=      Directory containing additional CA certificates
                        and CRL lists to use when verifying client certificates

           crlfile=     File of additional CRL lists to use when verifying
                        the client certificate, in addition to CRLs stored in
                        the capath. Implies VERIFY_CRL flag below.

           dhparams=    File containing DH parameters for temporary/ephemeral
                        DH key exchanges

           sslflags=    Various flags modifying the use of SSL:
                            DELAYED_AUTH
                                Don't request client certificates
                                immediately, but wait until acl processing
                                requires a certificate (not yet implemented)
                            NO_DEFAULT_CA
                                Don't use the default CA lists built in
                                to OpenSSL.
                            NO_SESSION_REUSE
                                Don't allow for session reuse. Each connection
                                will result in a new SSL session.
                            VERIFY_CRL
                                Verify CRL lists when accepting client
                                certificates
                            VERIFY_CRL_ALL
                                Verify CRL lists for all certificates in the
                                client certificate chain

           sslcontext=  SSL session ID context identifier.


Default:
 none
ssl_unclean_shutdown (off)
        Some browsers (especially MSIE) bugs out on SSL shutdown
        messages.

ssl_engine (none)
        The OpenSSL engine to use. You will need to set this if you
        would like to use hardware SSL acceleration for example.
sslproxy_client_certificate (none)
        Client SSL Certificate to use when proxying https:// URLs
sslproxy_client_key (none)
        Client SSL Key to use when proxying https:// URLs
sslproxy_version (1)
        SSL version level to use when proxying https:// URLs
sslproxy_options (none)
        SSL engine options to use when proxying https:// URLs
sslproxy_cipher (none)
        SSL cipher list to use when proxying https:// URLs
sslproxy_cafile,sslproxy_capath,sslproxy_flags,sslpassword_program (none)
        Specify a program used for entering SSL key passphrases
        when using encrypted SSL certificate keys. If not specified
        keys must either be unencrypted, or Squid started with the -N
        option to allow it to query interactively for the passphrase.
icp_port (3130)
        The port number where Squid sends and receives ICP queries to
        and from neighbor caches.  Default is 3130.  To disable use
        "0".  May be overridden with -u on the command line.
htcp_port (0)
        The port number where Squid sends and receives HTCP queries to
        and from neighbor caches.  To turn it on you want to set it to
        4827.  By default it is set to "0" (disabled).
mcast_groups (none)
        This tag specifies a list of multicast groups which your server
        should join to receive multicasted ICP queries.

        NOTE!  Be very careful what you put here!  Be sure you
        understand the difference between an ICP _query_ and an ICP
        _reply_.  This option is to be set only if you want to RECEIVE
        multicast queries.  Do NOT set this option to SEND multicast
        ICP (use cache_peer for that).  ICP replies are always sent via
        unicast, so this option does not affect whether or not you will
        receive replies from multicast group members.

        You must be very careful to NOT use a multicast address which
        is already in use by another group of caches.

        If you are unsure about multicast, please read the Multicast
        chapter in the Squid FAQ (http://www.squid-cache.org/FAQ/).

        Usage: mcast_groups 239.128.16.128 224.0.1.20

        By default, Squid doesn't listen on any multicast groups.
udp_incoming_address (0.0.0.0),udp_outgoing_address (255.255.255.255)
        udp_incoming_address    is used for the ICP socket receiving packets
                                from other caches.
        udp_outgoing_address    is used for ICP packets sent out to other
                                caches.

        The default behavior is to not bind to any specific address.

        A udp_incoming_address value of 0.0.0.0 indicates Squid
        should listen for UDP messages on all available interfaces.

        If udp_outgoing_address is set to 255.255.255.255 (the default)
        it will use the same socket as udp_incoming_address. Only
        change this if you want to have ICP queries sent using another
        address than where this Squid listens for ICP queries from other
        caches.

        NOTE, udp_incoming_address and udp_outgoing_address can not
        have the same value since they both use port 3130.

[editovat] Nastaveni pro sousedici proxy

cache_peer (none)
        To specify other caches in a hierarchy, use the format:

                cache_peer hostname type http_port icp_port [options]

        For example,

                                                proxy  icp
                  hostname             type     port   port  options
                  -------------------- -------- ----- -----  -----------
        cache_peer parent.foo.net       parent    3128  3130  [proxy-only]
        cache_peer sib1.foo.net         sibling   3128  3130  [proxy-only]
        cache_peer sib2.foo.net         sibling   3128  3130  [proxy-only]

              type:  either 'parent', 'sibling', or 'multicast'.

        proxy_port:  The port number where the cache listens for proxy
                     requests.

          icp_port:  Used for querying neighbor caches about
                     objects.  To have a non-ICP neighbor
                     specify '7' for the ICP port and make sure the
                     neighbor machine has the UDP echo port
                     enabled in its /etc/inetd.conf file.

            options: proxy-only
                     weight=n
                     ttl=n
                     no-query
                     default
                     round-robin
                     multicast-responder
                     closest-only
                     no-digest
                     no-netdb-exchange
                     no-delay
                     login=user:password | PASS | *:password
                     connect-timeout=nn
                     digest-url=url
                     allow-miss
                     max-conn
                     htcp
                     htcp-oldsquid
                     carp-load-factor
                     originserver
                     userhash
                     sourcehash
                     name=xxx
                     monitorurl=url
                     monitorsize=sizespec
                     monitorinterval=seconds
                     monitortimeout=seconds
                     group=name
                     forceddomain=name
                     ssl
                     sslcert=/path/to/ssl/certificate
                     sslkey=/path/to/ssl/key
                     sslversion=1|2|3|4
                     sslcipher=...
                     ssloptions=...
                     front-end-https[=on|auto]
                     connection-auth[=on|off|auto]

                     use 'proxy-only' to specify objects fetched
                     from this cache should not be saved locally.

                     use 'weight=n' to specify a weighted parent.
                     The weight must be an integer.  The default weight
                     is 1, larger weights are favored more.

                     use 'ttl=n' to specify a IP multicast TTL to use
                     when sending an ICP queries to this address.
                     Only useful when sending to a multicast group.
                     Because we don't accept ICP replies from random
                     hosts, you must configure other group members as
                     peers with the 'multicast-responder' option below.

                     use 'no-query' to NOT send ICP queries to this
                     neighbor.

                     use 'default' if this is a parent cache which can
                     be used as a "last-resort." You should probably
                     only use 'default' in situations where you cannot
                     use ICP with your parent cache(s).

                     use 'round-robin' to define a set of parents which
                     should be used in a round-robin fashion in the
                     absence of any ICP queries.

                     'multicast-responder' indicates the named peer
                     is a member of a multicast group.  ICP queries will
                     not be sent directly to the peer, but ICP replies
                     will be accepted from it.

                     'closest-only' indicates that, for ICP_OP_MISS
                     replies, we'll only forward CLOSEST_PARENT_MISSes
                     and never FIRST_PARENT_MISSes.

                     use 'no-digest' to NOT request cache digests from
                     this neighbor.

                     'no-netdb-exchange' disables requesting ICMP
                     RTT database (NetDB) from the neighbor.

                     use 'no-delay' to prevent access to this neighbor
                     from influencing the delay pools.

                     use 'login=user:password' if this is a personal/workgroup
                     proxy and your parent requires proxy authentication.
                     Note: The string can include URL escapes (i.e. %20 for
                     spaces). This also means % must be written as %%.

                     use 'login=PASS' to forward authentication to the peer.
                     Needed if the peer requires login.
                     Note: To combine this with local authentication the Basic
                     authentication scheme must be used, and both servers must
                     share the same user database as HTTP only allows for
                     a single login (one for proxy, one for origin server).

                     use 'login=*:password' to pass the username to the
                     upstream cache, but with a fixed password. This is meant
                     to be used when the peer is in another administrative
                     domain, but it is still needed to identify each user.
                     The star can optionally be followed by some extra
                     information which is added to the username. This can
                     be used to identify this proxy to the peer, similar to
                     the login=username:password option above.

                     use 'connect-timeout=nn' to specify a peer
                     specific connect timeout (also see the
                     peer_connect_timeout directive)

                     use 'digest-url=url' to tell Squid to fetch the cache
                     digest (if digests are enabled) for this host from
                     the specified URL rather than the Squid default
                     location.

                     use 'allow-miss' to disable Squid's use of only-if-cached
                     when forwarding requests to siblings. This is primarily
                     useful when icp_hit_stale is used by the sibling. To
                     extensive use of this option may result in forwarding
                     loops, and you should avoid having two-way peerings
                     with this option. (for example to deny peer usage on
                     requests from peer by denying cache_peer_access if the
                     source is a peer)

                     use 'max-conn' to limit the amount of connections Squid
                     may open to this peer.

                     use 'htcp' to send HTCP, instead of ICP, queries
                     to the neighbor.  You probably also want to
                     set the "icp port" to 4827 instead of 3130.

                     use 'htcp-oldsquid' to send HTCP to old Squid versions

                     use 'carp-load-factor=f' to define a parent
                     cache as one participating in a CARP array.
                     The 'f' values for all CARP parents must add
                     up to 1.0.
                 
                     'originserver' causes this parent peer to be contacted as
                     a origin server. Meant to be used in accelerator setups.

                     use 'userhash' to load-balance amongst a set of parents
                     based on the client proxy_auth or ident username.

                     use 'sourcehash' to load-balanse amongs a set of parents
                     based on the client source ip.

                     use 'name=xxx' if you have multiple peers on the same
                     host but different ports. This name can then be used to
                     differentiate the peers in cache_peer_access and similar
                     directives.

                     use 'monitorurl=url' to have periodically request a given
                     URL from the peer, and only consider the peer as alive
                     if this monitoring is successful (default none)

                     use 'monitorsize=min[-max]' to limit the size range of 
                     'monitorurl' replies considered valid. Defaults to 0 to
                     accept any size replies as valid.

                     use 'monitorinterval=seconds' to change frequency of
                     how often the peer is monitored with 'monitorurl'
                     (default 300 for a 5 minute interval). If set to 0
                     then monitoring is disabled even if a URL is defined.

                     use 'monitortimeout=seconds' to change the timeout of
                     'monitorurl'. Defaults to 'monitorinterval'.

                     use 'forceddomain=name' to forcibly set the Host header
                     of requests forwarded to this peer. Useful in accelerator
                     setups where the server (peer) expects a certain domain
                     name and using redirectors to feed this domain name
                     is not feasible.

                     use 'ssl' to indicate that connections to this peer should
                     be SSL/TLS encrypted.

                     use 'sslcert=/path/to/ssl/certificate' to specify a client
                     SSL certificate to use when connecting to this peer.

                     use 'sslkey=/path/to/ssl/key' to specify the private SSL
                     key corresponding to sslcert above. If 'sslkey' is not
                     specified then 'sslcert' is assumed to reference a
                     combined file containing both the certificate and the key.

                     use sslversion=1|2|3|4 to specify the SSL version to use
                     when connecting to this peer
                        1 = automatic (default)
                        2 = SSL v2 only
                        3 = SSL v3 only
                        4 = TLS v1 only

                     use sslcipher=... to specify the list of valid SSL ciphers
                     to use when connecting to this peer.

                     use ssloptions=... to specify various SSL engine options:
                        NO_SSLv2  Disallow the use of SSLv2
                        NO_SSLv3  Disallow the use of SSLv3
                        NO_TLSv1  Disallow the use of TLSv1
                     See src/ssl_support.c or the OpenSSL documentation for
                     a more complete list.

                     use sslcafile=... to specify a file containing
                     additional CA certificates to use when verifying the
                     peer certificate.

                     use sslcapath=... to specify a directory containing
                     additional CA certificates to use when verifying the
                     peer certificate.

                     use sslcrlfile=... to specify a certificate revocation
                     list file to use when verifying the peer certificate.

                     use sslflags=... to specify various flags modifying the
                     SSL implementation:
                        DONT_VERIFY_PEER
                                Accept certificates even if they fail to
                                verify.
                        NO_DEFAULT_CA
                                Don't use the default CA list built in
                                to OpenSSL.

                     use ssldomain= to specify the peer name as advertised
                     in it's certificate. Used for verifying the correctness
                     of the received peer certificate. If not specified the
                     peer hostname will be used.

                     use front-end-https to enable the "Front-End-Https: On"
                     header needed when using Squid as a SSL frontend in front
                     of Microsoft OWA. See MS KB document Q307347 for details
                     on this header. If set to auto then the header will
                     only be added if the request is forwarded as a https://
                     URL.

                     use connection-auth=off to tell Squid that this peer does
                     not support Microsoft connection oriented authentication,
                     and any such challenges received from there should be
                     ignored. Default is auto to automatically determine the
                     status of the peer.

        NOTE: non-ICP/HTCP neighbors must be specified as 'parent'.
cache_peer_domain (nobe)
        Use to limit the domains for which a neighbor cache will be
        queried.  Usage:

        cache_peer_domain cache-host domain [domain ...]
        cache_peer_domain cache-host !domain

        For example, specifying

                cache_peer_domain parent.foo.net        .edu

        has the effect such that UDP query packets are sent to
        'bigserver' only when the requested object exists on a
        server in the .edu domain.  Prefixing the domain name
        with '!' means the cache will be queried for objects
        NOT in that domain.

        NOTE:   * Any number of domains may be given for a cache-host,
                  either on the same or separate lines.
                * When multiple domains are given for a particular
                  cache-host, the first matched domain is applied.
                * Cache hosts with no domain restrictions are queried
                  for all requests.
                * There are no defaults.
                * There is also a 'cache_peer_access' tag in the ACL
                  section.
neighbor_type_domain (none)
        usage: neighbor_type_domain neighbor parent|sibling domain domain ...

        Modifying the neighbor type for specific domains is now
        possible.  You can treat some domains differently than the the
        default neighbor type specified on the 'cache_peer' line.
        Normally it should only be necessary to list domains which
        should be treated differently because the default neighbor type
        applies for hostnames which do not match domains listed here.

EXAMPLE:
        cache_peer  parent cache.foo.org 3128 3130
        neighbor_type_domain cache.foo.org sibling .com .net
        neighbor_type_domain cache.foo.org sibling .au .de
icp_query_timeout (0 msec)
        Normally Squid will automatically determine an optimal ICP
        query timeout value based on the round-trip-time of recent ICP
        queries.  If you want to override the value determined by
        Squid, set this 'icp_query_timeout' to a non-zero value.  This
        value is specified in MILLISECONDS, so, to use a 2-second
        timeout (the old default), you would write:

                icp_query_timeout 2000
maximum_icp_query_timeout (2000 msec)
        Normally the ICP query timeout is determined dynamically.  But
        sometimes it can lead to very large values (say 5 seconds).
        Use this option to put an upper limit on the dynamic timeout
        value.  Do NOT use this option to always use a fixed (instead
        of a dynamic) timeout value. To set a fixed timeout see the
        'icp_query_timeout' directive.
mcast_icp_query_timeout (2000 msec)
        For multicast peers, Squid regularly sends out ICP "probes" to
        count how many other peers are listening on the given multicast
        address.  This value specifies how long Squid should wait to
        count all the replies.  The default is 2000 msec, or 2
        seconds.
dead_peer_timeout (10 seconds)
        This controls how long Squid waits to declare a peer cache
        as "dead."  If there are no ICP replies received in this
        amount of time, Squid will declare the peer dead and not
        expect to receive any further ICP replies.  However, it
        continues to send ICP queries, and will mark the peer as
        alive upon receipt of the first subsequent ICP reply.

        This timeout also affects when Squid expects to receive ICP
        replies from peers.  If more than 'dead_peer' seconds have
        passed since the last ICP reply was received, Squid will not
        expect to receive an ICP reply on the next query.  Thus, if
        your time between requests is greater than this timeout, you
        will see a lot of requests sent DIRECT to origin servers
        instead of to your parents.
hierarchy_stoplist (cgi-bin ?)
        A list of words which, if found in a URL, cause the object to
        be handled directly by this cache.  In other words, use this
        to not query neighbor caches for certain objects.  You may
        list this option multiple times. Note: never_direct overrides
        this option.
cache (viz. popis)
        A list of ACL elements which, if matched, cause the request to
        not be satisfied from the cache and the reply to not be cached.
        In other words, use this to force certain objects to never be cached.

        You must use the word 'DENY' to indicate the ACL names which should
        NOT be cached.

        Default is to allow all to be cached
We recommend you to use the following two lines.
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
cache_vary (on)
        Set to off to disable caching of Vary:in objects.
broken_vary_encoding (biz. popis)
        Many servers have broken support for on-the-fly Content-Encoding,
        returning the same ETag on both plain and gzip:ed variants.
        Vary replies matching this access list will have the cache split
        on the Accept-Encoding header of the request and not trusting the
        ETag to be unique.

 Apache mod_gzip and mod_deflate known to be broken so don't trust
 Apache to signal ETag correctly on such responses
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

[editovat] Nastaveni kesovaci velikosti

cache_mem (8 MB)
        NOTE: THIS PARAMETER DOES NOT SPECIFY THE MAXIMUM PROCESS SIZE.
        IT ONLY PLACES A LIMIT ON HOW MUCH ADDITIONAL MEMORY SQUID WILL
        USE AS A MEMORY CACHE OF OBJECTS. SQUID USES MEMORY FOR OTHER
        THINGS AS WELL. SEE THE SQUID FAQ SECTION 8 FOR DETAILS.

        'cache_mem' specifies the ideal amount of memory to be used
        for:
                * In-Transit objects
                * Hot Objects
                * Negative-Cached objects

        Data for these objects are stored in 4 KB blocks.  This
        parameter specifies the ideal upper limit on the total size of
        4 KB blocks allocated.  In-Transit objects take the highest
        priority.

        In-transit objects have priority over the others.  When
        additional space is needed for incoming data, negative-cached
        and hot objects will be released.  In other words, the
        negative-cached and hot objects will fill up any unused space
        not needed for in-transit objects.

        If circumstances require, this limit will be exceeded.
        Specifically, if your incoming request rate requires more than
        'cache_mem' of memory to hold in-transit objects, Squid will
        exceed this limit to satisfy the new requests.  When the load
        decreases, blocks will be freed until the high-water mark is
        reached.  Thereafter, blocks will be used to store hot
        objects.
cache_swap_low (90 procent, 0-100),cache_swap_high (95 procent, 0-100)
        The low- and high-water marks for cache object replacement.
        Replacement begins when the swap (disk) usage is above the
        low-water mark and attempts to maintain utilization near the
        low-water mark.  As swap utilization gets close to high-water
        mark object eviction becomes more aggressive.  If utilization is
        close to the low-water mark less replacement is done each time.

        Defaults are 90% and 95%. If you have a large cache, 5% could be
        hundreds of MB. If this is the case you may wish to set these
        numbers closer together.
maximum_object_size (4096 KB)
        Objects larger than this size will NOT be saved on disk.  The
        value is specified in kilobytes, and the default is 4MB.  If
        you wish to get a high BYTES hit ratio, you should probably
        increase this (one 32 MB object hit counts for 3200 10KB
        hits).  If you wish to increase speed more than your want to
        save bandwidth you should leave this low.

        NOTE: if using the LFUDA replacement policy you should increase
        this value to maximize the byte hit rate improvement of LFUDA!
        See replacement_policy below for a discussion of this policy.
minimum_object_size (0 KB)
        Objects smaller than this size will NOT be saved on disk.  The
        value is specified in kilobytes, and the default is 0 KB, which
        means there is no minimum.
maximum_object_size_in_memory (8 KB)
        Objects greater than this size will not be attempted to kept in
        the memory cache. This should be set high enough to keep objects
        accessed frequently in memory to improve performance whilst low
        enough to keep larger objects from hoarding cache_mem.
ipcache_size (1024 polozek),ipcache_low (90 procent),ipcache_high (95 procent)
        The size, low-, and high-water marks for the IP cache.
fqdncache_size (1024 polozek)
        Maximum number of FQDN cache entries.
cache_replacement_policy (lru)
        The cache replacement policy parameter determines which
        objects are evicted (replaced) when disk space is needed.

            lru       : Squid's original list based LRU policy
            heap GDSF : Greedy-Dual Size Frequency
            heap LFUDA: Least Frequently Used with Dynamic Aging
            heap LRU  : LRU policy implemented using a heap

        Applies to any cache_dir lines listed below this.

        The LRU policies keeps recently referenced objects.

        The heap GDSF policy optimizes object hit rate by keeping smaller
        popular objects in cache so it has a better chance of getting a
        hit.  It achieves a lower byte hit rate than LFUDA though since
        it evicts larger (possibly popular) objects.

        The heap LFUDA policy keeps popular objects in cache regardless of
        their size and thus optimizes byte hit rate at the expense of
        hit rate since one large, popular object will prevent many
        smaller, slightly less popular objects from being cached.

        Both policies utilize a dynamic aging mechanism that prevents
        cache pollution that can otherwise occur with frequency-based
        replacement policies.

        NOTE: if using the LFUDA replacement policy you should increase
        the value of maximum_object_size above its default of 4096 KB to
        to maximize the potential byte hit rate improvement of LFUDA.

        For more information about the GDSF and LFUDA cache replacement
        policies see http://www.hpl.hp.com/techreports/1999/HPL-1999-69.html
        and http://fog.hpl.external.hp.com/techreports/98/HPL-98-173.html.


memory_replacement_policy (lru)
        The memory replacement policy parameter determines which
        objects are purged from memory when memory space is needed.

        See cache_replacement_policy for details.

[editovat] Cesty

cache_dir (ufs /var/cache/squid 100 16 256)
        Usage:

        cache_dir Type Directory-Name Fs-specific-data [options]

        You can specify multiple cache_dir lines to spread the
        cache among different disk partitions.

        Type specifies the kind of storage system to use. Only "ufs"
        is built by default. To enable any of the other storage systems
        see the --enable-storeio configure option.

        'Directory' is a top-level directory where cache swap
        files will be stored. If you want to use an entire disk
        for caching, this can be the mount-point directory.
        The directory must exist and be writable by the Squid
        process. Squid will NOT create this directory for you.
        Only using COSS, a raw disk device or a stripe file can
        be specified, but the configuration of the "cache_wap_log"
        tag is mandatory.

        The ufs store type:

        "ufs" is the old well-known Squid storage format that has always
        been there.

        cache_dir ufs Directory-Name Mbytes L1 L2 [options]

        'Mbytes' is the amount of disk space (MB) to use under this
        directory.  The default is 100 MB.  Change this to suit your
        configuration.  Do NOT put the size of your disk drive here.
        Instead, if you want Squid to use the entire disk drive,
        subtract 20% and use that value.

        'Level-1' is the number of first-level subdirectories which
        will be created under the 'Directory'.  The default is 16.

        'Level-2' is the number of second-level subdirectories which
        will be created under each first-level directory.  The default
        is 256.

        The aufs store type:

        "aufs" uses the same storage format as "ufs", utilizing
        POSIX-threads to avoid blocking the main Squid process on
        disk-I/O. This was formerly known in Squid as async-io.

        cache_dir aufs Directory-Name Mbytes L1 L2 [options]

        see argument descriptions under ufs above

        The diskd store type:

        "diskd" uses the same storage format as "ufs", utilizing a
        separate process to avoid blocking the main Squid process on
        disk-I/O.

        cache_dir diskd Directory-Name Mbytes L1 L2 [options] [Q1=n] [Q2=n]

        see argument descriptions under ufs above

        Q1 specifies the number of unacknowledged I/O requests when Squid
        stops opening new files. If this many messages are in the queues,
        Squid won't open new files. Default is 64

        Q2 specifies the number of unacknowledged messages when Squid
        starts blocking.  If this many messages are in the queues,
        Squid blocks until it receives some replies. Default is 72

        When Q1 < Q2 (the default), the cache directory is optimized
        for lower response time at the expense of a decrease in hit
        ratio.  If Q1 > Q2, the cache directory is optimized for
        higher hit ratio at the expense of an increase in response
        time.

        The COSS store type:

        block-size=n defines the "block size" for COSS cache_dir's.
        Squid uses file numbers as block numbers.  Since file numbers
        are limited to 24 bits, the block size determines the maximum
        size of the COSS partition.  The default is 512 bytes, which
        leads to a maximum cache_dir size of 512<<24, or 8 GB.  Note
        you should not change the COSS block size after Squid
        has written some objects to the cache_dir.

        overwrite-percent=n defines the percentage of disk that COSS
        must write to before a given object will be moved to the
        current stripe.  A value of "n" closer to 100 will cause COSS
        to waste less disk space by having multiple copies of an object
        on disk, but will increase the chances of overwriting a popular
        object as COSS overwrites stripes.  A value of "n" close to 0 
        will cause COSS to keep all current objects in the current COSS
        stripe at the expense of the hit rate.  The default value of 50
        will allow any given object to be stored on disk a maximum of
        2 times.

        max-stripe-waste=n defines the maximum amount of space that COSS 
        will waste in a given stripe (in bytes).  When COSS writes data
        to disk, it will potentially waste up to "max-size" worth of disk
        space for each 1MB of data written.  If "max-size" is set to a
        large value (ie >256k), this could potentially result in large
        amounts of wasted disk space. Setting this value to a lower value
        (ie 64k or 32k) will result in a COSS disk refusing to cache
        larger objects until the COSS stripe has been filled to within 
        "max-stripe-waste" of the maximum size (1MB).

        membufs=n defines the number of "memory-only" stripes that COSS
        will use.  When an cache hit is performed on a COSS stripe before
        COSS has reached the overwrite-percent value for that object,
        COSS will use a series of memory buffers to hold the object in
        while the data is sent to the client.  This will define the maximum
        number of memory-only buffers that COSS will use.  The default value
        is 10, which will use a maximum of 10MB of memory for buffers.

        maxfullbufs=n defines the maximum number of stripes a COSS partition 
        will have in memory waiting to be freed (either because the disk is
        under load and the stripe is unwritten, or because clients are still 
        transferring data from objects using the memory).  In order to try 
        and maintain a good hit rate under load, COSS will reserve the last 
        2 full stripes for object hits. (ie a COSS cache_dir will reject 
        new objects when the number of full stripes is 2 less than maxfullbufs)

        Common options:

        read-only, this cache_dir is read only.

        max-size=n, refers to the max object size this storedir supports.
        It is used to initially choose the storedir to dump the object.
        Note: To make optimal use of the max-size limits you should order
        the cache_dir lines with the smallest max-size value first and the
        ones with no max-size specification last.

        Note that for coss, max-size must be less than COSS_MEMBUF_SZ
        (hard coded at 1 MB).
logformat (none)
        Usage:

        logformat <name> <format specification>

        Defines an access log format.

        The <format specification> is a string with embedded % format codes

        % format codes all follow the same basic structure where all but
        the formatcode is optional. Output strings are automatically escaped
        as required according to their context and the output format
        modifiers are usually not needed, but can be specified if an explicit
        output format is desired.

                % ["|[|'|] [-] [[0]width] [{argument}] formatcode

                "       output in quoted string format
                [       output in squid text log format as used by log_mime_hdrs
                        output in URL quoted format
                '       output as-is

                -       left aligned
                width   field width. If starting with 0 then the
                        output is zero padded
                {arg}   argument such as header name etc

        Format codes:

                >a      Client source IP address
                >A      Client FQDN
                >p      Client source port
                <A      Server IP address or peer name
                la      Local IP address (http_port)
                lp      Local port number (http_port)
                ts      Seconds since epoch
                tu      subsecond time (milliseconds)
                tl      Local time. Optional strftime format argument
                        default %d/%b/%Y:%H:%M:%S %z
                tg      GMT time. Optional strftime format argument
                        default %d/%b/%Y:%H:%M:%S %z
                tr      Response time (milliseconds)
                >h      Request header. Optional header name argument
                        on the format header[:[separator]element]
                <h      Reply header. Optional header name argument
                        as for >h
                un      User name
                ul      User login
                ui      User ident
                us      User SSL
                ue      User external acl
                Hs      HTTP status code
                Ss      Squid request status (TCP_MISS etc)
                Sh      Squid hierarchy status (DEFAULT_PARENT etc)
                mt      MIME content type
                rm      Request method (GET/POST etc)
                ru      Request URL
                rv      Request protocol version
                ea      Log string returned by external acl
                <st     Reply size including HTTP headers
                >st     Request size including HTTP headers
                st      Request+Reply size including HTTP headers
                %       a literal % character

logformat squid  %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
logformat squidmime  %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]
logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

access_log (/var/log/squid/access.log squid)
  These files log client request activities. Has a line every HTTP or
  ICP request. The format is:
  access_log <filepath> [<logformat name> [acl acl ...]]

  Will log to the specified file using the specified format (which
  must be defined in a logformat directive) those entries which match
  ALL the acl's specified (which must be defined in acl clauses).
  If no acl is specified, all requests will be logged to this file.
  
  To disable logging of a request use the filepath "none", in which case
  a logformat name should not be specified.

  To log the request via syslog specify a filepath of "syslog"
cache_log (/var/log/squid/cache.log)
        Cache logging file. This is where general information about
        your cache's behavior goes. You can increase the amount of data
        logged to this file with the "debug_options" tag below.
cache_store_log (/var/log/squid/store.log)
        Logs the activities of the storage manager.  Shows which
        objects are ejected from the cache, and which objects are
        saved and for how long.  To disable, enter "none". There are
        not really utilities to analyze this data, so you can safely
        disable it.
cache_swap_log (none)
        Location for the cache "swap.state" file. This log file holds
        the metadata of objects saved on disk.  It is used to rebuild
        the cache during startup.  Normally this file resides in each
        'cache_dir' directory, but you may specify an alternate
        pathname here.  Note you must give a full filename, not just
        a directory. Since this is the index for the whole object
        list you CANNOT periodically rotate it!

        If %s can be used in the file name it will be replaced with a
        a representation of the cache_dir name where each / is replaced
        with '.'. This is needed to allow adding/removing cache_dir
        lines when cache_swap_log is being used.

        If have more than one 'cache_dir', and %s is not used in the name
        these swap logs will have names such as:

                cache_swap_log.00
                cache_swap_log.01
                cache_swap_log.02

        The numbered extension (which is added automatically)
        corresponds to the order of the 'cache_dir' lines in this
        configuration file.  If you change the order of the 'cache_dir'
        lines in this file, these log files will NOT correspond to
        the correct 'cache_dir' entry (unless you manually rename
        them).  We recommend you do NOT use this option.  It is
        better to keep these log files in each 'cache_dir' directory.
emulate_httpd_log (off)
        The Cache can emulate the log file format which many 'httpd'
        programs use.  To disable/enable this emulation, set
        emulate_httpd_log to 'off' or 'on'.  The default
        is to use the native log format since it includes useful
        information Squid-specific log analyzers use.
log_ip_on_direct (on)
        Log the destination IP address in the hierarchy log tag when going
        direct. Earlier Squid versions logged the hostname here. If you
        prefer the old way set this to off.
mime_table (/etc/squid/mime.conf)
        Pathname to Squid's MIME table. You shouldn't need to change
        this, but the default file contains examples and formatting
        information if you do.
log_mime_hdrs (off)
        The Cache can record both the request and the response MIME
        headers for each HTTP transaction.  The headers are encoded
        safely and will appear as two bracketed fields at the end of
        the access log (for either the native or httpd-emulated log
        formats).  To enable this logging set log_mime_hdrs to 'on'.
useragent_log (none)
        Squid will write the User-Agent field from HTTP requests
        to the filename specified here.  By default useragent_log
        is disabled.
referer_log (none)
        Squid will write the Referer field from HTTP requests to the
        filename specified here.  By default referer_log is disabled.
        Note that "referer" is actually a misspelling of "referrer"
        however the misspelt version has been accepted into the HTTP RFCs
        and we accept both.
pid_filename (/var/run/squid.pid)
        A filename to write the process-id to.  To disable, enter "none".
debug_options (ALL,1)
        Logging options are set as section,level where each source file
        is assigned a unique section.  Lower levels result in less
        output,  Full debugging (level 9) can result in a very large
        log file, so be careful.  The magic word "ALL" sets debugging
        levels for all sections.  We recommend normally running with
        "ALL,1".
log_fqdn (off)
        Turn this on if you wish to log fully qualified domain names
        in the access.log. To do this Squid does a DNS lookup of all
        IP's connecting to it. This can (in some situations) increase
        latency, which makes your cache seem slower for interactive
        browsing.
client_netmask (255.255.255.255)
        A netmask for client addresses in logfiles and cachemgr output.
        Change this to protect the privacy of your cache clients.
        A netmask of 255.255.255.0 will log all IP's in that range with
        the last digit set to '0'.

[editovat] Externi programy

ftp_user (Squid@)
        If you want the anonymous login password to be more informative
        (and enable the use of picky ftp servers), set this to something
        reasonable for your domain, like wwwuser@somewhere.net

        The reason why this is domainless by default is the
        request can be made on the behalf of a user in any domain,
        depending on how the cache is used.
        Some ftp server also validate the email address is valid
        (for example perl.com).
ftp_list_width (32)
        Sets the width of ftp listings. This should be set to fit in
        the width of a standard browser. Setting this too small
        can cut off long filenames when browsing ftp sites.
ftp_passive (on)
        If your firewall does not allow Squid to use passive
        connections, turn off this option.
ftp_sanitycheck (on)
        For security and data integrity reasons Squid by default performs
        sanity checks of the addresses of FTP data connections ensure the
        data connection is to the requested server. If you need to allow
        FTP connections to servers using another IP address for the data
        connection turn this off.
ftp_telnet_protocol (on)
        The FTP protocol is officially defined to use the telnet protocol
        as transport channel for the control connection. However, many
        implementations are broken and does not respect this aspect of
        the FTP protocol.

        If you have trouble accessing files with ASCII code 255 in the
        path or similar problems involving this ASCII code you can
        try setting this directive to off. If that helps, report to the
        operator of the FTP server in question that their FTP server
        is broken and does not follow the FTP standard.
check_hostnames (on)
        For security and stability reasons Squid by default checks
        hostnames for Internet standard RFC compliance. If you do not want
        Squid to perform these checks then turn this directive off.
allow_underscore (on)
        Underscore characters is not strictly allowed in Internet hostnames
        but nevertheless used by many sites. Set this to off if you want
        Squid to be strict about the standard.
cache_dns_program (/usr/libexec/squid/dnsserver)
 Note: This option is only available if Squid is rebuilt with the
       --disable-internal-dns option

        Specify the location of the executable for dnslookup process.
dns_children (5)
 Note: This option is only available if Squid is rebuilt with the
       --disable-internal-dns option

        The number of processes spawn to service DNS name lookups.
        For heavily loaded caches on large servers, you should
        probably increase this value to at least 10.  The maximum
        is 32.  The default is 5.

        You must have at least one dnsserver process.
dns_retransmit_interval (5 seconds)
        Initial retransmit interval for DNS queries. The interval is
        doubled each time all configured DNS servers have been tried.
dns_timeout (2 minutes)
        DNS Query timeout. If no response is received to a DNS query
        within this time all DNS servers for the queried domain
        are assumed to be unavailable.
dns_defnames (off)
        Normally the RES_DEFNAMES resolver option is disabled
        (see res_init(3)).  This prevents caches in a hierarchy
        from interpreting single-component hostnames locally.  To allow
        Squid to handle single-component names, enable this option.
dns_nameservers (none)
        Use this if you want to specify a list of DNS name servers
        (IP addresses) to use instead of those given in your
        /etc/resolv.conf file.
        On Windows platforms, if no value is specified here or in
        the /etc/resolv.conf file, the list of DNS name servers are
        taken from the Windows registry, both static and dynamic DHCP
        configurations are supported.

        Example: dns_nameservers 10.0.0.1 192.172.0.4
hosts_file (/etc/hosts)
        Location of the host-local IP name-address associations
        database. Most Operating Systems have such a file on different
        default locations:
        - Un*X & Linux:    /etc/hosts
        - Windows NT/2000: %SystemRoot%\system32\drivers\etc\hosts
                           (%SystemRoot% value install default is c:\winnt)
        - Windows XP/2003: %SystemRoot%\system32\drivers\etc\hosts
                           (%SystemRoot% value install default is c:\windows)
        - Windows 9x/Me:   %windir%\hosts
                           (%windir% value is usually c:\windows)
        - Cygwin:          /etc/hosts

        The file contains newline-separated definitions, in the
        form ip_address_in_dotted_form name [name ...] names are
        whitespace-separated. Lines beginning with an hash ()
        character are comments.

        The file is checked at startup and upon configuration.
        If set to 'none', it won't be checked.
        If append_domain is used, that domain will be added to
        domain-local (i.e. not containing any dot character) host
        definitions.
diskd_program (/usr/libexec/squid/diskd-daemon)
        Specify the location of the diskd executable.
        Note that this is only useful if you have compiled in
        diskd as one of the store io modules.
unlinkd_program (/usr/libexec/squid/unlinkd)
        Specify the location of the executable for file deletion process.
pinger_program (/usr/libexec/squid/pinger)
 Note: This option is only available if Squid is rebuilt with the
       --enable-icmp option

        Specify the location of the executable for the pinger process.
url_rewrite_program (none)
        Specify the location of the executable for the URL rewriter.
        Since they can perform almost any function there isn't one included.

        For each requested URL rewriter will receive on line with the format

        URL <SP> client_ip "/" fqdn <SP> user <SP> method <SP> urlgroup <NL>

        And the rewriter may return a rewritten URL. The other components of
        the request line does not need to be returned (ignored if they are).

        The rewriter can also indicate that a client-side redirect should
        be performed to the new URL. This is done by prefixing the returned
        URL with "301:" (moved permanently) or 302: (moved temporarily).

        It can also return a "urlgroup" that can subsequently be matched
        in cache_peer_access and similar ACL driven rules. An urlgroup is
        returned by prefixing the returned url with "!urlgroup!"

        By default, a URL rewriter is not used.
url_rewrite_children (5)
        The number of redirector processes to spawn. If you start
        too few Squid will have to wait for them to process a backlog of
        URLs, slowing it down. If you start too many they will use RAM
        and other system resources.
url_rewrite_concurrency (0)
        The number of requests each redirector helper can handle in
        parallel. Defaults to 0 which indicates that the redirector
        is a old-style singlethreaded redirector.
url_rewrite_host_header (on)
        By default Squid rewrites any Host: header in redirected
        requests.  If you are running an accelerator this may
        not be a wanted effect of a redirector.

        WARNING: Entries are cached on the result of the URL rewriting
        process, so be careful if you have domain-virtual hosts.
url_rewrite_access (none)
        If defined, this access list specifies which requests are
        sent to the redirector processes.  By default all requests
        are sent.
location_rewrite_program (none)
        Specify the location of the executable for the Location rewriter,
        used to rewrite server generated redirects. Usually used in
        conjunction with a url_rewrite_program

        For each Location header received the location rewriter will receive
        one line with the format:

           location URL <SP> requested URL <SP> urlgroup <NL>

        And the rewriter may return a rewritten Location URL or a blank line.
        The other components of the request line does not need to be returned
        (ignored if they are).

        By default, a Location rewriter is not used.
location_rewrite_children (5)
        The number of location rewriting processes to spawn. If you start
        too few Squid will have to wait for them to process a backlog of
        URLs, slowing it down. If you start too many they will use RAM
        and other system resources.
location_rewrite_concurrency (0)
        The number of requests each Location rewriter helper can handle in
        parallel. Defaults to 0 which indicates that the helper
        is a old-style singlethreaded helper.
location_rewrite_access (none)
        If defined, this access list specifies which requests are
        sent to the location rewriting processes.  By default all Location
        headers are sent.
auth_param (viz. popis)
        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.

        === Parameters for the basic scheme follow. ===

        "program" cmdline
        Specify the command for the external authenticator.  Such a program
        reads a line containing "username password" and replies "OK" or
        "ERR" in an endless loop. "ERR" responses may optionally be followed
        by a error description available as %m in the returned error page.

        By default, the basic authentication scheme is not used unless a
        program is specified.

        If you want to use the traditional proxy authentication, jump over to
        the helpers/basic_auth/NCSA directory and type:
                % make
                % make install

        Then, set this line to something like

        auth_param basic program /usr/libexec/ncsa_auth /usr/etc/passwd

        "children" numberofchildren
        The 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 credential verifications are
        done via a (slow) network you are likely to need lots of
        authenticator processes.
        auth_param basic children 5

        "concurrency" numberofconcurrentrequests
        The number of concurrent requests/channels the helper supports.
        Changes the protocol used to include a channel number first on
        the request/response line, allowing multiple requests to be sent
        to the same helper in parallell without wating for the response.
        Must not be set unless it's known the helper supports this.

        "realm" realmstring
        Specifies the realm name which is to be reported to the client for
        the basic proxy authentication scheme (part of the text the user
        will see when prompted their username and password).
        auth_param basic realm Squid proxy-caching web server

        "credentialsttl" timetolive
        Specifies how long squid assumes an externally validated
        username:password pair is valid for - in other words how often the
        helper program is called for that user. Set this low to force
        revalidation with short lived passwords.  Note that setting this high
        does not impact your susceptibility to replay attacks unless you are
        using an one-time password system (such as SecureID). If you are using
        such a system, you will be vulnerable to replay attacks unless you
        also use the max_user_ip ACL in an http_access rule.
        auth_param basic credentialsttl 2 hours

        "casesensitive" on|off
        Specifies if usernames are case sensitive. Most user databases are
        case insensitive allowing the same username to be spelled using both
        lower and upper case letters, but some are case sensitive. This
        makes a big difference for user_max_ip ACL processing and similar.
        auth_param basic casesensitive off

        "blankpassword" on|off
        Specifies if blank passwords should be supported. Defaults to off
        as there is multiple authentication backends which handles blank
        passwords as "guest" access.

        === Parameters for the digest scheme follow ===

        "program" cmdline
        Specify the command for the external authenticator.  Such a program
        reads a line containing "username":"realm" and replies with the
        appropriate H(A1) value hex encoded or ERR if the user (or his H(A1)
        hash) does not exists.  See RFC 2616 for the definition of H(A1).
        "ERR" responses may optionally be followed by a error description
        available as %m in the returned error page.

        By default, the digest authentication scheme is not used unless a
        program is specified.

        If you want to use a digest authenticator, jump over to the
        helpers/digest_auth/ directory and choose the authenticator to use.
        It it's directory type
                % make
                % make install

        Then, set this line to something like

        auth_param digest program /usr/libexec/digest_auth_pw /usr/etc/digpass


        "children" numberofchildren
        The 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 credential verifications are
        done via a (slow) network you are likely to need lots of
        authenticator processes.
        auth_param digest children 5

        "concurrency" numberofconcurrentrequests
        The number of concurrent requests/channels the helper supports.
        Changes the protocol used to include a channel number first on
        the request/response line, allowing multiple requests to be sent
        to the same helper in parallell without wating for the response.
        Must not be set unless it's known the helper supports this.

        "realm" realmstring
        Specifies the realm name which is to be reported to the client for the
        digest proxy authentication scheme (part of the text the user will see
        when prompted their username and password).
        auth_param digest realm Squid proxy-caching web server

        "nonce_garbage_interval" timeinterval
        Specifies the interval that nonces that have been issued to clients are
        checked for validity.
        auth_param digest nonce_garbage_interval 5 minutes

        "nonce_max_duration" timeinterval
        Specifies the maximum length of time a given nonce will be valid for.
        auth_param digest nonce_max_duration 30 minutes

        "nonce_max_count" number
        Specifies the maximum number of times a given nonce can be used.
        auth_param digest nonce_max_count 50

        "nonce_strictness" on|off
        Determines if squid requires strict increment-by-1 behavior for nonce
        counts, or just incrementing (off - for use when useragents generate
        nonce counts that occasionally miss 1 (ie, 1,2,4,6)).
        auth_param digest nonce_strictness off

        "check_nonce_count" on|off
        This directive if set to off can disable the nonce count check
        completely to work around buggy digest qop implementations in certain
        mainstream browser versions. Default on to check the nonce count to
        protect from authentication replay attacks.
        auth_param digest check_nonce_count on

        "post_workaround" on|off
        This is a workaround to certain buggy browsers who sends an incorrect
        request digest in POST requests when reusing the same nonce as acquired
        earlier in response to a GET request.
        auth_param digest post_workaround off

        === NTLM scheme options follow ===

        "program" cmdline
        Specify the command for the external NTLM authenticator. Such a
        program participates in the NTLMSSP exchanges between Squid and the
        client and reads commands according to the Squid NTLMSSP helper
        protocol. See helpers/ntlm_auth/ for details. Recommended ntlm
        authenticator is ntlm_auth from Samba-3.X, but a number of other
        ntlm authenticators is available.

        By default, the ntlm authentication scheme is not used unless a
        program is specified.

        auth_param ntlm program /path/to/samba/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp

        "children" numberofchildren
        The 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 credential verifications are
        done via a (slow) network you are likely to need lots of
        authenticator processes.
        auth_param ntlm children 5

        "keep_alive" on|off
        This option enables the use of keep-alive on the initial
        authentication request. It has been reported some versions of MSIE
        have problems if this is enabled, but performance will be increased
        if enabled.

        auth_param ntlm keep_alive on

        === Negotiate scheme options follow ===

        "program" cmdline
        Specify the command for the external Negotiate authenticator. Such a
        program participates in the SPNEGO exchanges between Squid and the
        client and reads commands according to the Squid ntlmssp helper
        protocol. See helpers/ntlm_auth/ for details. Recommended SPNEGO
        authenticator is ntlm_auth from Samba-4.X.

        By default, the Negotiate authentication scheme is not used unless a
        program is specified.

        auth_param negotiate program /path/to/samba/bin/ntlm_auth --helper-protocol=gss-spnego

        "children" numberofchildren
        The 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 credential verifications are
        done via a (slow) network you are likely to need lots of
        authenticator processes.
        auth_param negotiate children 5

        "keep_alive" on|off
        If you experience problems with PUT/POST requests when using the
        Negotiate authentication scheme then you can try setting this to
        off. This will cause Squid to forcibly close the connection on
        the initial requests where the browser asks which schemes are
        supported by the proxy.

        auth_param negotiate keep_alive on

Recommended minimum configuration per scheme:
auth_param negotiate program <uncomment and complete this line to activate>
auth_param negotiate children 5
auth_param negotiate keep_alive on
auth_param ntlm program <uncomment and complete this line to activate>
auth_param ntlm children 5
auth_param ntlm keep_alive on
auth_param digest program <uncomment and complete this line>
auth_param digest children 5
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 basic program <uncomment and complete this line>
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
authenticate_cache_garbage_interval (1 hour)
        The time period between garbage collection across the username cache.
        This is a tradeoff between memory utilization (long intervals - say
        2 days) and CPU (short intervals - say 1 minute). Only change if you
        have good reason to.
authenticate_ttl (1 hour)
        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.
authenticate_ip_ttl (0 seconds)
        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
        dialups. You might be safe using a larger value (e.g., 2 hours) in a
        corporate LAN environment with relatively static address assignments.
external_acl_type (none)
        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)
          children=n    number of processes spawn to service external acl
                        lookups of this type. (default 5).
          concurrency=n concurrency level per process. Only used with helpers
                        capable of processing more than one query at a time.
                        Note: see compatibility note below
          cache=n       result cache size, 0 is unbounded (default)
          grace=        Percentage remaining of TTL where a refresh of a
                        cached entry should be initiated without needing to
                        wait for a new reply. (default 0 for no grace period)
          protocol=2.5  Compatibility mode for Squid-2.5 external acl helpers

        FORMAT specifications

          %LOGIN        Authenticated user login name
          %IDENT        Ident user name
          %SRC          Client IP
          %SRCPORT      Client source port
          %DST          Requested host
          %PROTO        Requested protocol
          %PORT         Requested port
          %METHOD       Request method
          %MYADDR       Squid interface address
          %MYPORT       Squid http_port number
          %PATH         Requested URL-path (including query-string if any)
          %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_xx   SSL User certificate issuer attribute xx
          %{Header}     HTTP request header
          %{Hdr:member} HTTP request header list member
          %{Hdr:;member}
                        HTTP request header list member using ; as
                        list separator. ; can be any non-alphanumeric
                        character.
         %ACL           The ACL name
         %DATA          The ACL arguments. If not used then any arguments
                        is automatically added at the end

        The request sent to the helper consists of the data in the format
        specification in the order specified, plus any values specified in
        the referencing acl (see the "acl external" directive).

        The helper receives lines per the above format specification,
        and returns lines starting with OK or ERR indicating the validity
        of the request and optionally followed by additional keywords with
        more details.

        General result syntax:

          OK/ERR keyword=value ...

        Defined keywords:

          user=         The users name (login also understood)
          password=     The users password (for PROXYPASS login= cache_peer)
          message=      Error message or similar used as %o in error messages
                        (error also understood)
          log=          String to be logged in access.log. Available as
                        %ea in logformat specifications

        If protocol=3.0 (the default) then URL escaping is used to protect
        each value in both requests and responses.

        If using protocol=2.5 then all values need to be enclosed in quotes
        if they may contain whitespace, or the whitespace escaped using \.
        And quotes or \ characters within the keyword value must be \ escaped.

        When using the concurrency= option the protocol is changed by
        introducing a query channel tag infront of the request/response.
        The query channel tag is a number between 0 and concurrency-1.

        Compatibility Note: The children= option was named concurrency= in
        Squid-2.5.STABLE3 and earlier, and was accepted as an alias for the
        duration of the Squid-2.5 releases to keep compatibility. However,
        the meaning of concurrency= option has changed in Squid-2.6 to match
        that of Squid-3 and the old syntax no longer works.


[editovat] Nastaveni kesovani

wais_relay_host, wais_relay_port (0)
        Relay WAIS request to host (1st arg) at port (2 arg).
request_header_max_size (20 KB)
        This specifies the maximum size for HTTP headers in a request.
        Request headers are usually relatively small (about 512 bytes).
        Placing a limit on the request header size will catch certain
        bugs (for example with persistent connections) and possibly
        buffer-overflow or denial-of-service attacks.


request_body_max_size (0 KB)
        This specifies the maximum size for an HTTP request body.
        In other words, the maximum size of a PUT/POST request.
        A user who attempts to send a request with a body larger
        than this limit receives an "Invalid Request" error message.
        If you set this parameter to a zero (the default), there will
        be no limit imposed.
refresh_pattern (viz. popis)
        usage: refresh_pattern [-i] regex min percent max [options]

        By default, regular expressions are CASE-SENSITIVE.  To make
        them case-insensitive, use the -i option.

        'Min' is the time (in minutes) an object without an explicit
        expiry time should be considered fresh. The recommended
        value is 0, any higher values may cause dynamic applications
        to be erroneously cached unless the application designer
        has taken the appropriate actions.

        'Percent' is a percentage of the objects age (time since last
        modification age) an object without explicit expiry time
        will be considered fresh.

        'Max' is an upper limit on how long objects without an explicit
        expiry time will be considered fresh.

        options: override-expire
                 override-lastmod
                 reload-into-ims
                 ignore-reload
                 ignore-no-cache
                 ignore-private
                 ignore-auth

                override-expire enforces min age even if the server
                sent a Expires: header. Doing this VIOLATES the HTTP
                standard.  Enabling this feature could make you liable
                for problems which it causes.

                override-lastmod enforces min age even on objects
                that were modified recently.

                reload-into-ims changes client no-cache or ``reload''
                to If-Modified-Since requests. Doing this VIOLATES the
                HTTP standard. Enabling this feature could make you
                liable for problems which it causes.

                ignore-reload ignores a client no-cache or ``reload''
                header. Doing this VIOLATES the HTTP standard. Enabling
                this feature could make you liable for problems which
                it causes.

                ignore-no-cache ignores any ``Pragma: no-cache'' and
                ``Cache-control: no-cache'' headers received from a server.
                The HTTP RFC never allows the use of this (Pragma) header 
                from a server, only a client, though plenty of servers 
                send it anyway.

                ignore-private ignores any ``Cache-control: private'' 
                headers received from a server. Doing this VIOLATES 
                the HTTP standard. Enabling this feature could make you 
                liable for problems which it causes.

                ignore-auth caches responses to requests with authorization,
                irrespective of ``Cache-control'' headers received from 
                a server. Doing this VIOLATES the HTTP standard. Enabling
                this feature could make you liable for problems which
                it causes.

        Basically a cached object is:

                FRESH if expires < now, else STALE
                STALE if age > max
                FRESH if lm-factor < percent, else STALE
                FRESH if age < min
                else STALE

        The refresh_pattern lines are checked in the order listed here.
        The first entry which matches is used.  If none of the entries
        match the default will be used.

        Note, you must uncomment all the default lines if you want
        to change one. The default setting is only active if none is
        used.

Suggested default:
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
quick_abort_min (16 KB),quick_abort_max (16 KB),quick_abort_pct (95 procent)
        The cache by default continues downloading aborted requests
        which are almost completed (less than 16 KB remaining). This
        may be undesirable on slow (e.g. SLIP) links and/or very busy
        caches.  Impatient users may tie up file descriptors and
        bandwidth by repeatedly requesting and immediately aborting
        downloads.

        When the user aborts a request, Squid will check the
        quick_abort values to the amount of data transfered until
        then.

        If the transfer has less than 'quick_abort_min' KB remaining,
        it will finish the retrieval.

        If the transfer has more than 'quick_abort_max' KB remaining,
        it will abort the retrieval.

        If more than 'quick_abort_pct' of the transfer has completed,
        it will finish the retrieval.

        If you do not want any retrieval to continue after the client
        has aborted, set both 'quick_abort_min' and 'quick_abort_max'
        to '0 KB'.

        If you want retrievals to always continue if they are being
        cached set 'quick_abort_min' to '-1 KB'.
read_ahead_gap (16 KB)
        The amount of data the cache will buffer ahead of what has been
        sent to the client when retrieving an object from another server.
negative_ttl (5 minutes)
        Time-to-Live (TTL) for failed requests.  Certain types of
        failures (such as "connection refused" and "404 Not Found") are
        negatively-cached for a configurable amount of time.  The
        default is 5 minutes.  Note that this is different from
        negative caching of DNS lookups.
positive_dns_ttl (6 hours)
        Upper limit on how long Squid will cache positive DNS responses.
        Default is 6 hours (360 minutes). This directive must be set
        larger than negative_dns_ttl.
negative_dns_ttl (1 minute)
        Time-to-Live (TTL) for negative caching of failed DNS lookups.
        This also makes sets the lower cache limit on positive lookups.
        Minimum value is 1 second, and it is not recommendable to go
        much below 10 seconds.
range_offset_limit (0 KB)
        Sets a upper limit on how far into the the file a Range request
        may be to cause Squid to prefetch the whole file. If beyond this
        limit Squid forwards the Range request as it is and the result
        is NOT cached.

        This is to stop a far ahead range request (lets say start at 17MB)
        from making Squid fetch the whole object up to that point before
        sending anything to the client.

        A value of -1 causes Squid to always fetch the object from the
        beginning so it may cache the result. (2.0 style)

        A value of 0 causes Squid to never fetch more than the
        client requested. (default)
collapsed_forwarding (off)
        This option enables multiple requests for the same URI to be
        processed as one request. Normally disabled to avoid increased
        latency on dynamic content, but there can be benefit from enabling
        this in accelerator setups where the web servers are the bottleneck
        and reliable and returns mostly cacheable information.
refresh_stale_hit (0 seconds)
        This option changes the refresh algorithm to allow concurrent
        requests while an object is being refreshed to be processed as
        cache hits if the object expired less than X seconds ago. Default
        is 0 to disable this feature. This option is mostly interesting
        in accelerator setups where a few objects is accessed very
        frequently.


[editovat] časový limit

forward_timeout (4 minutes)
        This parameter specifies how long Squid should at most attempt in
        finding a forwarding path for the request before giving up.
connect_timeout (1 minute)
        This parameter specifies how long to wait for the TCP connect to
        the requested server or peer to complete before Squid should
        attempt to find another path where to forward the request.
peer_connect_timeout (30 seconds)
        This parameter specifies how long to wait for a pending TCP
        connection to a peer cache.  The default is 30 seconds.   You
        may also set different timeout values for individual neighbors
        with the 'connect-timeout' option on a 'cache_peer' line.
read_timeout (15 minutes)
        The read_timeout is applied on server-side connections.  After
        each successful read(), the timeout will be extended by this
        amount.  If no data is read again after this amount of time,
        the request is aborted and logged with ERR_READ_TIMEOUT.  The
        default is 15 minutes.
request_timeout (5 minutes)
        How long to wait for an HTTP request after initial
        connection establishment.
persistent_request_timeout (1 minute)
        How long to wait for the next HTTP request on a persistent
        connection after the previous request completes.
client_lifetime (1 day)
        The maximum amount of time a client (browser) is allowed to
        remain connected to the cache process.  This protects the Cache
        from having a lot of sockets (and hence file descriptors) tied up
        in a CLOSE_WAIT state from remote clients that go away without
        properly shutting down (either because of a network failure or
        because of a poor client implementation).  The default is one
        day, 1440 minutes.

        NOTE:  The default value is intended to be much larger than any
        client would ever need to be connected to your cache.  You
        should probably change client_lifetime only as a last resort.
        If you seem to have many client connections tying up
        filedescriptors, we recommend first tuning the read_timeout,
        request_timeout, persistent_request_timeout and quick_abort values.
half_closed_clients (on)
        Some clients may shutdown the sending side of their TCP
        connections, while leaving their receiving sides open.  Sometimes,
        Squid can not tell the difference between a half-closed and a
        fully-closed TCP connection.  By default, half-closed client
        connections are kept open until a read(2) or write(2) on the
        socket returns an error.  Change this option to 'off' and Squid
        will immediately close client connections when read(2) returns
        "no more data to read."
pconn_timeout (120 seconds)
        Timeout for idle persistent connections to servers and other
        proxies.
ident_timeout (10 seconds)
        Maximum time to wait fo