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

郑鹏飞3年前爱T274

比如我的网站,我同时申请了两个域名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
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载请务必注明出处,尊重他人劳动成果共创和谐网络环境。

相关文章

可能这就是C#比不上别的语言流行的其中的一个原因:.net的各种版本不兼容,高版本竟然也不向低版本兼容!这太扯蛋了!

可能这就是C#比不上别的语言流行的其中的一个原因:.net的各种版本不兼容,高版本竟然也不向低版本兼容!这太扯蛋了!

我的VxTerm更新到2.4的时候,手贱,就把.net降到了3.5,想着会不会可以在Win7、Win10默认情况下可以直接运行。结果它娘的,竟然是不行的!虽然,可以通过在程序目录下建立VxTerm.e...

如何使用VxTerm进行网络设备登录管理

如何使用VxTerm进行网络设备登录管理

咱们一般做设备,如安全设备、路由网关、交换机、服务器等运维管理时,一般都需要用到一个叫做SSH工具、Telnet工具的,下载一个VxTerm,就可以实现。软件地址:https://download.c...

一是真懒了,二是真以为理所当然,所以就闹了个小乌龙!-记之前配置多域名多张SSL证书配置不成功

一是真懒了,二是真以为理所当然,所以就闹了个小乌龙!-记之前配置多域名多张SSL证书配置不成功

在配置本站的时候,也不知道是哪里没配置对,导致无法成功的在blog.forbs.cn:443端口上配置SSL证书,因为会提示冲突之类的,然后也确实有搜到文章说SSL证书是认端口的,所以就理所当然的就认...

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

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

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

同一个服务器一个IP部署多个带SSL证书的域名,访问时不需要输入端口的方法

同一个服务器一个IP部署多个带SSL证书的域名,访问时不需要输入端口的方法

同一台服务器,一个IP地址,多个域名,可以部署在同一台服务器上,并且是可以部署多张SSL证书的,只是SSL证书会认端口,所以,443端口就只能部署一张SSL证书,其它的域名怎么办呢?好办,就是要部署在...

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

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

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

发表评论    

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