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!)
|
||||
|
||||
```
|
||||
$ bundle
|
||||
$ bundle install
|
||||
```
|
||||
|
||||
## 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 }
|
||||
```
|
||||
|
||||
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
|
||||
|
@ -91,10 +97,12 @@ All pull requests will become first class citizens.
|
|||
|
||||
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)
|
||||
- [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)
|
||||
|
||||
# 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
|
||||
target_request_headers = extract_http_request_headers(source_request.env).merge(options[:headers])
|
||||
|
||||
# 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
|
||||
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.rewind
|
||||
target_request.body_stream = source_request.body
|
||||
target_request.content_length = source_request.content_length || 0
|
||||
end
|
||||
|
||||
target_request.content_length = source_request.content_length || 0
|
||||
target_request.content_type = source_request.content_type if source_request.content_type
|
||||
|
||||
# Hold the response here
|
||||
|
@ -85,7 +87,8 @@ module ReverseProxy
|
|||
http_options.merge!(options[:http]) if options[:http]
|
||||
|
||||
# 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)
|
||||
target_response = http.request(target_request)
|
||||
end
|
||||
|
|
|
@ -2,25 +2,27 @@
|
|||
# DO NOT EDIT THIS FILE DIRECTLY
|
||||
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
||||
# -*- 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|
|
||||
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.require_paths = ["lib".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.email = "hello@james.hu".freeze
|
||||
s.extra_rdoc_files = [
|
||||
"CHANGELOG.md",
|
||||
"LICENSE",
|
||||
"README.md"
|
||||
]
|
||||
s.files = [
|
||||
".document",
|
||||
".ruby-version",
|
||||
"CHANGELOG.md",
|
||||
"Gemfile",
|
||||
"Gemfile.lock",
|
||||
"LICENSE",
|
||||
|
@ -36,36 +38,30 @@ Gem::Specification.new do |s|
|
|||
]
|
||||
s.homepage = "http://github.com/axsuul/rails-reverse-proxy".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
|
||||
|
||||
if s.respond_to? :specification_version then
|
||||
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<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<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"])
|
||||
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<bundler>.freeze, ["~> 1.0"])
|
||||
s.add_dependency(%q<jeweler>.freeze, ["~> 2.1.2"])
|
||||
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
||||
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<jeweler>.freeze, ["~> 2.3.9"])
|
||||
s.add_dependency(%q<nokogiri>.freeze, [">= 1.11.3"])
|
||||
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
||||
s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
||||
s.add_dependency(%q<jeweler>.freeze, ["~> 2.1.2"])
|
||||
s.add_dependency(%q<shoulda>.freeze, [">= 0"])
|
||||
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue