在服务器之间使用http协议

时间:2012-02-03 07:43:45

标签: security http protocols intranet

我在Intranet中配置了两台服务器。 第一个是向浏览器生成html页面的Web服务器,这个html向第二个服务器发送请求,第二个服务器根据一些GET参数的值生成并返回报告(也是html)。 由于此解决方案是不安全的(传递的参数被暴露)我想到让html(由第一个服务器生成)将报告请求发送回第一个服务器,在那里,将进行安全检查,并且请求报告将使用服务器之间的http发送到报告服务器,而不是从浏览器发送到服务器 报告的标记将返回到第一个服务器(作为字符串?),添加到响应对象并显示在浏览器中。 这是http的常见做法吗?

2 个答案:

答案 0 :(得分:1)

是的,这是一种常见做法。实际上,当您的Web服务器需要从数据库中获取某些数据时(例如,不是在公共网络服务器DMZ中),它的工作方式相同。

但是你需要能够使用动态页面生成(而不是静态html。假设你的web服务器允许使用PHP或java)。

  • 您的页面执行相当于HTTP GET(或POST,或任何您喜欢的)的第二台服务器,发送您需要的任何所需参数。您可以使用cURL库,也可以使用fopen(http://)等

  • 它收到结果,检查返回码,也可以做optionnal内容操作(比如替换一些文本或URL)

  • 将结果发回用户的浏览器。

如果您不能(或不会)使用动态页面生成,您可以将您的Web服务器配置为将某些请求代理到第二台服务器(例如使用Apache的mod_proxy)。

例如,当请求到达服务器1以获取URL“http:// server1 / reports”时,网络服务器将请求代理到“http:// server2 / internal / reports?param1 = value1& param2 = value2&等”。

用户将获得“http:// server2 / internal / reports?param1 = value1& param2 = value2& etc”的结果,但永远不会看到它的来源(从他的角度来看,他只知道http://server1/reports)。 您可以执行更多复杂的操作,将代理与URL重写相关联(因此您可以在对server2的请求中使用对server1的请求的某些参数)。

如果不够清楚,请不要犹豫,提供更多细节(o / s,网络服务器技术,网址等),以便我给你更多提示。

答案 1 :(得分:0)

另外两个选项:

  1. 使用代理配置面向HTTP的服务器(例如 Apache中的mod_proxy)
  2. 保持服务器不变并添加Application Firewal