class RackReverseProxy::Middleware

Rack middleware for handling reverse proxying

Public Class Methods

new(app = nil, &b) click to toggle source
# File lib/rack_reverse_proxy/middleware.rb, line 11
def initialize(app = nil, &b)
  @app = app || lambda { |_| [404, [], []] }
  @rules = []
  @global_options = {
    :preserve_host => true,
    :preserve_encoding => false,
    :x_forwarded_headers => true,
    :matching => :all,
    :replace_response_host => false
  }
  instance_eval(&b) if block_given?
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack_reverse_proxy/middleware.rb, line 24
def call(env)
  RoundTrip.new(@app, env, @global_options, @rules).call
end

Private Instance Methods

reverse_proxy(rule, url = nil, opts = {}) click to toggle source
# File lib/rack_reverse_proxy/middleware.rb, line 34
def reverse_proxy(rule, url = nil, opts = {})
  if rule.is_a?(String) && url.is_a?(String) && URI(url).class == URI::Generic
    raise Errors::GenericURI.new, url
  end
  @rules << Rule.new(rule, url, opts)
end
reverse_proxy_options(options) click to toggle source
# File lib/rack_reverse_proxy/middleware.rb, line 30
def reverse_proxy_options(options)
  @global_options = options
end