我配置了两个在intranet中工作的服务器。第一个是一个web服务器,它向浏览器生成html页面,这个html向第二个服务器发送请求,第二个服务根据一些GET参数的值生成并返回报告(也是html)。由于这个解决方案是不安全的(传递的参数是公开的),我考虑让html(由第一台服务器生成)将报告请求发送回第一台服务器,在那里,将进行安全检查,并使用服务器之间的http将报告请求发送到报告服务器,而不是从浏览器发送到服务器
报告的标记将返回到第一个服务器(作为字符串?),添加到响应对象并显示在浏览器中。这是http的常见做法吗?
是的,这是一种常见的做法。事实上,当你的网络服务器需要从数据库中获取一些数据时,它的工作原理是一样的(不公开,例如不在网络服务器DMZ中)。
但您需要能够使用动态页面生成(而不是静态html。假设您的Web服务器允许PHP或java)。
-
您的页面执行的操作相当于HTTPGET(或POST,或您喜欢的任何操作)执行第二个服务器,发送您需要的任何必需参数。您可以使用cURL库或fopen(http://)等
-
它接收结果,检查返回代码,还可以进行可选的内容操作(如替换一些文本或URL)
-
它将结果发送回用户的浏览器。
如果您不能(或不会)使用动态页面生成,您可以配置Web服务器将一些请求代理到第二台服务器(例如,使用Apache的mod_proxy)。
例如,当服务器1收到URL"http://server1/reports",Web服务器将请求代理到"http://server2/internal/reports?param1=value1¶m2=value2&等等"。
用户将获得"http://server2/internal/reports?param1=value1¶m2=value2&等等",但永远看不到它从哪里来(从他的角度来看,他只知道http://server1/reports)。您可以执行更复杂的操作,将代理与URL重写关联起来(因此,您可以在对服务器2的请求中使用对服务器1的请求的一些参数)。
如果还不够清楚,请毫不犹豫地提供更多细节(o/s、Web服务器技术、URL等),这样我就可以给你更多提示。
另外两个选项:
- 使用代理配置面向Internet的HTTP服务器(例如。Apache中的mod_proxy)
- 保持服务器原样,然后添加应用程序防火墙