2012-02-03 25 views
1

我有一個在Intranet中工作的兩臺服務器的配置。 第一個是爲瀏覽器生成html頁面的web服務器,這個html發送請求到第二個服務器,根據一些GET參數的值生成並返回報告(也是html)。 由於這個解決方案是不安全的(傳遞的參數是暴露的),我想過讓由第一個服務器生成的html將報告請求發送回第一個服務器,在那裏進行安全檢查,請求報告將在服務器之間使用http發送到報告服務器,而不是從瀏覽器到服務器。
報告的標記將返回到第一個服務器(作爲字符串?),添加到響應對象並呈現在瀏覽器中。 這是http的常見做法嗎?在服務器之間使用http協議

回答

1

是的,這是一種常見的做法。事實上,當你的web服務器需要從數據庫中獲取一些數據時(不公開的 - 例如不在web服務器的DMZ中),它的工作原理是一樣的。

但是你需要能夠使用動態頁面生成(不是靜態的html。假設你的web服務器允許PHP或者java)。

  • 你的頁面做一個HTTP GET(或POST,或任何你喜歡)做你的第二個服務器,發送你需要的任何必需的參數相當。您可以使用捲曲庫,或的fopen(HTTP://)等

  • 它接收到的結果,檢查返回代碼,也可以做optionnal內容操作(如更換一些文字或網址)

  • 它將結果發送回用戶的瀏覽器。

如果你不能(或不會)使用動態頁面生成,你可以配置你的Web服務器來代理一些請求到第二服務器(例如使用Apache的mod_proxy)。

例如,當請求到達服務器1的URL「http:// server1/reports」時,web服務器將請求代理爲「http:// server2/internal/reports?param1 = value1 & param2 = value2 &等「。

用戶將得到的結果的「http://服務器2 /內部/參數1報告=值1 &參數2 =值2 &等」,但絕不會從它從何看(從他的角度來看,他只知道http://server1/reports)。 您可以執行更復雜的操作,將代理與URL重寫相關聯(因此您可以在對server2的請求中使用請求的一些參數到server1)。

如果不夠清楚,不要猶豫,給更多的細節(o/s,web服務器技術,網址等),所以我可以給你更多的提示。

0

另外兩個選項:

  1. 配置面向Internet的HTTP服務器與代理(例如 的mod_proxy在Apache中)
  2. 離開服務器,因爲它是並添加應用程序Firewal