99 lines
2.1 KiB
Markdown
99 lines
2.1 KiB
Markdown
# rails-reverse-proxy
|
|
|
|
Gives you the ability to reverse proxy within Rails.
|
|
|
|
## Installation
|
|
|
|
You know the drill. In your Gemfile, have the line
|
|
|
|
```ruby
|
|
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
|
|
|
|
```ruby
|
|
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
|
|
|
|
```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 the options passed into the [HTTP session](https://ruby-doc.org/stdlib-2.4.0/libdoc/net/http/rdoc/Net/HTTP.html#start-method)
|
|
|
|
```ruby
|
|
reverse_proxy "http://localhost:8000", http: { read_timeout: 20, open_timeout: 100 }
|
|
```
|
|
|
|
Use this method to determine what version you're running
|
|
|
|
```ruby
|
|
ReverseProxy.version
|
|
```
|
|
|
|
Feel free to open an issue!
|
|
|
|
## Contributing
|
|
|
|
All pull requests will become first class citizens.
|
|
|
|
## Thanks
|
|
|
|
Special thanks to our contributors!
|
|
|
|
- [miyukki](https://github.com/miyukki)
|
|
- [bapirex](https://github.com/bapirex)
|
|
- [marcosbeirigo](https://github.com/marcosbeirigo)
|
|
- [avinashkoulavkar](https://github.com/avinashkoulavkar)
|
|
|
|
## Copyright
|
|
|
|
Copyright (c) 2016-2017 James Hu. See [LICENSE](LICENSE) for
|
|
further details.
|