O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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