# class WEBrick::HTTPProxyServer

An HTTP Proxy server which proxies GET, HEAD and POST requests.

To create a simple proxy server:

    require 'webrick'
    require 'webrick/httpproxy'

    proxy = WEBrick::HTTPProxyServer.new Port: 8000

    trap 'INT'  do proxy.shutdown end
    trap 'TERM' do proxy.shutdown end

    proxy.start

See `::new` for proxy-specific configuration items.

## Modifying proxied responses¶ ↑

To modify content the proxy server returns use the `:ProxyContentHandler` option:

    handler = proc do |req, res|
      if res['content-type'] == 'text/plain' then
        res.body << "\nThis content was proxied!\n"
      end
    end

    proxy =
      WEBrick::HTTPProxyServer.new Port: 8000, ProxyContentHandler: handler

### Public Class Methods

new(config={}, default=Config::HTTP) click to toggle source

Proxy server configurations. The proxy server handles the following configuration items in addition to those supported by HTTPServer:

:ProxyAuthProc

  Called with a request and response to authorize a request

:ProxyVia

  Appended to the via header

:ProxyURI

  The proxy server's `URI`

:ProxyContentHandler

  Called with a request and response and allows modification of the response

:ProxyTimeout

  Sets the proxy timeouts to 30 seconds for open and 60 seconds for read operations

Calls superclass method

    # File lib/webrick/httpproxy.rb, line 84
    def initialize(config={}, default=Config::HTTP)
      super(config, default)
      c = @config
      @via = "#{c[:HTTPVersion]} #{c[:ServerName]}:#{c[:Port]}"
    end