| • Science | • People | • Locations | • Timeline |
It is primarily designed to run on Unix-like systems.
Squid has been in development for many years and is very complete, robust, and open source ( GPL). It supports many protocols, although it is primarily used for HTTP and FTP.
Some support is available for TLS, SSL, and HTTPS [1].
A client program (e.g. browser) either has to explicitly specify the proxy server it wants to use (typical for ISP customers), or it could be using a proxy without any extra configuration: "transparent caching,", in which case all outgoing HTTP requests are intercepted by Squid and all responses are cached. The latter is typically a corporate set-up (all clients are on the same LAN).
Squid has some features that can further help anonymize connections, such as disabling or changing specific header fields in a client's HTTP requests. See the documentation for header_access and header_replace for further details.
The above set-up - caching the contents of an unlimited number of webservers for a limited number of clients - is the classical one. Another set-up is 'reverse-proxy' or 'webserver acceleration' (using httpd_accel_host). In this set-up, the cache serves an unlimited number of clients for a limited number of - or just one - web servers.
Suppose slow.example.com is a 'real' web server, and www.example.com is a Squid cache server that 'accelerates' it. The first time any page was requested from www.example.com, the cache server would get the actual page from slow.example.com, but for the next hour/day/year (matter of cache configuration) every next request would get this stored copy directly from the accelerator. Result: less traffic on the source server, which means less CPU usage, less memory usage and less bandwidth.
It is possible for a single Squid server to serve both as a normal and a reverse proxy simultaneously.