Tinyproxy is a light-weight HTTP proxy daemon for POSIX operating
systems. It is distributed using the GNU GPL license. Designed from the
ground up to be fast and yet small, it is an ideal solution for use
cases such as embedded deployments where a full featured HTTP proxy is
required, but the system resources for a larger proxy are
unavailable.
Features
- Small footprint:
Tinyproxy requires very little in the way of system resources.
The memory footprint tends to be around 2 MB with glibc, and the
CPU load increases linearly with the number of simultaneous
connections (depending on the speed of the connection). Thus,
Tinyproxy can be run on an older machine, or on a network
appliance such as a Linux-based broadband router, without any
noticeable impact on performance.
- Easily modified: If you're looking to build
a custom web proxy, Tinyproxy is very easy to modify to your
custom needs. The source is straightforward, adhering to the
KISS principle. As such, it can be used as a foundation for
anything you may need a web proxy to do.
- Anonymous mode: Allows you to specify which
HTTP headers should be allowed through, and which should be
blocked. This allows you to restrict both what data comes to
your web browser from the HTTP server (eg., cookies), and to
restrict what data is allowed through from your web browser to
the HTTP server (eg., version information).
- Remote monitoring: Using the remote
monitoring feature, you can access proxy statistics from afar,
letting you know exactly how busy the proxy is.
- Load average monitoring: Tinyproxy can be
configured to watch the load average on most platforms, and
start refusing requests when the load reaches a certain
point. You may recognize this feature from Sendmail.
- Access control: You can configure Tinyproxy
to only allow requests from a certain subnet, or from a certain
interface, thus allowing you to ensure that random, unauthorized
people will not be using your proxy.
- Secure: With a bit of configuration
(specifically, making the log file owned by nobody and running
it on a port > 1024), Tinyproxy can be made to run without any
special privileges, thus minimizing the chance of system
compromise. Furthermore, it was designed with an eye towards
preventing buffer overflows. The simplicity of the code ensures
it remains easy to spot such bugs.