我已经工作这件事几天了。
我们的一位客户有一个 3 层服务器计划 - 一个 IIS 服务器、一个应用程序服务器(Asp.Net MVC3 应用程序所在的位置)和数据库服务器。所有服务器都是 Windows Server 2012 R2。应用程序服务器和数据库服务器位于其自己的域中,IIS 服务器位于另一个域中。
IIS 服务器位于 DMZ 上,防火墙将其与应用程序服务器和 SQL 服务器分开。
我可以使用我想要的凭据从应用程序服务器上的 ODBC 连接到 SQL 服务器 DB 实例。
IIS 通过 UNC 共享连接到应用程序。应用程序池使用本地帐户运行。应用程序服务器上有另一个本地帐户,具有相同的用户名和密码。
SQL Server 数据库通过 SQL Server 身份验证连接。
当我连接到网站时,我会看到登录屏幕。当我尝试登录时(当需要使用数据库时),我收到以下错误:
Win32异常:
由于连接方在一段时间后没有正确响应,因此连接尝试失败,或者由于连接的主机没有响应,因此建立的连接失败。
SqlException:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确以及 SQL Server 是否已配置为允许远程连接。
抱歉,我在 VMWare 上工作,无法直接从服务器上复制/粘贴。
我思考正在发生的情况是,IIS 服务器正在本地运行应用程序,并且由于 DMZ 和不同的域,无法看到 DB 服务器。
我需要 IIS 来运行应用程序,以便应用程序可以与数据库通信。我如何才能最好地实现这一点?我可以配置 IIS 使其在应用程序服务器上运行应用程序吗?如果可以,我需要哪些配置设置?
如果您需要更多信息,请直接询问,我会提供。
为了完成这件事,我已经做好了尽可能多的反对票的准备。
编辑:
我可以配置 IIS 将请求转发到内部服务器吗?
答案1
我通过使用应用程序请求路由和 URL 重写设置从 Web 服务器到应用程序服务器的反向代理来解决这个问题。以下 URL 包含我遵循的说明。
http://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis
对于让我困扰太久的问题,这是一个足够简单的解决方案——我在服务器方面没有太多经验,但是当你创业时,你会做你必须做的事情。