Skip to content

SuperGoodSoft/rails-reverse-proxy

This branch is 1 commit ahead of axsuul/rails-reverse-proxy:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bf9028b · Apr 19, 2024
Apr 19, 2024
Jun 5, 2015
Apr 20, 2018
Feb 8, 2022
Feb 21, 2024
Feb 8, 2022
Feb 8, 2022
Oct 5, 2016
Feb 21, 2024
Jun 5, 2015
Feb 21, 2024
Feb 21, 2024

Repository files navigation

rails-reverse-proxy

A reverse proxy for Ruby on Rails.

A reverse proxy accepts a request from a client, forwards it to a server that can fulfill it, and returns the server's response to the client

Installation

You know the drill. In your Gemfile

gem 'rails-reverse-proxy'

Then (you guessed it!)

$ bundle install

Usage

A use case for this gem is serving WordPress on a path within your Rails application, such as /blog.

To do this, your controller might look like this

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_connect
      # - 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" }

If you'd like to bypass SSL verification

reverse_proxy "http://localhost:8000", verify_ssl: false

If you'd like to customize options passed into the underlying Net:HTTP object

reverse_proxy "http://localhost:8000", http: { read_timeout: 20, open_timeout: 100 }

If you'd like to reset the Accept-Encoding header in order to disable compression or other server-side encodings

reverse_proxy "http://localhost:8000", reset_accept_encoding: true

Determine what version you're using

ReverseProxy.version

Feel free to open an issue!

Contributing

All pull requests will become first class citizens.

Contributors

Special thanks to our contributors!

About

A reverse proxy for Ruby on Rails

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%