簡體   English   中英

Rails作為過濾反向代理

[英]Rails as a filtering 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”)
  • 具有可配置的會話意識(將Java應用程序上的sessionID與rails會話相關聯,這樣,如果刪除rails會話,它可以通過注銷回調到Java應用程序)

性能不是大問題。

有任何指向此類寶石的指針嗎? 它可能被歸類為某種反向代理,中間人,過濾器等

我建議不要在Rails本身中執行此操作,而是直接在您的Web服務器(例如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不需要嘗試管理彼此的會話。

希望其中的一些有用嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM