fix error
This commit is contained in:
parent
42c8b4f45f
commit
2528857aa7
|
@ -38,9 +38,16 @@ class Roda
|
|||
client = NetX::HTTPUnix.new(_sock_url)
|
||||
request_class = Net::HTTP.const_get(:"#{env['REQUEST_METHOD'].to_s.downcase.capitalize}")
|
||||
req = request_class.new(_proxy_url.to_s, _proxy_headers)
|
||||
|
||||
env_body = env["rack.input"].read
|
||||
env_content_type = env['CONTENT_TYPE']
|
||||
unless env_body.nil?
|
||||
req.body = env_body
|
||||
end
|
||||
unless env_content_type.nil?
|
||||
req.content_type = env_content_type
|
||||
end
|
||||
f_response = client.request(req)
|
||||
# p f_response
|
||||
f_response.content_length = nil #prevent duplicate header Content-Length and content-length
|
||||
_respond(f_response)
|
||||
end
|
||||
|
||||
|
@ -71,12 +78,15 @@ class Roda
|
|||
end
|
||||
def _proxy_url
|
||||
uri = URI("#{roda_class.opts[:proxy_path]}#{env['PATH_INFO'][1..-1]}")
|
||||
if !env['QUERY_STRING'].empty?
|
||||
uri.query = env['QUERY_STRING']
|
||||
end
|
||||
uri
|
||||
end
|
||||
|
||||
def _proxy_headers
|
||||
env
|
||||
env_host = env['HTTP_HOST'].to_s
|
||||
env_new = env
|
||||
.select { |k, _v| k.start_with? 'HTTP_' }
|
||||
.reject { |k, _v| k == 'HTTP_HOST' }
|
||||
.transform_keys do |k|
|
||||
|
@ -85,9 +95,10 @@ class Roda
|
|||
.map(&:capitalize)
|
||||
.join('-')
|
||||
end
|
||||
.merge({
|
||||
'Host' => "127.0.0.1"
|
||||
})
|
||||
if env_host
|
||||
env_new.merge!({'Host' => env_host})
|
||||
end
|
||||
env_new
|
||||
end
|
||||
|
||||
def _respond(proxied_response)
|
||||
|
@ -98,6 +109,7 @@ class Roda
|
|||
.each { |k, v| response[k] = v }
|
||||
response.write(proxied_response.body)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue