You are previewing Squid Proxy Server 3.1 Beginner's Guide.
O'Reilly logo
Squid Proxy Server 3.1 Beginner's Guide

Book Description

Reduce bandwidth use and deliver your most frequently requested web pages more quickly with Squid Proxy Server. This guide will introduce you to the fundamentals of the caching system and help you get the most from Squid.

  • Get the most out of your network connection by customizing Squid's access control lists and helpers

  • Set up and configure Squid to get your website working quicker and more efficiently

  • No previous knowledge of Squid or proxy servers is required

  • Part of Packt's Beginner's Guide series: lots of practical, easy-to-follow examples accompanied by screenshots

  • In Detail

    Squid Proxy Server enables you to cache your web content and return it quickly on subsequent requests. System administrators often struggle with delays and too much bandwidth being used, but Squid solves these problems by handling requests locally. By deploying Squid in accelerator mode, requests are handled faster than on normal web servers making your site perform quicker than everyone else's!

    Squid Proxy Server 3.1 Beginner's Guide will help you to install and configure Squid so that it is optimized to enhance the performance of your network. The Squid Proxy Server reduces the amount of effort that you will have to put in, saving your time to get the most out of your network. Whether you only run one site, or are in charge of a whole network, Squid is an invaluable tool that improves performance immeasurably. Caching and performance optimization usually requires a lot of work on the developer's part, but Squid does all that for you. This book will show you how to get the most out of Squid by customizing it for your network. You will learn about the different configuration options available and the transparent and accelerated modes that enable you to focus on particular areas of your network.

    Applying proxy servers to large networks can be a lot of work as you have to decide where to place restrictions and who should have access, but the straightforward examples in this book will guide you through step by step so that you will have a proxy server that covers all areas of your network by the time you finish the book.

    A practical guide to implementing the Squid Proxy Server in your network or for your website

    Table of Contents

    1. Squid Proxy Server 3.1 Beginner's Guide
      1. Squid Proxy Server 3.1 Beginner's Guide
      2. Credits
      3. About the Author
      4. About the Reviewers
      5. www.PacktPub.com
        1. Support files, eBooks, discount offers, and more
          1. Why Subscribe?
          2. Free Access for Packt account holders
      6. Preface
        1. What this book covers
        2. What you need for this book
        3. Who this book is for
        4. Conventions
        5. Time for action - heading
          1. What just happened?
          2. Pop quiz
          3. Have a go hero - heading
        6. Reader feedback
        7. Customer support
          1. Errata
          2. Piracy
          3. Questions
      7. 1. Getting Started with Squid
        1. Proxy server
        2. Reverse proxy
        3. Getting Squid
        4. Time for action – identifying the right version
          1. What just happened?
          2. Methods of obtaining Squid
            1. Using source archives
        5. Time for action – downloading Squid
          1. What just happened?
            1. Obtaining the latest source code from Bazaar VCS
        6. Time for action – using Bazaar to obtain source code
          1. What just happened?
          2. Have a go hero – fetching the source code
            1. Using binary packages
        7. Installing Squid
          1. Installing Squid from source code
            1. Compiling Squid
              1. Why compile?
            2. Uncompressing the source archive
            3. Configure or system check
              1. --prefix
              2. --enable-gnuregex
              3. --disable-inline
              4. --disable-optimizations
              5. --enable-storeio
              6. --enable-removal-policies
              7. --enable-icmp
              8. --enable-delay-pools
              9. --enable-esi
              10. --enable-useragent-log
              11. --enable-referer-log
              12. --disable-wccp
              13. --disable-wccpv2
              14. --disable-snmp
              15. --enable-cachemgr-hostname
              16. --enable-arp-acl
              17. --disable-htcp
              18. --enable-ssl
              19. --enable-cache-digests
              20. --enable-default-err-language
              21. --enable-err-languages
              22. --disable-http-violations
              23. --enable-ipfw-transparent
              24. --enable-ipf-transparent
              25. --enable-pf-transparent
              26. --enable-linux-netfliter
              27. --enable-follow-x-forwarded-for
              28. --disable-ident-lookups
              29. --disable-internal-dns
              30. --enable-default-hostsfile
              31. --enable-auth
                1. Old Syntax
                2. New Syntax
              32. --enable-auth-basic
              33. --enable-auth-ntlm
              34. --enable-auth-negotiate
              35. --enable-auth-digest
              36. --enable-ntlm-fail-open
              37. --enable-external-acl-helpers
              38. --disable-translation
              39. --disable-auto-locale
              40. --disable-unlinkd
              41. --with-default-user
              42. --with-logdir
              43. --with-pidfile
              44. --with-aufs-threads
              45. --without-pthreads
              46. --with-openssl
              47. --with-large-files
              48. --with-filedescriptors
          2. Have a go hero – file descriptors
        8. Time for action – running the configure command
          1. What just happened?
          2. Have a go hero – debugging configure errors
        9. Time for action – compiling the source
          1. What just happened?
        10. Time for action – installing Squid
          1. What just happened?
        11. Time for action – exploring Squid files
          1. bin
          2. bin/squidclient
          3. etc
          4. etc/squid.conf
          5. etc/squid.conf.default
          6. etc/squid.conf.documented
          7. libexec
          8. libexec/cachemgr.cgi
          9. sbin
          10. sbin/squid
          11. share
          12. share/errors
          13. share/icons
          14. share/man
          15. var
          16. var/cache
          17. var/logs
          18. What just happened?
          19. Installing Squid from binary packages
            1. Fedora, CentOS or Red Hat
            2. Debian or Ubuntu
            3. FreeBSD
            4. OpenBSD or NetBSD
            5. Dragonfly BSD
            6. Gentoo
            7. Arch Linux
          20. Pop quiz
        12. Summary
      8. 2. Configuring Squid
        1. Quick start
        2. Syntax of the configuration file
          1. Types of directives
            1. Single valued directives
            2. Boolean-valued or toggle directives
            3. Multi-valued directives
            4. Directives with time as a value
            5. Directives with file or memory size as values
          2. Have a go hero – categorize the directives
        3. HTTP port
        4. Time for action – setting the HTTP port
          1. What just happened?
        5. Access control lists
        6. Time for action – constructing simple ACLs
          1. What just happened?
          2. Have a go hero – understanding the pre-defined ACLs
        7. Controlling access to the proxy server
          1. HTTP access control
        8. Time for action – combining ACLs and HTTP access
          1. What just happened?
          2. HTTP reply access
          3. ICP access
          4. HTCP access
          5. HTCP CLR access
          6. Miss access
          7. Ident lookup access
        9. Cache peers or neighbors
          1. Declaring cache peers
        10. Time for action – adding a cache peer
          1. What just happened?
          2. Quickly restricting access to domains using peers
          3. Advanced control on access using peers
        11. Caching web documents
          1. Using main memory (RAM) for caching
            1. In-transit objects or current requests
            2. Hot or popular objects
            3. Negatively cached objects
            4. Specifying cache space in RAM
        12. Time for action – specifying space for memory caching
          1. What just happened?
          2. Have a go hero – calculating cache_mem for your machine
            1. Maximum object size in memory
            2. Memory cache mode
          3. Using hard disks for caching
            1. Specifying the storage space
              1. Storage types
              2. Choosing a directory name or location
        13. Time for action – creating a cache directory
          1. What just happened?
            1. Declaring the size of the cache
            2. Configuring the number of sub directories
              1. Read-only cache
        14. Time for action – adding a cache directory
          1. What just happened?
            1. Cache directory selection
            2. Cache object size limits
            3. Setting limits on object replacement
          2. Cache replacement policies
            1. Least recently used (LRU)
            2. Greedy dual size frequency (GDSF)
            3. Least frequently used with dynamic aging (LFUDA)
        15. Tuning Squid for enhanced caching
          1. Selective caching
        16. Time for action – preventing the caching of local content
          1. What just happened?
          2. Refresh patterns for cached objects
        17. Time for action – calculating the freshness of cached objects
          1. What just happened?
            1. Options for refresh pattern
              1. override-expire
              2. override-lastmod
              3. reload-into-ims
              4. ignore-reload
              5. ignore-no-cache
              6. ignore-no-store
              7. ignore-must-revalidate
              8. ignore-private
              9. ignore-auth
              10. refresh-ims
          2. Have a go hero – forcing the Google homepage to be cached for longer
          3. Aborting the partial retrievals
          4. Caching the failed requests
        18. Playing around with HTTP headers
          1. Controlling HTTP headers in requests
          2. Controlling HTTP headers in responses
          3. Replacing the contents of HTTP headers
        19. DNS server configuration
          1. Specifying the DNS program path
          2. Controlling the number of DNS client processes
          3. Setting the DNS name servers
        20. Time for action – adding DNS name servers
          1. What just happened?
          2. Setting the hosts file
          3. Default domain name for requests
          4. Timeout for DNS queries
          5. Caching the DNS responses
          6. Setting the size of the DNS cache
        21. Logging
          1. Log formats
          2. Log file rotation or log file backups
          3. Log access
          4. Buffered logs
          5. Strip query terms
        22. URL rewriters and redirectors
        23. Other configuration directives
          1. Setting the effective user for running Squid
          2. Configuring hostnames for the proxy server
            1. Hostname visible to everyone
            2. Unique hostname for the server
          3. Controlling the request forwarding
            1. Always direct
            2. Never direct
            3. Hierarchy stoplist
          4. Broken posts
          5. TCP outgoing address
          6. PID filename
          7. Client netmask
          8. Pop quiz
        24. Summary
      9. 3. Running Squid
        1. Command line options
          1. Getting a list of available options
        2. Time for action – listing the options
          1. What just happened?
          2. Getting information about our Squid installation
        3. Time for action – finding out the Squid version
          1. What just happened?
          2. Creating cache or swap directories
        4. Time for action – creating cache directories
          1. What just happened?
          2. Have a go hero – adding cache directories
          3. Using a different configuration file
          4. Getting verbose output
        5. Time for action – debugging output in the console
          1. What just happened?
          2. Full debugging output on the terminal
          3. Running as a normal process
          4. Parsing the Squid configuration file for errors or warnings
        6. Time for action – testing our configuration file
          1. What just happened?
          2. Sending various signals to a running Squid process
            1. Reloading a new configuration file in a running process
            2. Shutting down the Squid process
            3. Interrupting or killing a running Squid process
            4. Checking the status of a running Squid process
          3. Have a go hero – check the return value
            1. Sending a running process in to debug mode
            2. Rotating the log files
          4. Forcing the storage metadata to rebuild
          5. Double checking swap during rebuild
        7. Automatically starting Squid at system startup
          1. Adding Squid command to /etc/rc.local file
          2. Adding init script
        8. Time for action – adding the init script
          1. What just happened?
          2. Pop quiz
        9. Summary
      10. 4. Getting Started with Squid's Powerful ACLs and Access Rules
        1. Access control lists
          1. Fast and slow ACL types
          2. Source and destination IP address
        2. Time for action – constructing ACL lists using IP addresses
          1. What just happened?
        3. Time for action – using a range of IP addresses to build ACL lists
          1. What just happened?
          2. Have a go hero – make a list of the client IP addresses in your network
            1. Identifying local IP addresses
            2. Client MAC addresses
          3. Source and destination domain names
        4. Time for action – constructing ACL lists using domain names
          1. What just happened?
          2. Have a go hero – make a list of domains hosted in your local network
            1. Regular expressions for domain names
          3. Destination port
        5. Time for action – building ACL lists using destination ports
          1. What just happened?
            1. Local port name
          2. HTTP methods
          3. Identifying requests using the request protocol
        6. Time for action – using a request protocol to construct access rules
          1. What just happened?
          2. Time-based ACLs
          3. URL and URL path-based identification
          4. Have a go hero – ACL list for audio content
          5. Matching client usernames
            1. Regular expressions for client usernames
          6. Proxy authentication
        7. Time for action – enforcing proxy authentication
          1. Regular expressions for usernames
          2. What just happened?
          3. User limits
            1. Maximum number of connections per client
            2. Maximum logins per user
          4. Identification based on various HTTP headers
            1. User-agent or browser
            2. Referer identification
            3. Content type-based identification
            4. Other HTTP headers
          5. HTTP reply status
          6. Identifying random requests
        8. Access list rules
          1. Access to HTTP protocol
            1. Adapted HTTP access
            2. HTTP access for replies
          2. Access to other ports
            1. ICP port
            2. HTCP port
            3. Purge access via HTCP
            4. SNMP port
          3. Enforcing limited access to neighbors
        9. Time for action – denying miss_access to neighbors
          1. What just happened?
          2. Requesting neighbor proxy servers
          3. Have a go hero – make a list of proxy servers in your network
          4. Forwarding requests to remote servers
          5. Ident lookup access
          6. Controlled caching of web documents
          7. URL rewrite access
          8. HTTP header access
          9. Custom error pages
          10. Have a go hero – custom access denied page
          11. Maximum size of the reply body
          12. Logging requests selectively
        10. Mixing ACL lists and rules – example scenarios
          1. Handling caching of local content
        11. Time for action – avoiding caching of local content
          1. What just happened?
          2. Denying access from external networks
          3. Denying access to selective clients
          4. Blocking the download of video content
        12. Time for action – blocking video content
          1. What just happened?
          2. Special access for certain clients
        13. Time for action – writing rules for special access
          1. What just happened?
          2. Limited access during working hours
          3. Allowing some clients to connect to special ports
        14. Testing access control with squidclient
          1. Options for squidclient
          2. Using the squidclient
        15. Time for action – testing our access control example with squidclient
          1. What just happened?
        16. Time for action – testing a complex access control
          1. What just happened?
          2. Pop quiz
        17. Summary
      11. 5. Understanding Log Files and Log Formats
        1. Log messages
        2. Cache log or debug log
        3. Time for action – understanding the cache log
          1. What just happened?
          2. Have a go hero – exploring the cache log
        4. Access log
          1. Understanding the access log
        5. Time for action – understanding the access log messages
          1. What just happened?
          2. Access log syntax
        6. Time for action – analyzing a syntax to specify access log
          1. What just happened?
          2. Have a go hero – logging messages to the syslog module
          3. Log format
        7. Time for action – learning log format and format codes
          1. What just happened?
            1. Log formats provided by Squid
        8. Time for action – customizing the access log with a new log format
          1. What just happened?
        9. Selective logging of requests
        10. Time for action – using access_log to control logging of requests
          1. What just happened?
        11. Referer log
        12. Time for action – enabling the referer log
          1. What just happened?
        13. Time for action – translating the referer logs to a human-readable format
          1. What just happened?
          2. Have a go hero – referer log
        14. User agent log
        15. Time for action – enabling user agent logging
          1. What just happened?
        16. Emulating HTTP server-like logs
        17. Time for action – enabling HTTP server log emulation
          1. What just happened?
        18. Log file rotation
          1. Have a go hero – rotate log files
        19. Other log related features
          1. Cache store log
          2. Pop quiz
        20. Summary
      12. 6. Managing Squid and Monitoring Traffic
        1. Cache manager
          1. Installing the Apache Web server
        2. Time for action – installing Apache Web server
          1. What just happened?
          2. Configuring Apache for providing the cache manager web interface
        3. Time for action – configuring Apache to use cachemgr.cgi
          1. What just happened?
          2. Accessing the cache manager web interface
            1. Configuring Squid
            2. Log in to cache manger
            3. General Runtime Information
            4. IP Cache Stats and Contents
            5. FQDN Cache Statistics
            6. HTTP Header Statistics
            7. Traffic and Resource Counters
            8. Request Forwarding Statistics
            9. Cache Client List
            10. Memory Utilization
            11. Internal DNS Statistics
          3. Have a go hero – exploring cache manager
        4. Log file analyzers
          1. Calamaris
            1. Installing Calamaris
        5. Time for action – installing Calamaris
          1. What just happened?
            1. Using Calamaris to generate statistics
        6. Time for action – generating stats in plain text format
          1. What just happened?
          2. Have a go hero – exploring the reports
        7. Time for action – generating graphical reports with Calamaris
          1. What just happened?
          2. Have a go hero – exploring Calamaris
          3. Pop quiz
        8. Summary
      13. 7. Protecting your Squid Proxy Server with Authentication
        1. HTTP authentication
        2. Basic authentication
        3. Time for action – exploring Basic authentication
          1. What just happened?
          2. Database authentication
            1. Configuring database authentication
          3. NCSA authentication
        4. Time for action – configuring NCSA authentication
          1. What just happened?
          2. NIS authentication
          3. LDAP authentication
          4. SMB authentication
          5. PAM authentication
        5. Time for action – configuring PAM service
          1. What just happened?
          2. MSNT authentication
        6. Time for action – configuring MSNT authentication
          1. What just happened?
          2. MSNT multi domain authentication
          3. SASL authentication
        7. Time for action – configuring Squid to use SASL authentication
          1. What just happened?
          2. getpwnam authentication
          3. POP3 authentication
          4. RADIUS authentication
        8. Time for action – configuring RADIUS authentication
          1. What just happened?
          2. Fake Basic authentication
        9. Digest authentication
        10. Time for action – configuring Digest authentication
          1. What just happened?
          2. File authentication
          3. LDAP authentication
          4. eDirectory authentication
        11. Microsoft NTLM authentication
          1. Samba's NTLM authentication
          2. Fake NTLM authentication
        12. Negotiate authentication
        13. Time for action – configuring Negotiate authentication
          1. What just happened?
        14. Using multiple authentication schemes
        15. Writing a custom authentication helper
        16. Time for action – writing a helper program
          1. What just happened?
          2. Have a go hero – implementing the validation function
        17. Making non-concurrent helpers concurrent
        18. Common issues with authentication
          1. Whitelisting selected websites
          2. Challenge loops
          3. Authentication in the intercept or transparent mode
          4. Pop quiz
        19. Summary
      14. 8. Building a Hierarchy of Squid Caches
        1. Cache hierarchies
        2. Reasons to use hierarchical caching
        3. Problems with hierarchical caching
          1. Avoiding a forwarding loop
        4. Joining a cache hierarchy
        5. Time for action – joining a cache hierarchy
          1. What just happened?
          2. ICP options
            1. no-query
            2. multicast-responder
            3. closest-only
            4. background-ping
          3. HTCP options
            1. htcp
            2. htcp=oldsquid
            3. htcp=no-clr
            4. htcp=only-clr
            5. htcp=no-purge-clr
            6. htcp=forward-clr
          4. Peer or neighbor selection
            1. default
            2. round-robin
            3. weighted-round-robin
            4. userhash
            5. sourcehash
            6. carp
            7. multicast-siblings
            8. Options for peer selection methods
              1. weight
              2. basetime
              3. ttl
              4. no-delay
              5. digest-URL
              6. no-digest
              7. ssl
              8. sslcert
              9. sslkey
              10. sslversion
              11. sslcipher
              12. ssloptions
              13. sslcafile
              14. sslcapath
              15. sslcrlfile
              16. sslflags
              17. ssldomain
              18. front-end-https
          5. Other cache peer options
            1. login=username:password
            2. login=PASS
            3. login=PASSTHRU
            4. login=NEGOTIATE
            5. connect-timeout
            6. connect-fail-limit
            7. max-conn
            8. name
            9. proxy-only
            10. allow-miss
        6. Controlling communication with peers
          1. Domain-based forwarding
        7. Time for action – configuring Squid for domain-based forwarding
          1. What just happened?
          2. Cache peer access
        8. Time for action – forwarding requests to cache peers using ACLs
          1. What just happened?
          2. Have a go hero – join a cache hierarchy
          3. Switching peer relationship
        9. Time for action – configuring Squid to switch peer relationship
          1. What just happened?
          2. Controlling request redirects
            1. hierarchy_stoplist
            2. always_direct
            3. never_direct
            4. prefer_direct
            5. nonhierarchical_direct
          3. Have a go hero – proxy server behind a firewall
        10. Peer communication protocols
          1. Internet Cache Protocol
          2. Cache digests
            1. Squid and cache digest configuration
              1. Digest generation
              2. Digest bits per entry
              3. Digest rebuild period
              4. Digest rebuild chunk percentage
              5. Digest swapout chunk
              6. Digest rewrite period
          3. Hypertext Caching Protocol
          4. Pop quiz
        11. Summary
      15. 9. Squid in Reverse Proxy Mode
        1. What is reverse proxy mode?
          1. Exploring reverse proxy mode
        2. Configuring Squid as a server surrogate
        3. HTTP port
          1. HTTP options in reverse proxy mode
            1. defaultsite
            2. vhost
            3. vport
            4. allow-direct
            5. protocol
            6. ignore-cc
        4. HTTPS port
          1. HTTPS options in reverse proxy mode
            1. defaultsite
            2. vhost
            3. version
            4. cipher
            5. options
            6. clientca
            7. cafile
            8. capath
            9. crlfile
            10. dhparams
            11. sslflags
              1. NO_DEFAULT_CA
              2. NO_SESSION_REUSE
              3. VERIFY_CRL
              4. VERIFY_CRL_ALL
            12. sslcontext
            13. vport
          2. Have a go hero – exploring OpenSSL
          3. Adding backend web servers
            1. Cache peer options for reverse proxy mode
              1. originserver
              2. forcedomain
        5. Time for action – adding backend web servers
          1. What just happened?
          2. Support for surrogate protocol
            1. Understanding the surrogate protocol
            2. Configuration options for surrogate support
              1. httpd_accel_surrogate_id
              2. httpd_accel_surrogate_remote
          3. Support for ESI protocol
            1. Configuring Squid for ESI support
        6. Logging messages in web server log format
          1. Ignoring the browser reloads
        7. Time for action – configuring Squid to ignore the browser reloads
          1. Using ignore-cc
          2. Using ignore-reload
          3. Using reload-into-ims
          4. What just happened?
        8. Access controls in reverse proxy mode
          1. Squid in only reverse proxy mode
          2. Squid in reverse proxy and forward proxy mode
          3. Example configurations
          4. Web server and Squid server on the same machine
          5. Accelerating multiple backend web servers hosting one website
          6. Accelerating multiple web servers hosting multiple websites
          7. Have a go hero – set up a Squid proxy server in reverse proxy mode
          8. Pop quiz
        9. Summary
      16. 10. Squid in Intercept Mode
        1. Interception caching
        2. Time for action – understanding interception caching
          1. What just happened?
        3. Advantages of interception caching
          1. Zero client configuration
          2. Better control
          3. Increased reliability
        4. Problems with interception caching
          1. Violates TCP/IP standards
          2. Susceptible to routing problems
          3. No authentication
          4. Supports only HTTP interception
          5. Client exposure
          6. IP filtering
          7. Protocol support
          8. Security vulnerabilities
          9. Have a go hero – interception caching for your network
        5. Diverting HTTP traffic to Squid
          1. Using a router's policy routing to divert requests
          2. Using rule-based switching to divert requests
          3. Using Squid server as a bridge
          4. Us ing WCCP tunnel
          5. Implementing interception caching
          6. Configuring the network devices
          7. Configuring the operating system
            1. Enabling IP forwarding
        6. Time for action – enabling IP forwarding
          1. What just happened?
            1. Redirecting packets to Squid
        7. Time for action – redirecting HTTP traffic to Squid
          1. What just happened?
          2. Have a go hero – testing the traffic diversion
          3. Configuring Squid
          4. Configuring HTTP port
          5. Pop quiz
        8. Summary
      17. 11. Writing URL Redirectors and Rewriters
        1. URL redirectors and rewriters
          1. Understanding URL redirectors
            1. HTTP status codes for redirection
          2. Understanding URL rewriters
          3. Issues with URL rewriters
        2. Squid, URL redirectors, and rewriters
          1. Communication interface
        3. Time for action – exploring the message flow between Squid and redirectors
          1. What just happened?
        4. Time for action – writing a simple URL redirector program
          1. What just happened?
          2. Have a go hero – modify the redirector program
          3. Concurrency
          4. Handling whitespace in URLs
            1. Using the uri_whitespace directive
              1. Strip whitespaces
              2. Deny URLs with whitespaces
              3. Encode whitespaces in URLs
              4. Chop URLs
              5. Allow URLs with whitespaces
            2. Making redirector programs intelligent
        5. Writing our own URL redirector program
        6. Time for action – writing our own template for a URL redirector
          1. What just happened?
          2. Have a go hero – extend the redirector program
        7. Configuring Squid
          1. Specifying the URL redirector program
          2. Controlling redirector children
          3. Controlling requests passed to the redirector program
          4. Bypassing URL redirector programs when under heavy load
          5. Rewriting the Host HTTP header
        8. A special URL redirector – deny_info
        9. Popular URL redirectors
          1. SquidGuard
          2. Squirm
          3. Ad Zapper
          4. Pop quiz
        10. Summary
      18. 12. Troubleshooting Squid
        1. Some common issues
          1. Cannot write to log files
        2. Time for action – changing the ownership of log files
          1. What just happened?
          2. Could not determine hostname
          3. Cannot create swap directories
        3. Time for action – fixing cache directory permissions
          1. What just happened?
          2. Failed verification of swap directories
        4. Time for action – creating swap directories
          1. What just happened?
          2. Address already in use
        5. Time for action – finding the program listening on a specific port
          1. For Linux-based operating systems
          2. For OpenBSD and NetBSD
          3. For FreeBSD and DragonFlyBSD
          4. What just happened?
          5. URLs with underscore results in an invalid URL
            1. Enforce hostname checks
            2. Allow underscore
          6. Squid becomes slow over time
          7. The request or reply is too large
          8. Access denied on the proxy server
          9. Connection refused when reaching a sibling proxy server
        6. Debugging problems
        7. Time for action – debugging HTTP requests
          1. What just happened?
        8. Time for action – debugging access control
          1. What just happened?
          2. Have a go Hero – debugging HTTP responses
          3. Getting help online and reporting bugs
          4. Pop quiz
        9. Summary
      19. A. Pop Quiz Answers
        1. Chapter 1, Getting Started with Squid
        2. Chapter 2, Configuring Squid
        3. Chapter 3, Running Squid
        4. Chapter 4, Getting Started with Squid’s Powerful ACLs and Access Rules
        5. Chapter 5, Understanding Log Files and Log Formats
        6. Chapter 6, Managing Squid and Monitoring Traffic
        7. Chapter 7, Protecting your Squid with Authentication
        8. Chapter 8, Building a Hierarchy of Squid Caches
        9. Chapter 9, Squid in Reverse Proxy Mode
        10. Chapter 10, Squid in Intercept Mode
        11. Chapter 11: Writing URL Redirectors and Rewriters
        12. Chapter 12: Troubleshooting Squid