IIS 重定向 - 仅使用 HTTP 重定向将主机名重定向到别名

IIS 重定向 - 仅使用 HTTP 重定向将主机名重定向到别名

我在 Active Directory 域中有一个 Windows 2016 服务器 (FQDN:server1.domain)。我在 IIS 中托管内联网 Web 应用程序。

我最近在 DNS 中为该服务器创建了一个别名 (FQDN:CoolName.domain)。TLS 证书由内部证书颁发机构生成。在 IIS 中,我将端口 443 绑定到主机名CoolName.domainCoolName证书。

我希望能够将我现有的应用程序从旧域名(即server1.domain/app1)重定向到别名(即CoolName.domain/app1),只要有人输入旧域名即可。如果他们使用 HTTP,则强制使用 HTTPS。

我尝试在 IIS 管理器中的服务器级别使用 HTTP 重定向模块并填写以下内容:

  1. 将请求重定向到此目的地:https://CoolName.domain

  2. 重定向行为:已检查Redirect all requests to exact destination (instead of relative to destination)

  3. 然后按应用。

我所做的选项的图像参考:https://i.stack.imgur.com/vgPld.jpg

当我访问以下链接时,它们重定向失败:

http://server1

http://CoolName

http://CoolName.domain

http://server1.domain最终仅重定向至https://CoolName.domain

当我尝试重定向任何超出域的 URL(例如)时http://CoolName.domain/app1,它不会重定向。我尝试取消选中将所有请求重定向到确切的目的地(而不是相对于目的地)在#2中。

我的要求是否仅通过 HTTP 重定向就能实现?

答案1

我在最初的帖子中忘记提到我收到了与“HTTP 重定向过多”相关的错误。事实证明,启用 HTTP 重定向并重定向到同一个网站(即使使用不同的别名)将无休止地重定向。显然 IIS 不够智能,无法检测它是否重定向到同一个域。想想吧。我最终按照此处的说明解决了我的问题:https://stackoverflow.com/a/49460688

总结一下:您正在创建一个虚拟网站,并在 IIS 上绑定该网站上的所有端口 80 HTTP 流量,然后您可以重定向到原始 IIS 网站上配置的 HTTPS。具体操作如下:

  1. 默认网站 - 将所有 HTTP 流量绑定到非 80 的空闲端口(或者您可以删除 HTTP 绑定)。保留 HTTPS 绑定。

对于默认网站,将 HTTP 绑定更改为其他端口或将其删除。

  1. 在 IIS (RedirectSite) 中创建一个新的网站:将所有 HTTP 流量绑定到端口 80。

为虚拟站点 RedirectSite 配置到端口 80 的绑定。

  1. 在 DummySite 设置中,单击 HTTP 重定向。选中“将请求重定向到此目标”复选框;在目标 URL 字段中,输入带有 HTTPS 的完整域。例如。https://CoolName.domain。HTTP 代码 301。由于我想重定向与域相关的所有内容,因此无需选中其他框。请确保点击“应用”以保存设置。

步骤 3、配置重定向

  1. 应用设置后,如果您使用的是 Windows 身份验证,请等待几分钟以使更改生效。当我尝试重定向时,我遇到了身份验证错误 (HTTP 40x.x)。在测试链接之前,请清除客户端浏览器上的缓存。

  2. 测试。我最终使用了我最初帖子中的链接:

http://服务器1

http://server1.域名

http://酷名

http://CoolName.domain

这些链接最终应重定向至https://CoolName.domain。

如果适用的话,对于两个网站,附注如下:

  • 确保 IIS_IUSRS 和 IUSR 对网站目录具有读取/执行权限。与 [Server_name]\Users 相同

  • 仔细检查 Windows 身份验证是否配置正确

相关内容