myapp.herokuapp.comなどのherokuでRailsアプリを実行しています。
ここで、プロキシをからにリバースプロキシしたいmyapp.heroku.com/proxy/
(somewhereelse.com/
つまり、リバースプロキシはmyapp.heroku.com/proxy/stuff
にsomewhereelse.com/stuff
)Herokuで可能ですか?これを達成する方法は?
myapp.herokuapp.comなどのherokuでRailsアプリを実行しています。
ここで、プロキシをからにリバースプロキシしたいmyapp.heroku.com/proxy/
(somewhereelse.com/
つまり、リバースプロキシはmyapp.heroku.com/proxy/stuff
にsomewhereelse.com/stuff
)Herokuで可能ですか?これを達成する方法は?
検索でこの質問にたどり着いた人なら誰でも、これを行うことができます。
https://github.com/ryandotsmith/nginx-buildpackをチェックして、nginx を heroku インスタンスにベンダー化してください。これにより、nginx が Rails アプリの前に配置され、このドメインでプロキシ リクエストをリバースできるようになり、heroku アプリを apex として構成し、somethingelse.com/stuff を別の場所に移動できるようになります。
フロントエンド ルーティング インフラストラクチャにアクセスできないため、nginx ロケーション ベースのリバース プロキシや apache の modproxy などを追加することはできません。私の理解では、dyno 内の 1 つのポート ($PORT) にしかバインドできないため、Rails アプリを独自のベンダー バージョンの nginx でシャドウすることはできません (非 TCP/IP ソケットを介して通信できる場合を除く)。 nginx とあなたの Rack/Rails アプリの場合、おそらく Rack に /tmp/mysocket.git をリッスンさせ、nginx をリバース プロキシにすることができます。 .
これは、Rails アプリでこれを自分で処理する必要がある場合に考えられる唯一のオプションを意味します。私は Rails/Ruby の経験がほんの少ししかありませんが、Rails にプロキシ機能が存在しない場合は、ルートを明示的に受け入れてからhttp クライアントを使用して他の部分を呼び出します。