2011-06-27 99 views
1

我需要編寫一個cgi頁面,它將充當用戶和另一個頁面(mbean)之間的反向代理。問題是每個mbean使用不同的端口,並且我不知道哪個端口用戶會想要點擊。
因此,我需要做的是以下內容: 答)給用戶一個頁面,允許他選擇他想要點擊哪個應用程序 B)根據上面的信息產生一個反向代理服務器(這給了我端口,服務器等..) C)用戶通過反向代理連接到遠程mbean頁面,因此從不「離開」原始頁面。
C的原因是用戶沒有直接訪問任何內部應用程序只能訪問初始端口80.python反向代理通過CGI產生

我看着扭曲,它看起來像它可以做的工作。我不知道的是如何從cgi中產生扭曲的進程,以便它可以建立連接並在反向代理框架內保持進一步的連接。

順便說一句,我沒有結婚扭曲,如果有另一種工具可以更好地完成這項工作,我耳熟能詳。我不能做類似mod_proxy的事情(例如),因爲各種各樣的端口會使配置變得非常愚蠢(大約有1000種不同的代理設置)。

+0

有什麼理由讓你更喜歡你的前端使用CGI,而不是使它長壽命的過程?你可能會扭曲或WSGI應用程序直接位於你的http服務器後面,並處理調度和代理。 –

+0

不幸的是,問題在於我不知道反向代理將偵聽什麼端口。否則,我可以很容易地有一個後臺進程。因此,當用戶點擊一個按鈕時,我需要產生一些東西。那有意義嗎? – Chrobry

回答

2

你不需要產生另一個進程,這會使事情複雜化很多。以下是我如何根據當前項目中的類似內容執行此操作:

  • 創建WSGI應用程序,它可以位於Web服務器後面。
  • 只要用戶沒有會話ID cookie,就可以創建可從任何URL映射訪問的請求處理程序(或「視圖」)。
  • 在請求處理程序中,用戶可以選擇目標應用程序並使用它,主機名,端口號等。此請求處理程序創建與目標應用程序的連接,例如使用httplib併爲其分配會話ID。它設置會話ID cookie並將用戶重定向回同一頁面。
  • 現在,當用戶點擊應用程序時,可以使用已打開的http連接重定向查詢。請注意,WSGI支持傳回一個打開的文件類對象作爲響應,包括由httplib提供的對象,以提高性能。
+0

從來沒有做過WSGI,但聽起來可行謝謝你!將嘗試看看它是如何工作的。 – Chrobry

+0

不客氣。看一下Werkzeug(WSGI工具包)或Flask(在Werkzeug之上構建的小型Web框架),這會讓你快速入門。 –