CL-HTTP Proxy Service

Proxy Relay | Caching Proxy | Reverse Proxy | Extensions

Prism Image CL-HTTP provides HTTP proxy service. Proxy functionality is integrated into the existing system architecture, so CL-HTTP may act as a proxy without interrupting normal server operations. When CL-HTTP receives a request for a remote resource, it may utilize the client module and relay the information to the client. Proxy access is controlled via a top-level switch as well as a list of allowed subnets. The current release also includes an caching proxy mode. Caching support is optional and is controlled by a separate server preference.

  1. Proxy Relay
  2. Proxy relay (no caching) service can be provided for all standard HTTP/1.0 and HTTP/1.1 methods. The HTTP/1.0 PUT extension is not supported. Access to basic proxy services is controlled via http:*proxy-service* and http:*proxy-subnets*. The proxy uses the standard CL-HTTP client to retrieve resources, and the default HTTP version used for making such requests is controlled by http:*client-http-version*. The relay methods are HTTP/1.1 compliant, and discrepancies should be reported (or fixed!) when encountered.


  3. Caching Proxy
  4.  Proxy access to the caching routines is controlled via http:*proxy-caching-p*. The current version of the cache uses in-memory data structures to store meta-information about cached representations of resources, and the file-system to store their actual entities. The file HTTP:proxy;database.lisp illustrates how to define new database implementations. While the caching functionality is HTTP/1.1 compliant, yet it interoperates reasonably with HTTP/1.0 clients.

    If the proxy is currently loaded, you can view a list of the cached resources on the server. The cache implements incremental and full garbage collection strategies that delete least recently accessed resources in order to stay within the limits specified by http:*proxy-cache-maximum-size* and http:*proxy-cache-maximum-resources*


  5. Reverse Proxy
  6. The proxy has a reverse proxy capability as well. URLs can be exported that map to URL spaces on other servers. This capability is particular useful when providing HTTPS service for a back side server running ordinary HTTP, or for distributing work over several back side servers. See the documentation for http:export-url


  7. Extensions
  8. This proxy is meant more as a platform for intelligent caching and collaboration research than a competitor for high-load corporate proxies. Several immediate oppurtunities present themselves.

    Cache Prefetch
    The proxy cache can be used along with the W4 Web Walker to implement prefetch operations. http:proxy;prefetch.lisp provides such an implementation.
    Collaborative Browsing
    The proxy may be used to infer group browsing patterns and aid in resource discovery.
    Annotation
    The cache may act as a platform for group annotation of resources.
    Intelligent Caching
    CL-HTTP should provide an excellent environment for research in dynamic caching algorithms.

Christopher Vincent (Christopher_Vincent@nospam.alum.mit.edu)
John C. Mallery (jcma@nospam.csail.mit.edu)