Home users and small businesses often have a single IP address, but multiple machines and services which offer a web interface. HTTP 1.1 requires a host name in all requests which can be used to route the request to the appropriate machine. This can be handled by various web servers currently available, though often not to the degree of actually passing requests to other physical machines. The problem is further complicated when the internal destination hosts expect the request to be intended for their addresses. Rewriting request headers and body complicates matters even further and existing solutions do not easily deal with the issue.
Another issue is the question of debugging raw HTTP traffic. Various web services libraries abstract away the actual HTTP content and make it difficult to debug requests. Again, there are tools that can assist in the debugging process, but often have weaknesses of their own. For example, one such tool will listen on a specified local port, and forward requests untouched to a specified remote address and port. This is sufficient for some cases, but fails is the machine needs the host header to be rewritten, or is listening on an SSL socket.
HTTPManifold solves the mentioned problems directly. It is a light-weight web server and offers simple configuration and the necessary features to overcome the mentioned problems.
* It can log raw HTTP requests and responses.
* It will rewrite HTTP headers and body, changing the address and ports to match the destination machines.
* It can stand in front of a more primitive web server and offer additional features, e.g. if the destination server doesn't handle the HEAD command, HTTManifold can translate it into a GET for the internal request.
* It can bridge protocols to allow content to be monitored for debugging purposes, e.g. listen as HTTPS server and forwarding to HTTP server, and vice versa.
* It can log forwarded traffic into separate log files.