A request/response rewriting HTTP proxy. A Rack app. Subclass Rack::Proxy and provide your rewrite_env and rewrite_response methods. Example: class Foo < Rack::Proxy def rewrite_env(env) env["HTTP_HOST"] = "example.com" env end def rewrite_response(triplet) status, headers, body = triplet headers["X-Foo"] = "Bar" triplet end end Example: disable SSL session verification when proxying a server with e.g. self-signed SSL certs class TrustingProxy < Rack::Proxy def rewrite_env(env) env["rack.ssl_verify_none"] = true env end end The same can be achieved for *all* requests going through the `Rack::Proxy` instance by using Rack::Proxy.new(ssl_verify_none: true) See tests for more examples. WARNING: Doesn't work with fakeweb/webmock. Both libraries monkey-patch net/http code.