[英]How to design tiers of ASP.NET MVC web application if it is to be hosted in DMZ with no direct access to database (tcp port 1433 blocked by firewall)?
请考虑以下网络安全设置:
Users Internet
|
====Firewall==== Port 80, 443 only
|
Web Server DMZ - ASP.NET MVC + Web API
|
====Firewall==== Port 80, 443 only
|
"App" Server WCF or ASP.NET Web API ??
|
Database Internal network
我已经在许多客户端上看到了上述网络设置。 IT基础结构团队不允许DMZ中的Web服务器通过端口1433建立与内部网络中托管的SQL Server的直接连接。具有讽刺意味的是,我已经看到web.config位于Web服务器上并带有纯文本DB密码,好的
通常,我已经看过并致力于解决方案,其中WCF托管在“ App”服务器上( 可以在HTTP端口上使用 ),如图所示。 WCF成为Web前端与DB交互的唯一方法。 使用WCF的一个“好处”是,它返回易于从ASP.NET MVC前端使用的强类型对象。
问题:
请注意,我们目前无法使用ASP.NET Core。
由于这是一个反复出现的问题,我真的很想听听社区是否有比使用WCF更好的解决方案。
我刚刚完成了一个具有相同问题的系统,数据库访问仅限于App服务器。
我们选择采用的方法是在App Server上托管Mvc前端和Web Api后端。
为了获得通常会克服WCF的强类型,我们选择了一个名为Refit的工具: https : //github.com/paulcbetts/refit 。 它使您可以将具有预配置的url模板的接口转换为可以通过普通DI容器注入的对象,使其非常易于测试,并删除了大量样板HttpClient代码。 这对于WebApi后端确实非常有效。
将IIS反向代理构建到您的DMZ区域,并且您不需要两个单独的服务器(web + app)。 当反向代理将所有相关流量路由到您的Web服务器时,您可以在内部网络中运行它。
Users Internet
|
====Firewall==== Port 80, 443 only
|
IIS Reverse Proxy DMZ
|
====Firewall==== Port 80, 443 only
|
Web Server ASP.NET MVC
|
Database Internal network
我将进行以下设置:
Users Internet
|
====Firewall==== Port 80, 443 only
|
{Proxy/load balancer with URL pattern rules}
| |
http://foo.com/api/... http://foo.com/ui/...
| |
| {static content server}
|
|
====Firewall==== Port 80, 443 only
|
"App" Server ASP.NET Web API
|
Database Internal network
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.