Compare commits
10 Commits
af0c398309
...
e386a90f29
Author | SHA1 | Date |
---|---|---|
|
e386a90f29 | |
|
b5156fa170 | |
|
3f2d05f0ac | |
|
63c886854b | |
|
6c814bfd88 | |
|
1dd61fbe1d | |
|
1c84556edd | |
|
37beb6377e | |
|
c8294a03dc | |
|
8f193e2dde |
20
README.md
20
README.md
|
@ -15,7 +15,7 @@ gem 'rails-reverse-proxy'
|
||||||
Then (you guessed it!)
|
Then (you guessed it!)
|
||||||
|
|
||||||
```
|
```
|
||||||
$ bundle
|
$ bundle install
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
@ -75,6 +75,12 @@ If you'd like to customize options passed into the underlying [`Net:HTTP`](https
|
||||||
reverse_proxy "http://localhost:8000", http: { read_timeout: 20, open_timeout: 100 }
|
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
|
Determine what version you're using
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
|
@ -91,10 +97,12 @@ All pull requests will become first class citizens.
|
||||||
|
|
||||||
Special thanks to our 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)
|
||||||
|
- [jcs](https://github.com/jcs)
|
||||||
|
- [kylewlacy](https://github.com/kylewlacy)
|
||||||
|
- [marcosbeirigo](https://github.com/marcosbeirigo)
|
||||||
- [mediafinger](https://github.com/mediafinger)
|
- [mediafinger](https://github.com/mediafinger)
|
||||||
- [miyukki](https://github.com/miyukki)
|
- [miyukki](https://github.com/miyukki)
|
||||||
- [bapirex](https://github.com/bapirex)
|
|
||||||
- [marcosbeirigo](https://github.com/marcosbeirigo)
|
|
||||||
- [avinashkoulavkar](https://github.com/avinashkoulavkar)
|
|
||||||
- [jcs](https://github.com/jcs)
|
|
||||||
- [aardvarkk](https://github.com/aardvarkk)
|
|
||||||
|
|
|
@ -49,13 +49,15 @@ module ReverseProxy
|
||||||
source_request = Rack::Request.new(env)
|
source_request = Rack::Request.new(env)
|
||||||
|
|
||||||
# We can pass in a custom path
|
# We can pass in a custom path
|
||||||
uri = Addressable::URI.parse("#{url}#{options[:path] || env['ORIGINAL_FULLPATH']}")
|
uri = Addressable::URI.parse(self.url)
|
||||||
|
prefix_path = uri.request_uri
|
||||||
|
path = "#{prefix_path}#{options[:path] || env['ORIGINAL_FULLPATH']}"
|
||||||
|
|
||||||
# Define headers
|
# Define headers
|
||||||
target_request_headers = extract_http_request_headers(source_request.env).merge(options[:headers])
|
target_request_headers = extract_http_request_headers(source_request.env).merge(options[:headers])
|
||||||
|
|
||||||
# Initialize request
|
# Initialize request
|
||||||
target_request = Net::HTTP.const_get(source_request.request_method.capitalize).new(uri.request_uri, target_request_headers)
|
target_request = Net::HTTP.const_get(source_request.request_method.capitalize).new(path, target_request_headers)
|
||||||
|
|
||||||
# Basic auth
|
# Basic auth
|
||||||
target_request.basic_auth(options[:username], options[:password]) if options[:username] and options[:password]
|
target_request.basic_auth(options[:username], options[:password]) if options[:username] and options[:password]
|
||||||
|
@ -65,9 +67,9 @@ module ReverseProxy
|
||||||
&& source_request.body
|
&& source_request.body
|
||||||
source_request.body.rewind
|
source_request.body.rewind
|
||||||
target_request.body_stream = source_request.body
|
target_request.body_stream = source_request.body
|
||||||
|
target_request.content_length = source_request.content_length || 0
|
||||||
end
|
end
|
||||||
|
|
||||||
target_request.content_length = source_request.content_length || 0
|
|
||||||
target_request.content_type = source_request.content_type if source_request.content_type
|
target_request.content_type = source_request.content_type if source_request.content_type
|
||||||
|
|
||||||
# Hold the response here
|
# Hold the response here
|
||||||
|
@ -85,7 +87,8 @@ module ReverseProxy
|
||||||
http_options.merge!(options[:http]) if options[:http]
|
http_options.merge!(options[:http]) if options[:http]
|
||||||
|
|
||||||
# Make the request
|
# Make the request
|
||||||
Net::HTTP.start(uri.hostname, uri.port, http_options) do |http|
|
hostname = uri.starts_with?("unix://") ? uri.to_s : uri.hostname
|
||||||
|
Net::HTTP.start(hostname, uri.port, http_options) do |http|
|
||||||
callbacks[:on_connect].call(http)
|
callbacks[:on_connect].call(http)
|
||||||
target_response = http.request(target_request)
|
target_response = http.request(target_request)
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,25 +2,27 @@
|
||||||
# DO NOT EDIT THIS FILE DIRECTLY
|
# DO NOT EDIT THIS FILE DIRECTLY
|
||||||
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
||||||
# -*- encoding: utf-8 -*-
|
# -*- encoding: utf-8 -*-
|
||||||
# stub: rails-reverse-proxy 0.10.1 ruby lib
|
# stub: rails-reverse-proxy 0.12.0 ruby lib
|
||||||
|
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.name = "rails-reverse-proxy".freeze
|
s.name = "rails-reverse-proxy".freeze
|
||||||
s.version = "0.10.1"
|
s.version = "0.12.0"
|
||||||
|
|
||||||
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
||||||
s.require_paths = ["lib".freeze]
|
s.require_paths = ["lib".freeze]
|
||||||
s.authors = ["James Hu".freeze]
|
s.authors = ["James Hu".freeze]
|
||||||
s.date = "2021-03-24"
|
s.date = "2023-03-02"
|
||||||
s.description = "Reverse proxy for Ruby on Rails".freeze
|
s.description = "Reverse proxy for Ruby on Rails".freeze
|
||||||
s.email = "hello@james.hu".freeze
|
s.email = "hello@james.hu".freeze
|
||||||
s.extra_rdoc_files = [
|
s.extra_rdoc_files = [
|
||||||
|
"CHANGELOG.md",
|
||||||
"LICENSE",
|
"LICENSE",
|
||||||
"README.md"
|
"README.md"
|
||||||
]
|
]
|
||||||
s.files = [
|
s.files = [
|
||||||
".document",
|
".document",
|
||||||
".ruby-version",
|
".ruby-version",
|
||||||
|
"CHANGELOG.md",
|
||||||
"Gemfile",
|
"Gemfile",
|
||||||
"Gemfile.lock",
|
"Gemfile.lock",
|
||||||
"LICENSE",
|
"LICENSE",
|
||||||
|
@ -36,36 +38,30 @@ Gem::Specification.new do |s|
|
||||||
]
|
]
|
||||||
s.homepage = "http://github.com/axsuul/rails-reverse-proxy".freeze
|
s.homepage = "http://github.com/axsuul/rails-reverse-proxy".freeze
|
||||||
s.licenses = ["MIT".freeze]
|
s.licenses = ["MIT".freeze]
|
||||||
s.rubygems_version = "2.6.13".freeze
|
s.rubygems_version = "3.1.6".freeze
|
||||||
s.summary = "Reverse proxy for Ruby on Rails".freeze
|
s.summary = "Reverse proxy for Ruby on Rails".freeze
|
||||||
|
|
||||||
if s.respond_to? :specification_version then
|
if s.respond_to? :specification_version then
|
||||||
s.specification_version = 4
|
s.specification_version = 4
|
||||||
|
end
|
||||||
|
|
||||||
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
if s.respond_to? :add_runtime_dependency then
|
||||||
s.add_runtime_dependency(%q<actionpack>.freeze, [">= 0"])
|
s.add_runtime_dependency(%q<actionpack>.freeze, [">= 0"])
|
||||||
s.add_runtime_dependency(%q<addressable>.freeze, [">= 0"])
|
s.add_runtime_dependency(%q<addressable>.freeze, [">= 0"])
|
||||||
s.add_development_dependency(%q<shoulda>.freeze, [">= 0"])
|
|
||||||
s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
|
||||||
s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
||||||
s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.1.2"])
|
s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.9"])
|
||||||
|
s.add_development_dependency(%q<nokogiri>.freeze, [">= 1.11.3"])
|
||||||
|
s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
||||||
|
s.add_development_dependency(%q<shoulda>.freeze, [">= 0"])
|
||||||
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
|
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
|
||||||
else
|
else
|
||||||
s.add_dependency(%q<actionpack>.freeze, [">= 0"])
|
s.add_dependency(%q<actionpack>.freeze, [">= 0"])
|
||||||
s.add_dependency(%q<addressable>.freeze, [">= 0"])
|
s.add_dependency(%q<addressable>.freeze, [">= 0"])
|
||||||
s.add_dependency(%q<shoulda>.freeze, [">= 0"])
|
|
||||||
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
|
||||||
s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
||||||
s.add_dependency(%q<jeweler>.freeze, ["~> 2.1.2"])
|
s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.9"])
|
||||||
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
s.add_dependency(%q<nokogiri>.freeze, [">= 1.11.3"])
|
||||||
end
|
|
||||||
else
|
|
||||||
s.add_dependency(%q<actionpack>.freeze, [">= 0"])
|
|
||||||
s.add_dependency(%q<addressable>.freeze, [">= 0"])
|
|
||||||
s.add_dependency(%q<shoulda>.freeze, [">= 0"])
|
|
||||||
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
||||||
s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
s.add_dependency(%q<shoulda>.freeze, [">= 0"])
|
||||||
s.add_dependency(%q<jeweler>.freeze, ["~> 2.1.2"])
|
|
||||||
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue