diff options
author | Eric Wong <e@80x24.org> | 2015-03-13 23:46:43 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-03-14 02:57:04 +0000 |
commit | 001ad1c290a89e6d3c7e4d66283197bd003f367a (patch) | |
tree | 08c44143dfd4acd57eb625556d07335892b53c11 /extras | |
parent | 84a393699edfaf9da25fc4de5232468c2b0e2470 (diff) | |
download | yahns-001ad1c290a89e6d3c7e4d66283197bd003f367a.tar.gz |
Of course, some users will prefer to bind HTTP application servers to Unix domain sockets for better isolation and (maybe) better performance.
Diffstat (limited to 'extras')
-rw-r--r-- | extras/proxy_pass.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/extras/proxy_pass.rb b/extras/proxy_pass.rb index d435ebe..00adf18 100644 --- a/extras/proxy_pass.rb +++ b/extras/proxy_pass.rb @@ -112,12 +112,15 @@ class ProxyPass # :nodoc: def initialize(dest, timeout = 5) case dest + when %r{\Aunix:([^:]+)(?::(/.*))?\z} + path = $2 + @sockaddr = Socket.sockaddr_un($1) when %r{\Ahttp://([^/]+)(/.*)?\z} path = $2 host, port = $1.split(':') @sockaddr = Socket.sockaddr_in(port || 80, host) else - raise ArgumentError, "destination must be an HTTP URL" + raise ArgumentError, "destination must be an HTTP URL or unix: path" end init_path_vars(path) @pool = ConnPool.new @@ -125,7 +128,7 @@ class ProxyPass # :nodoc: end def init_path_vars(path) - path ||= '$(fullpath)' + path ||= '$fullpath' # methods from Rack::Request we want: allow = %w(fullpath host_with_port host port url path) want = path.scan(/\$(\w+)/).flatten! || [] |