Go to file
James Hu 95c1227abc Merge pull request #1 from miyukki/feature/ipv6
Use Addressable::URI#hostname instead of Addressable::URI#host
2015-08-11 09:10:48 -07:00
lib Use Addressable::URI#hostname instead of Addressable::URI#host 2015-08-12 00:32:08 +09:00
.document Initial commit to rails-reverse-proxy. 2015-06-04 19:22:09 -07:00
.gitignore Initial commit to rails-reverse-proxy. 2015-06-04 19:22:09 -07:00
Gemfile Add cookiejar dep 2015-06-04 23:00:20 -07:00
Gemfile.lock Add cookiejar dep 2015-06-04 23:00:20 -07:00
LICENSE.txt Initial commit to rails-reverse-proxy. 2015-06-04 19:22:09 -07:00
README.md Have a proper README 2015-06-04 20:54:26 -07:00
Rakefile We don't use test and rdoc 2015-06-04 20:36:20 -07:00
VERSION Version bump to 0.4.1 2015-06-04 23:08:09 -07:00
rails-reverse-proxy.gemspec Regenerate gemspec for version 0.4.1 2015-06-04 23:08:12 -07:00

README.md

rails-reverse-proxy

Gives you the ability to reverse proxy within Rails.

Installation

You know the drill. In your Gemfile, have the line

gem 'rails-reverse-proxy'

Then (you guessed it!)

$ bundle

Usage

An example usage of this gem is hosting a WordPress site on a path within your Rails application, such as /blog. To do this, you'll need something like

class WordpressController < ApplicationController
  include ReverseProxy::Controller

  def index
    # Assuming the WordPress server is being hosted on port 8080
    reverse_proxy "http://localhost:8080" do |config|
      # We got a 404!
      config.on_missing do |code, response|
        redirect_to root_url and return
      end

      # There's also other callbacks:
      # - on_set_cookies
      # - on_response
      # - on_set_cookies
      # - on_success
      # - on_redirect
      # - on_missing
      # - on_error
      # - on_complete
    end
  end
end

Then in your routes.rb file, you should have something like

match 'blog/*path' => 'wordpress#index', via: [:get, :post, :put, :patch, :delete]

You can also pass options into reverse_proxy

reverse_proxy "http://localhost:8000", path: "custom-path", headers: { 'X-Foo' => "Bar" }

Sorry if these instructions are sparse. Feel free to reach out or read the source!

Contributing

All pull requests will become first class citizens.

Copyright (c) 2015 James Hu. See LICENSE.txt for further details.