(请原谅,如果这是张贴在一个不正确的论坛,我们不知道到哪里发布。
我们有一个ASP.NET Web API单页面应用程序 – 一个在IIS中运行的基于浏览器的应用程序,用于提供HTML5 / CSS3 / JavaScript,与ASP.NET Web API端点进行通信,以访问数据库和传输JSON数据。 在我们的开发环境中,所有的工作都很好 – 也就是说,我们有一个带有ASP.NET Web API项目的Visual Studio解决scheme和两个用于数据访问的类库项目。 在开发框上进行开发和testing时,使用IIS Express到localhost:port来运行网站并访问Web API,一切都很好。
现在,我们需要将其转移到生产环境中(而且我们遇到了问题 – 或者只是不了解需要完成的工作)。
生产环境都是内部的(没有什么会暴露在公共的互联网上)。 有两个域。 一个域即企业域是所有用户正常login的地方。 另一个域(进程域)包含我们的应用程序和Web API将需要访问的SQL Server实例。
IT人员希望在这两个域之间放置一个DMZ以容纳IIS应用程序,并且防止企业域用户直接访问进程域。 所以,我猜他们想要的是:
corp域(最终用户)< – >防火墙(打开端口80)< – > DMZ(运行IIS的Web服务器)< – >防火墙(打开端口80或1433 ????)< – >进程域(IIS for Web API和SQL Server)
我们是开发人员,并没有真正理解所有的networking方面,所以我们想知道如何在这种情况下部署我们的浏览器/ Web API应用程序。
我相信还有其他问题,但我们将从这些开始。 谢谢!!!
(注意:服务器是Win2k8 R2,SQL Server 2k8 R2和IIS 7.5。)
我可以理解你的IT团队想要打破这一点,但似乎他们也没有完全理解这个设置是如何工作的。 我不会深究这一点,但实际上,您将与服务器交换process域的唯一stream量是标准的HTTPstream量(假设您正在使用Web API进行REST调用)
基本上你最终会得到以下结果:
Initial Request SPA Web Server ---> Client (Running SPA) | | - REST Call Firewall -> | - Port 80 Only Web API Server | | - SQL (1433) .NET Connection/Data Source Firewall -> | - Port 1433 / 1434 Backend SQL Servers
请记住,对SPA来说,客户端与SPA Web服务器的唯一通信是获取HTML,JS和CSS的初始请求。 之后(取决于你如何编写它)应该直接发送REST调用Web API服务器。
Web API服务器从那里直接发送SQL查询到数据库。
所以它的长短如下:
TL; DR :你应该在你的客户端和你的两个IIS实例(它们可以是同一个服务器btw)之间有一个防火墙来允许/或HTTP和HTTPSstream量。 然后在该Web服务器的另一个接口上,您可以连接到进程域,只允许SQL通信进入(1433和1434)。
希望有所帮助。