我在 Active Directory 域中有一个 Windows 2016 服务器(FQDN:server1.domain)。我在 IIS 中托管 Intranet Web 应用程序。
我最近为在 DNS 中创建的该服务器获得了一个别名(FQDN:CoolName.domain)。TLS 证书由内部证书颁发机构生成。在 IIS 中,我将端口 443 绑定到主机名CoolName.domain
和CoolName
证书。
我希望能够在人们输入旧域时将我现有的应用程序从旧域(即。 server1.domain/app1
)重定向到别名(即。 )。CoolName.domain/app1
如果他们使用 HTTP,也强制使用 HTTPS。
我的尝试是在 IIS 管理器中的服务器级别使用 HTTP 重定向模块并填写以下内容:
将请求重定向到此目的地:https://CoolName.domain
重定向行为:选中
Redirect all requests to exact destination (instead of relative to destination)
然后按下应用。
我所做的选项的图像参考:https://imgur.com/a/88204vp
当我访问以下链接时,它们无法重定向:
http://server1
http://CoolName
http://CoolName.domain
最终只http://server1.domain
重定向到https://CoolName.domain
.
一旦我尝试重定向任何超出域的 url,比如http://CoolName.domain/app1
,它就不会重定向。我尝试在#2 中取消选中将所有请求重定向到确切目的地(而不是相对于目的地)的复选框。
我的要求是否可以只使用 HTTP 重定向?
我在最初的帖子中没有提到我收到了与“太多 HTTP 重定向”有关的错误。事实证明,启用 HTTP 重定向并重定向到同一网站(即使使用不同的别名)将无休止地重定向。显然 IIS 不够聪明,无法检测它是否重定向到同一域。去搞清楚。我最终按照此处的说明解决了我的问题:https ://stackoverflow.com/a/49460688
总结一下:您正在创建一个虚拟网站,并在 IIS 上绑定该网站上通过的所有端口 80 HTTP 流量,然后您可以重定向到在原始 IIS 网站上配置的 HTTPS。为此:
应用设置后,如果您使用的是 Windows 身份验证,请等待几分钟让更改生效。我在尝试重定向时遇到身份验证错误 (HTTP 40x.x) 问题。在测试链接之前清除客户端浏览器上的缓存。
测试。我最终按照我最初的帖子使用了链接:
http://server1
http://server1.domain
http://酷名
http://CoolName.domain
这些链接应该最终重定向到https ://CoolName.domain。
作为两个网站的旁注(如果适用):
确保 IIS_IUSRS 和 IUSR 对网站目录具有读取/执行权限。与 [Server_name]\Users 相同
仔细检查是否正确配置了 Windows 身份验证