Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/axsuul/rails-reverse-proxy
A reverse proxy for Ruby on Rails
https://github.com/axsuul/rails-reverse-proxy
gem networking rails reverse-proxy
Last synced: 5 days ago
JSON representation
A reverse proxy for Ruby on Rails
- Host: GitHub
- URL: https://github.com/axsuul/rails-reverse-proxy
- Owner: axsuul
- License: mit
- Created: 2015-06-05T02:20:59.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-03-28T17:29:49.000Z (9 months ago)
- Last Synced: 2024-04-24T12:20:15.477Z (8 months ago)
- Topics: gem, networking, rails, reverse-proxy
- Language: Ruby
- Size: 61.5 KB
- Stars: 229
- Watchers: 8
- Forks: 58
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-network-stuff - **104**星
README
# 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
```ruby
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
```ruby
class WordpressController < ApplicationController
include ReverseProxy::Controllerdef 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
```ruby
match 'blog/*path' => 'wordpress#index', via: [:get, :post, :put, :patch, :delete]
```You can also pass options into `reverse_proxy`
```ruby
reverse_proxy "http://localhost:8000", path: "custom-path", headers: { 'X-Foo' => "Bar" }
```If you'd like to bypass SSL verification
```ruby
reverse_proxy "http://localhost:8000", verify_ssl: false
```If you'd like to customize options passed into the underlying [`Net:HTTP`](https://ruby-doc.org/stdlib-2.4.0/libdoc/net/http/rdoc/Net/HTTP.html#start-method) object
```ruby
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
```ruby
reverse_proxy "http://localhost:8000", reset_accept_encoding: true
```Determine what version you're using
```ruby
ReverseProxy.version
```Feel free to open an issue!
## Contributing
All pull requests will become first class citizens.
## Contributors
Special thanks to our contributors!
- [aardvarkk](https://github.com/aardvarkk)
- [Arjeno](https://github.com/Arjeno)
- [avinashkoulavkar](https://github.com/avinashkoulavkar)
- [bapirex](https://github.com/bapirex)
- [davidrunger](https://github.com/davidrunger)
- [jcs](https://github.com/jcs)
- [kylewlacy](https://github.com/kylewlacy)
- [marcosbeirigo](https://github.com/marcosbeirigo)
- [mediafinger](https://github.com/mediafinger)
- [miyukki](https://github.com/miyukki)