2012-07-06 29 views
6

我有一個rails應用程序運行在heroku上,例如myapp.herokuapp.com。添加反向代理到heroku

現在我想從myapp.heroku.com/proxy/反向代理somewhereelse.com/(即:myapp.heroku.com/proxy/stuff反向proxifed到somewhereelse.com/stuff) 這有可能在Heroku?如何實現這一目標?

回答

6

對於任何人通過搜索來到這個問題,這可以做到。

請將供應商nginx的https://github.com/ryandotsmith/nginx-buildpack簽出到您的heroku實例中。這會將nginx放置在您的rails應用程序前面,並允許您在此域上反轉代理請求,並將您的heroku應用程序配置爲頂點並允許somewhereelse.com/stuff轉到其他地方。

+0

謝謝。非常酷的方式來使用heroku。 – 2015-01-12 16:53:02

0

你沒有訪問前端路由基礎設施,所以它不可能添加像基於nginx位置的反向代理或Apache的modproxy。從我的理解中,你也只能綁定到dyno中的一個端口($ PORT),所以它不可能使用你自己的nginx版本來映射你的Rails應用程序(除非可以通過非TCP/IP套接字進行通信nginx和你的rack/rails應用程序,如果是這種情況,那麼也許你可以得到機架來聽取/tmp/mysocket.git和nginx來反向代理,雖然這可能不是首發,但我只是拋出想法) 。

這意味着唯一可能的選擇,如果你必須在你的rails應用程序中自己處理這個問題,我只有一點點的rails/ruby​​體驗,但是如果在rails中沒有代理功能,那麼你也許可以明確地接受然後使用http客戶端來調用其他部分。