多域名的同一个网站,需要部署https,教你如何只用一个SSL证书即可完成部署,且不提示不安全的连接信息。URL重写(重定向插件IIS Write)的使用与规则设置方法

郑鹏飞3年前爱T464

比如我的网站,我同时申请了两个域名vxmat.cn和vxmat.com,我需要实现

1、两个域名都访问同一个网站;

2、同时支持带www和不带www的访问;

3、必须部署https,当用户以http方式访问时,必须强制重定向到https的域名;

4、一个相同的IP和端口,在IIS中只能部署一个SSL证书,其它的tomcat之类的没部署过,所以不知道是否支持相同的IP和端口可以部署多个SSL证书,如果支持,可以不需要看这篇文章。所以,我只部署了一个vxmat.cn的证书。如果域名与证书不匹配时,用户浏览器一般都会提示image.png

image.png

这样的信息。

那么,有没有办法可以做到不会被提示这样的不安全呢?这也正是这篇文章的目的。如果这篇文章能帮助到您,请您点个赞!谢谢。

我最终做到了以下的访问规则:以下都是在IIS下实现的。

1、当用户以http方式访问时,会被重定向至 https://vxmat.cn/...........

为什么要管理 http 访问?因为大部分的用户,应该是基本上所有的吧,在浏览器上输入网址是,都是直接输入 www...或者是 toutiao.com,一般不会输入http或者是https的,而浏览器默认都会先以 http:// 方式进行访问(可能以后的浏览器会改成默认为https吧),此时,咱们就需要把http的访问强制重向到https上。


2、当用户以https://方式访问  https://vxmat.com   和 https://www.vxmat.com 时,会被分别重定向到  https://vxmat.cn 和 https://www.vxmat.com 。

下面就是在IIS中设置的方法。

在IIS中,有一个插件叫 IIS rewrite的功能插件,这个插件可以在IIS管理控制台上增加一个URL重写的功能。这个功能非常的实用,可以实现很多功能,比如动态功能网站的伪静态也是靠它来实现的。至于什么叫伪静态以及如何实现,需要另起一篇文章才能说的清楚了。

image.png


本站要实现的方法,就是靠它来建立重写或重定向规则后实现的。

安装好URL重写(IIS Rewrite)插件后,有两种方式建立这个规则,先说说以更改web.config来建立的规则

1、先建立一条规则:当用户以不带s的http进行访问时,强制重定向到 https://vxmat.cn 

这条规则基本上都是从网上抄的,抄的时候自己完全弄不清规则的内容是什么意思,但它实现的就是:当访问不是以https开头的时候,就会重定向到 https://vxmat.cn 

<rule name="HTTP to HTTPS" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
	<match url="(.*)" />
	<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
		<add input="{HTTPS}" pattern="off" />
	</conditions>
	<action type="Redirect" url="https://vxmat.cn/{R:1}" redirectType="Found" />
</rule>

在web.config节点

<configuration>

    <system.webServer>

    <rewrite>

      <rules>

下增加上面的代码即可实现。

2、建立第二条规则:当用户以https://方式访问  https://vxmat.com   和 https://www.vxmat.com 时,会被分别重定向到  https://vxmat.cn 和 https://www.vxmat.com :

<rule name="vxmat.com->vxmat.cn" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
	<match url="(.*)" />
	<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
		<add input="{HTTP_HOST}" pattern="(.*)vxmat.com" />
	</conditions>
	<action type="Redirect" url="https://{C:1}vxmat.cn/{R:1}" />
</rule>

同样的,也是在rules节点下增加上面的代码即可实现。

在网上基本上搜不到 

<match url="(.*)" />
<add input="{HTTP_HOST}" pattern="(.*)vxmat.com" />

这个两个节点的意思,给我建立第二条规则时造成了非常多的麻烦,可能很多人在建立规则时,也是被它给弄懵的吧。

<match url="(.*)" />

的意思,根据我配置完成第二条规则后,才知道它的意思,其实是 URL 中的域名之后的第一个/之后的路径信息的匹配。

比如访问的是 http://blog.forbs.cn/9.html ,那么它这个url匹配的只是9.html这一段字符路径信息,而并不是完整的地址。

所以,在我建立的这两个规则中,这里match url="(.*)",即所有的访问都需要匹配。

那么,第1条规则就容易理解了,即所有访问中,如果 <add input="{HTTPS}" ...中的 HTTPS这个信息匹配为off,就表示被第1条规则的条件命中,就会强制重定向到 https://vxmat.cn 上。

第2条同理,就是当匹配了第一个url的规则信息后,如果 域名部分,是 *.vxmat.com的格式或vxmat.com时,就会强制重定向到 相应的 vxmat.cn的域名格式上。

以上,就实现了只有一个SSL证书,也能实现当用户以 https://vxmat.com  访问时,也不会收到浏览器的不安全的提示。


以这种方式实现的域名重定向或重写,好处是不需要在程序代码中实现,从而减少了很多代码上的工作量,以及减少了很多出错的可能。


文章写成后,觉得不太甘心,然后又各种搜了一下,结果发现我确实是弄错了。原来IIS上也是可以支持多域名同一个端口绑定不同的SSL证书的,只是勾选上“需要服务器名称指示”的选项即可。

image.png

我是郑鹏飞。 如果您觉得我的文章对您有帮助,可以点击站点上的 关于站点/支持和帮助
转载请注明 : 文章转载自不了阁-飞哥 blog.forbs.cn
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载请务必注明出处,尊重他人劳动成果共创和谐网络环境。

相关文章

今天2022.8.6微信小程突然莫名其妙的出现了访问服务端接口时一直返回500错误

今天2022.8.6微信小程突然莫名其妙的出现了访问服务端接口时一直返回500错误

非常确定的是,地址是绝对能够访问的。而且接口运行在本地也没问题。反复检查了小程序的合法域名也都是正常的。这莫名奇妙的。。。原来是前些天设置目录NTFS权限时弄出了乌龙,导致IIS应用程序无法访问到目录...

安全的Windows 3389远程连接维护服务器,我是如何做到的?-引言

安全的Windows 3389远程连接维护服务器,我是如何做到的?-引言

我想要实现:(个人觉得最完美的远程维护服务器的实现)      除了我之外,其它人都无法向我的远程维护端口发起TCP/UDP连接。     ...

警惕!警告全网!你的、我的、所有人的网络,都不安全!

警惕!警告全网!你的、我的、所有人的网络,都不安全!

注意:我这里所说的被监听,并不是指国家的安全部门的监听。而是指被非法份子监听。我也不是危言耸听,也不是标题党,也不会到处复制粘贴那些自己都看不懂的信息。我的文章里所说的任何信息都是经过我自己亲自验证的...

可能是国内唯一的、真正国产的、最良心的SSH工具,没有之一。

可能是国内唯一的、真正国产的、最良心的SSH工具,没有之一。

VxTerm的介绍以及下载地址VxTerm,是一款全部由国人实现的、并且是仅有一个文件纯绿色不需要安装绝对安全的多窗口多会话多线程的SSH工具。...

C/S架构的程序中,客户端环境不安装MYSQL、ORACLE等数据库的连接组件的情况下向目标数据库查询数据集

C/S架构的程序中,客户端环境不安装MYSQL、ORACLE等数据库的连接组件的情况下向目标数据库查询数据集

我有一个C/S架构的程序,服务端是MSSQL数据库。现在需要在C客户端中查询MYSQL、ORACLE的数据集,在C客户端中进行展示,做得到吗?1、C客户端的环境不需要安装MYSQL、ORACLE的客户...

wsl中每个linux的根目录位置,直接从Windows里访问,直接拷贝文件

wsl中每个linux的根目录位置,直接从Windows里访问,直接拷贝文件

wsl的主系统目录在\\wsl.localhost\,或者是打开我的电脑,向上到桌面,就可以看到。直接在桌面上好像看不到Linux这个系统目录。打开成功后,可以看到每一个已安装的linux子系统的名字...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。