Rails作为过滤反向代理

时间:2011-10-04 01:30:31

标签: ruby-on-rails gem reverse-proxy

我想逐渐将应用程序从旧的Java转换为新的rails应用程序。数据流看起来像

user -> browser -> new rails -> old java

也就是说,新的rails应用程序将作为旧应用程序的反向代理,用户永远不会是原始应用程序的明智者。

随着越来越多的功能迁移到rails应用程序,java应用程序的使用将越来越少。

我熟悉用于从其他应用程序请求资源的Net :: HTTP类,但大多数示例都过于简化,并且不便于转换。一个功能齐全的宝石将能够

  • 处理常见的HTTP谓词
  • 传递并保留cookie
  • 从旧应用程序重写HTML(例如,旧应用程序将具有  href =“/ something / foo.html”,新的应用程序将有  “/newpath/bar.html”)
  • 具有可配置的会话感知功能(将会话ID关联到  带有rails会话的java app,如果删除rails会话,  它可以通过注销回调到java应用程序)

表现不是一个大问题。

指向这样一个宝石的指针?它可能被归类为某种反向代理,中间人,过滤器等

1 个答案:

答案 0 :(得分:0)

我建议不要在Rails本身中这样做,而是直接在你的网络服务器(例如Apache)中进行此操作

我一直致力于将Java网站迁移到Ruby的大型项目,并且为此目的使用了Apache mod_rewrite和mod_proxy。

所以流程是

    user -> browser -> apache -> passenger or Tomcat

在Apache本身使用模块意味着我们不需要使用任何Rails堆栈(以及相关的CPU /内存/线程)。它还允许我们满足您的一项要求,以确保“用户永远不会是原始应用程序的明智者”

会话管理是唯一棘手的部分;我介绍了一个Java和Rails应用程序都可以读取的cookie,并使用cookie的存在来告诉Ruby或Java用户是否已登录。这样,Ruby和Java不需要尝试管理彼此的会话。

希望其中一些证明有用吗?