2016-05-09 3 views
1

私はすべて*.devリクエストをポート80でキャッチし、Rack Proxyを使用して適切なRackプロジェクトに送信しようとしています。私は要求をキャッチすることができ、URIに基づいて私はconfig.ruを特定のフォルダに探します。私が見つけられたら、ポート3000でサーバーを起動します。Rack Proxyを使用しているとき接続が拒否されました

その後、ポート80でリクエストを受信すると、HTTP_HOSTlocalhost:3000に設定しようとしていますが、メッセージUnexpected error while processing request: Connection refused - connect(2) for "localhost" port 3000localhost:3000を通じてアプリケーションにアクセスできますが、*.devドメインにはアクセスできません。私はすでに別のポートを使ってみましたが、どちらも動作していないので、それを実行しているユーザーと何か関係があると思います。しかし、私は誰かがこれを手伝ってくれることを願っています。

require 'rack-proxy' 

class AppProxy < Rack::Proxy 
    def rewrite_env(env) 
    request = Rack::Request.new(env) 
    site = request.host[0..-5] 
    uid = File.stat(__FILE__).uid 

    path = Etc.getpwuid(uid).dir + '/Software/Applications/' 

    front_controller = "#{path}#{site}/config.ru" 
    if File.file?(front_controller) 

    system "rackup -p 3000 -D #{front_controller} " 
    env["HTTP_HOST"] = "localhost:3000" 
    else 
    raise Exception.new "Not found" 
    end 

    env 
end 
end 

run AppProxy.new 

EDIT

ruby  56247   root 10u IPv4 0x727d74bd0b95bd9b  0t0  TCP *:80 (LISTEN) 
ruby  56247   root 11u IPv4 0x727d74bd0a3b9bfb  0t0 TCP 127.0.0.1:80->127.0.0.1:52773 (ESTABLISHED) 
ruby  56255   root 12u IPv6 0x727d74bd094e3c8b  0t0 TCP [::1]:3000 (LISTEN) 

I:私は、ポート80と3000のために、以下の結果を得るサーバとsudo lsof -i -n -P | grep TCPを実行した後、ポート3000でリッスンし、何かがあれば私がチェックしました私はこれの正確な意味を知らないので、これが何か役に立っているのか分からない。

答えて

1

解決済み。問題は、サーバーの起動が少し遅くなり、HTTP_HOSTを別の場所に設定し、ポート3000がまだ使用されていないことでした。秒を待って問題を解決しました。私のコードは次のようになります:

require 'rack-proxy' 

class AppProxy < Rack::Proxy 
    def rewrite_env(env) 
    request = Rack::Request.new(env) 
    site = request.host[0..-5] 
    uid = File.stat(__FILE__).uid 

    path = Etc.getpwuid(uid).dir + '/Software/Applications/' 
    front_controller = "#{path}#{site}/config.ru" 

    if File.file?(front_controller) 
     system "rackup -D -p 3000 #{front_controller} " 

     sleep(1) 

     env["HTTP_HOST"] = "localhost:3000" 
    else 
     raise Exception.new "Not found" 
    end 

    env 
    end 
end 

run AppProxy.new 
関連する問題