使用 IIS 将 WCF 服务从一台服务器路由到另一台服务器

Posted

技术标签:

【中文标题】使用 IIS 将 WCF 服务从一台服务器路由到另一台服务器【英文标题】:Routing WCF service from one server to another server using IIS 【发布时间】:2021-03-05 20:11:41 【问题描述】:

我在我们的一台 Windows 2019 服务器上的 IIS 上托管了 WCF 服务,它工作正常。现在根据我们的新架构,我们不应该将此服务直接暴露给外部。就像任何用户试图从外部(通过互联网)访问我的 WCF 服务一样,它不应该直接访问我的服务器以获取响应,而是请求应该首先到达 DMZ 区域 Windows 服务器,然后我需要从这个 DMZ 服务器路由到我们的实际托管我的 wcf 服务的 Windows 服务器。

为了实现这一点,我尝试在我的 DMZ 服务器上使用 IIS URL 重写。如果请求来自外部,它将首先访问 DMZ 服务器 IIS,然后我使用 URL 重写将服务路由到托管服务的实际服务器。但是这种方法不起作用我收到 404 和 502 错误。下面是入站规则截图。

如何实现从一台 windows 服务器到另一台 windows 服务器的 WCF 服务路由?

【问题讨论】:

您是否尝试将请求从 HTTP 路由到 https?在 iis 中启用失败的请求跟踪,并在删除敏感信息后提供日志。确保在 iis 中安装应用程序请求路由功能。 docs.microsoft.com/en-us/iis/troubleshoot/… 【参考方案1】:

1)安装应用请求路由功能。

2)打开iis->应用请求路由->服务器代理设置->启用代理

3)在web.config文件中添加如下代码:

<system.serviceModel>
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
 </system.serviceModel>

4)打开iis,选择站点(有公共绑定)

5)双击URL重写。

6)使用从右侧操作窗格中打开的“添加规则...”模板,创建一个新的反向代理规则。

7) 在反向代理模板中添加内部服务器或站点 IP 或服务器名称。

您可以选择是否执行 SSL 卸载。如果您选中此选项,则无论原始 Web 请求如何,对内部服务器的所有请求都将通过 HTTP。如果所有请求都在受信任的网络中,这有助于提高性能和 SSL 绑定。如果两个 Web 服务器之间的网络路径不完全受信任且不安全,请取消选中此项。

接下来,启用出站规则。您可以为出站规则输入您的友好公共 URL。

点击确定保存规则。

您可以参考以下链接了解更多详情:

https://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis

WCF using Reverse proxy

【讨论】:

非常感谢您的回复。我正在尝试将请求从 https 路由到 https。进行这种路由是否可行/可能?我以与文章中提到的相同方式感到疲倦(weblogs.asp.net/owscott/…),但我收到 HTTP 错误 502.3 - 网关错误。 以上是我添加反向代理规则后的DMZ服务器网站配置文件。如有错误,请检查并纠正我。

以上是关于使用 IIS 将 WCF 服务从一台服务器路由到另一台服务器的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 中托管 WCF 服务时如何避免 CommunicationObjectFaultedException?

如何将网站从一台服务器迁移到另一台服务器

如何将弹性数据从一台服务器传输到另一台服务器

如何使用 Python SFTP/Paramiko 将 zip 文件从一台服务器传输到另一台服务器

使用 p4 zip 和 unzip 将文件从一台 perforce 服务器导出到另一台

按计划将SQL Server数据从一台服务器复制到另一台服务器